Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Tic Tac Toe Game v.1 -- Only works on windows
- #include <iostream>
- #include <stdlib.h>
- using namespace std;
- char matrix[3][3] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}};
- char player = 'X';
- string error_message = "This square has already been taken. Try again!";
- int break_out_of_while = 0;
- char winner_x = 'X';
- char winner_o = 'O';
- char winner;
- int check_draw;
- int breaking;
- void draw()
- {
- for(int x = 0; x < 3; x++)
- {
- for(int z = 0; z < 3; z++)
- {
- cout << matrix[x][z] << " ";
- }
- cout << endl << endl;
- }
- }
- void input()
- {
- char inputted_character;
- if(player == 'X')
- {
- cout << "Player X's turn to choose a square: ";
- }
- else
- cout << "Player O's turn to choose a square: ";
- cin >> inputted_character;
- int z;
- if(inputted_character >= '1' && inputted_character <= '9')
- {
- z = inputted_character - '1';
- if(inputted_character >= '1' && inputted_character <= '3')
- {
- if(matrix[0][z] != 'X' && matrix[0][z] != 'O')
- matrix[0][z] = player;
- else
- cout << error_message << endl << endl;
- }
- else if(inputted_character >= '4' && inputted_character <= '6')
- {
- if(matrix[1][z - 3] != 'X' && matrix[1][z - 3] != 'O')
- matrix[1][z - 3] = player;
- else
- cout << error_message << endl << endl;
- }
- else if(inputted_character >= '7' && inputted_character <= '9')
- {
- if(matrix[2][z - 6] != 'X' && matrix[2][z - 6] != 'O')
- matrix[2][z - 6] = player;
- else
- cout << error_message << endl << endl;
- }
- }
- }
- void togglePlayer()
- {
- if(player == 'X')
- player = 'O';
- else
- player = 'X';
- }
- void checkWin()
- {
- int counter = 0;
- breaking = 0;
- int x;
- int z;
- while(breaking == 0) //Completely unnecessary while-loop
- { //Start of While-Loop
- //Scan horizontals for X
- for(x = 0; x < 3; x++)
- {
- for(z = 0; z < 3; z++)
- {
- if(matrix[x][z] == 'X')
- counter++;
- else
- ;
- }
- if(counter == 3)
- {
- breaking = 1;
- break_out_of_while = 1;
- winner = winner_x;
- }
- counter = 0;
- }
- //Scan horizontals for O
- for(x = 0; x < 3; x++)
- {
- for(z = 0; z < 3; z++)
- {
- if(matrix[x][z] == 'O')
- counter++;
- else
- ;
- }
- if(counter == 3)
- {
- breaking = 1;
- break_out_of_while = 1;
- winner = winner_o;
- }
- counter = 0;
- }
- //Scan verticles for X
- for(x = 0; x < 3; x++)
- {
- for(z = 0; z < 3; z++)
- {
- if(matrix[z][x] == 'X')
- counter++;
- else
- ;
- }
- if(counter == 3)
- {
- breaking = 1;
- break_out_of_while = 1;
- winner = winner_x;
- }
- counter = 0;
- }
- //Scan verticles for O
- for(x = 0; x < 3; x++)
- {
- for(z = 0; z < 3; z++)
- {
- if(matrix[z][x] == 'O')
- counter++;
- else
- ;
- }
- if(counter == 3)
- {
- breaking = 1;
- break_out_of_while = 1;
- winner = winner_o;
- }
- counter = 0;
- }
- //Scan diagonals for X
- if(matrix[0][0] == 'X' && matrix[1][1] == 'X' && matrix[2][2] == 'X')
- {
- breaking = 1;
- break_out_of_while = 1;
- winner = winner_x;
- }
- else if(matrix[0][2] == 'X' && matrix[1][1] == 'X' && matrix[2][0] == 'X')
- {
- breaking = 1;
- break_out_of_while = 1;
- winner = winner_x;
- }
- //Scan diagonals for O
- if(matrix[0][0] == 'O' && matrix[1][1] == 'O' && matrix[2][2] == 'O')
- {
- breaking = 1;
- break_out_of_while = 1;
- winner = winner_o;
- }
- else if(matrix[0][2] == 'O' && matrix[1][1] == 'O' && matrix[2][0] == 'O')
- {
- breaking = 1;
- break_out_of_while = 1;
- winner = winner_o;
- }
- if(breaking == 0)
- {
- for(x = 0; x < 3; x++)
- {
- for(z = 0; z < 3; z++)
- {
- if(matrix[x][z] == 'X' || matrix[x][z] == 'O')
- counter++;
- }
- }
- if(counter == 9)
- {
- check_draw = 1;
- break_out_of_while = 1;
- }
- }
- counter = 0;
- break; //If no win is detected the loop is just broken out of
- } //End of While-Loop
- }
- int main()
- {
- while(1)
- {
- checkWin();
- if(break_out_of_while == 1)
- {
- break;
- }
- else
- {
- ;
- }
- draw();
- input();
- togglePlayer();
- system("cls");
- }
- draw();
- if(check_draw == 1)
- {
- cout << "Draw!" << endl;
- }
- else if(breaking == 1)
- {
- cout << "Player " << winner << " won the game!" << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement