Below is my attempt at a 2 player Tic Tac Toe game. It’s fairly simple, but very neatly done. I’m currently working on an AI to incorporate into the program as an option for single players. I will be sure to post when finished! Heres some output:
// // main.cpp // Tic Tac Toe // // Created by Aidan Takami on 3/8/18. // Copyright © 2018 Aidan Takami. All rights reserved. // #include using namespace std; //Array to represent the spots on the board char spot[10] = {'o','1','2','3','4','5','6','7','8','9'}; int ifWon(); void board(); void clearBoard(); //Main method int main() { cout << "\n\n\tTic Tac Toe\n\n"; start: int player = 1,i = -1,choice; char side, playOn; //Game loop, which will continue while no player has won while(i==-1){ //Draws the board board(); //Deciphers which players turn it is, using the modulus operator player=(player%2)?1:2; //Intro text & takes players move cout << "Player " << player << ", enter a number: "; cin >> choice; //Decides the team that the current player is on (X's or O's) side=(player == 1) ? 'X' : 'O'; //Will take the player's move and mark the correct box (if unoccupied) with the correct side if (choice == 1 && spot[1] == '1') spot[1] = side; else if (choice == 2 && spot[2] == '2') spot[2] = side; else if (choice == 3 && spot[3] == '3') spot[3] = side; else if (choice == 4 && spot[4] == '4') spot[4] = side; else if (choice == 5 && spot[5] == '5') spot[5] = side; else if (choice == 6 && spot[6] == '6') spot[6] = side; else if (choice == 7 && spot[7] == '7') spot[7] = side; else if (choice == 8 && spot[8] == '8') spot[8] = side; else if (choice == 9 && spot[9] == '9') spot[9] = side; //If selected box is occupied else { cout<<"Invalid move "; //gives the same player another turn player--; cin.ignore(); cin.get(); } //determines if the board contains a win or draw. i=ifWon(); //Continues the play process player++; } //If a player won, draws the board and announces who won board(); if(i==1) cout<<"Player "<<--player<<" wins! "; //If draw, announces a draw else cout<<"==>\aGame draw"; //Gives players an option to play again cout << "Would you like to play again? (y/n)" << endl; cin >> playOn; if(playOn == 'y' || playOn == 'Y' ){ clearBoard(); goto start; } else return 0; } //function that returns the result of the game int ifWon() { //Game was won if (spot[1] == spot[2] && spot[2] == spot[3]) return 1; else if (spot[4] == spot[5] && spot[5] == spot[6]) return 1; else if (spot[7] == spot[8] && spot[8] == spot[9]) return 1; else if (spot[1] == spot[4] && spot[4] == spot[7]) return 1; else if (spot[2] == spot[5] && spot[5] == spot[8]) return 1; else if (spot[3] == spot[6] && spot[6] == spot[9]) return 1; else if (spot[1] == spot[5] && spot[5] == spot[9]) return 1; else if (spot[3] == spot[5] && spot[5] == spot[7]) return 1; //Game was a draw else if (spot[1] != '1' && spot[2] != '2' && spot[3] != '3' && spot[4] != '4' && spot[5] != '5' && spot[6] != '6' && spot[7] != '7' && spot[8] != '8' && spot[9] != '9') return 0; //Game still in progress else return -1; } //Function that draws the board void board() { cout << endl << endl << endl; //Prints each box of the board with the contents of the array properly alligned cout << "Player 1 (X) - Player 2 (O)" << endl << endl << endl; cout << " | | " << endl; cout << " " << spot[1] << " | " << spot[2] << " | " << spot[3] << endl; cout << "_____|_____|_____" << endl; cout << " | | " << endl; cout << " " << spot[4] << " | " << spot[5] << " | " << spot[6] << endl; cout << "_____|_____|_____" << endl; cout << " | | " << endl; cout << " " << spot[7] << " | " << spot[8] << " | " << spot[9] << endl; cout << " | | " << endl << endl; } //Method to clear the board & reset all values void clearBoard(){ spot[1] = '1'; spot[2] = '2'; spot[3] = '3'; spot[4] = '4'; spot[5] = '5'; spot[6] = '6'; spot[7] = '7'; spot[8] = '8'; spot[9] = '9'; }
2 thoughts on “Game Sample: Tic Tac Toe”