Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class TicTacToe {
- public:
- TicTacToe() { }
- ~TicTacToe() {}
- int playerWins;
- bool isDraw;
- void draw_board(char board[])
- {
- cout << board[0] << " " << board[1] << " " << board[2] << endl;
- cout << "-+-+-" << endl;
- cout << board[3] << " " << board[4] << " " << board[5] << endl;
- cout << "-+-+-" << endl;
- cout << board[6] << " " << board[7] << " " << board[8] << endl;
- }
- void clearScreen(){
- for (int i = 0; i < 50; i++)
- cout << endl;
- }
- bool isGameOver(char board[])
- {
- if (board[0] == 'X' && board[1] == 'X' && board[2] == 'X' || board[0] == 'X' && board[3] == 'X' && board[6] == 'X' || board[3] == 'X' && board[4] == 'X' && board[5] == 'X'
- || board[6] == 'X' && board[7] == 'X' && board[8] == 'X' || board[1] == 'X' && board[4] == 'X' && board[7] == 'X' || board[2] == 'X' && board[5] == 'X' && board[8] == 'X'
- || board[0] == 'X' && board[4] == 'X' && board[8] == 'X' || board[2] == 'X' && board[4] == 'X' && board[6] == 'X') {
- this->playerWins = 1;
- return true;
- }
- else if (board[0] == 'O' && board[1] == 'O' && board[2] == 'O' || board[0] == 'O' && board[3] == 'O' && board[6] == 'O' || board[3] == 'O' && board[4] == 'X' && board[5] == 'O'
- || board[6] == 'O' && board[7] == 'O' && board[8] == 'O' || board[1] == 'O' && board[4] == 'O' && board[7] == 'O' || board[2] == 'O' && board[5] == 'X' && board[8] == 'O'
- || board[0] == 'O' && board[4] == 'O' && board[8] == 'O' || board[2] == 'O' && board[4] == 'O' && board[6] == 'O') {
- this->playerWins = 2;
- return true;
- }
- else {
- isDraw = true;
- }
- return false;
- }
- };
- int main() {
- TicTacToe classhandler;
- int playerTurn = 1;
- char playerMark, choice;
- char board[] = { '1', '2', '3', '4', '5', '6', '7', '8', '9' };
- do {
- classhandler.clearScreen();
- classhandler.draw_board(board);
- if (playerTurn == 1)
- {
- playerMark = 'X';
- }
- else if (playerTurn == 2)
- {
- playerMark = 'O';
- }
- cout << "Player " << playerTurn << ": ";
- cin >> choice;
- switch (choice)
- {
- case '1':
- if (playerTurn == 1)
- {
- board[0] = playerMark;
- playerTurn = 2;
- }
- else if (playerTurn == 2)
- {
- board[0] = playerMark;
- playerTurn = 1;
- }
- break;
- case '2':
- if (playerTurn == 1)
- {
- board[1] = playerMark;
- playerTurn = 2;
- }
- else if (playerTurn == 2)
- {
- board[1] = playerMark;
- playerTurn = 1;
- }
- break;
- case '3':
- if (playerTurn == 1)
- {
- board[2] = playerMark;
- playerTurn = 2;
- }
- else if (playerTurn == 2)
- {
- board[2] = playerMark;
- playerTurn = 1;
- }
- break;
- case '4':
- if (playerTurn == 1)
- {
- board[3] = playerMark;
- playerTurn = 2;
- }
- else if (playerTurn == 2)
- {
- board[3] = playerMark;
- playerTurn = 1;
- }
- break;
- case '5':
- if (playerTurn == 1)
- {
- board[4] = playerMark;
- playerTurn = 2;
- }
- else if (playerTurn == 2)
- {
- board[4] = playerMark;
- playerTurn = 1;
- }
- break;
- case '6':
- if (playerTurn == 1)
- {
- board[5] = playerMark;
- playerTurn = 2;
- }
- else if (playerTurn == 2)
- {
- board[5] = playerMark;
- playerTurn = 1;
- }
- break;
- case '7':
- if (playerTurn == 1)
- {
- board[6] = playerMark;
- playerTurn = 2;
- }
- else if (playerTurn == 2)
- {
- board[6] = playerMark;
- playerTurn = 1;
- }
- break;
- case '8':
- if (playerTurn == 1)
- {
- board[7] = playerMark;
- playerTurn = 2;
- }
- else if (playerTurn == 2)
- {
- board[7] = playerMark;
- playerTurn = 1;
- }
- break;
- case '9':
- if (playerTurn == 1)
- {
- board[8] = playerMark;
- playerTurn = 2;
- }
- else if (playerTurn == 2)
- {
- board[8] = playerMark;
- playerTurn = 1;
- }
- break;
- default:
- break;
- }
- } while (!classhandler.isGameOver(board));
- classhandler.clearScreen();
- classhandler.draw_board(board);
- if (classhandler.playerWins = 1)
- {
- cout << "Game Over! Player One Wins!" << endl;
- }
- else if (classhandler.playerWins = 2)
- {
- cout << "Game Over! Player Two Wins!" << endl;
- }
- else {
- cout << "Game Over! Its a draw!" << endl;
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement