Created
June 12, 2023 18:15
-
-
Save wdsrocha/7dd1a191870a075edf733cd8cd7b449b to your computer and use it in GitHub Desktop.
Joguinho que fiz em 2015 quando estava aprendendo a programar
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <stdlib.h> | |
#include <time.h> | |
#include <windows.h> | |
using namespace std; | |
int game_mode, p1, p2, cpu = 0; | |
char opcao, nome1[50], nome2[50], ttt[3][3] = {{'_','_','_'},{'_','_','_'},{' ',' ',' '}}; // ttt = tic tac toe | |
bool game_over, restart = true, invalid = false; | |
char anim[19]={'J','O','G','O',' ','D','A',' ','V','E','L','H','A',' ','2','0','0','0',' '}; | |
void fancy_menu() | |
{ | |
cout << endl << " "; | |
for (int i = 0; i < 19; i++) | |
{ | |
Sleep(50); | |
cout << "/"; | |
Sleep(50); | |
cout << "\b-"; | |
Sleep(50); | |
cout << "\b\\"; | |
Sleep(50); | |
cout << "\b|"; | |
Sleep(50); | |
cout << "\b" << anim[i]; | |
} | |
Sleep(150); | |
cout << "--"; | |
Sleep(150); | |
cout << " Criado por WesleySR\n"; | |
Sleep(150); | |
cout << "\n 1. Jogador VS CPU"; | |
Sleep(150); | |
cout << "\n 2. Jogador VS Jogador"; | |
Sleep(150); | |
cout << "\n 3. Sair"; | |
Sleep(150); | |
} | |
void jogar_novamente() | |
{ | |
cout << "\n Jogar novamente(S/N)? ( )\b\b"; | |
cin >> opcao; | |
if (opcao == 'N' || opcao == 'n') | |
restart = false; | |
else if (opcao == 'S' || opcao == 's') //Restarting the array | |
{ | |
restart = true; | |
ttt[0][0] = '_'; | |
ttt[0][1] = '_'; | |
ttt[0][2] = '_'; | |
ttt[1][0] = '_'; | |
ttt[1][1] = '_'; | |
ttt[1][2] = '_'; | |
ttt[2][0] = ' '; | |
ttt[2][1] = ' '; | |
ttt[2][2] = ' '; | |
} | |
else //Repeating the question in case of wrong input by user | |
{ | |
system("CLS"); | |
jogar_novamente(); | |
} | |
} | |
int main() | |
{ | |
srand(time(0));//True random value | |
fancy_menu(); | |
while (restart == true)//Repeating menu | |
{ | |
system("CLS"); | |
cout << "\n JOGO DA VELHA 2000 -- Criado por WesleySR\n"; | |
cout << "\n 1. Jogador VS CPU" | |
<< "\n 2. Jogador VS Jogador" | |
<< "\n 3. Sair" | |
<< "\n\n O que deseja fazer? "; | |
cin >> game_mode; | |
system("CLS"); | |
switch (game_mode) | |
{ | |
case 1: | |
{ | |
cout << "\n Nome do jogador: "; | |
cin >> nome1; | |
system("CLS"); | |
cout << endl; | |
cout << " 7|8|9" << endl; | |
cout << " 4|5|6" << endl; | |
cout << " 1|2|3" << endl; | |
while (true) | |
{ | |
for (int c = 0; c < 1; c++)//This will run only once if there are no problems ahead | |
{ | |
game_over = false; | |
cout << endl << " " << nome1 << ": "; | |
cin >> p1; | |
switch (p1) | |
{ | |
case 7: | |
if (ttt[0][0] == 'O' || ttt[0][0] == 'X') {c--; break;}//Stops player for inputing a repeated value | |
ttt[0][0] = 'X'; | |
break; | |
case 8: | |
if (ttt[0][1] == 'O' || ttt[0][1] == 'X') {c--; break;} | |
ttt[0][1] = 'X'; | |
break; | |
case 9: | |
if (ttt[0][2] == 'O' || ttt[0][2] == 'X') {c--; break;} | |
ttt[0][2] = 'X'; | |
break; | |
case 4: | |
if (ttt[1][0] == 'O' || ttt[1][0] == 'X') {c--; break;} | |
ttt[1][0] = 'X'; | |
break; | |
case 5: | |
if (ttt[1][1] == 'O' || ttt[1][1] == 'X') {c--; break;} | |
ttt[1][1] = 'X'; | |
break; | |
case 6: | |
if (ttt[1][2] == 'O' || ttt[1][2] == 'X') {c--; break;} | |
ttt[1][2] = 'X'; | |
break; | |
case 1: | |
if (ttt[2][0] == 'O' || ttt[2][0] == 'X') {c--; break;} | |
ttt[2][0] = 'X'; | |
break; | |
case 2: | |
if (ttt[2][1] == 'O' || ttt[2][1] == 'X') {c--; break;} | |
ttt[2][1] = 'X'; | |
break; | |
case 3: | |
if (ttt[2][2] == 'O') {c--; break;} | |
ttt[2][2] = 'X'; | |
break; | |
default: | |
return 0; | |
} | |
system("CLS"); | |
cout << endl;//Printing the result | |
cout << " " << ttt[0][0] << "|" << ttt[0][1] << "|" << ttt[0][2] << endl; | |
cout << " " << ttt[1][0] << "|" << ttt[1][1] << "|" << ttt[1][2] << endl; | |
cout << " " << ttt[2][0] << "|" << ttt[2][1] << "|" << ttt[2][2] << endl; | |
if ((ttt[0][0] == 'X' && ttt[0][1] == 'X' && ttt[0][2] == 'X') || (ttt[0][0] == 'X' && ttt[1][0] == 'X' && ttt[2][0] == 'X') || | |
(ttt[1][0] == 'X' && ttt[1][1] == 'X' && ttt[1][2] == 'X') || (ttt[0][1] == 'X' && ttt[1][1] == 'X' && ttt[2][1] == 'X') || | |
(ttt[2][0] == 'X' && ttt[2][1] == 'X' && ttt[2][2] == 'X') || (ttt[0][2] == 'X' && ttt[1][2] == 'X' && ttt[2][2] == 'X') || | |
(ttt[0][0] == 'X' && ttt[1][1] == 'X' && ttt[2][2] == 'X') || (ttt[2][0] == 'X' && ttt[1][1] == 'X' && ttt[0][2] == 'X')) | |
{cout << endl << " " << nome1 << " venceu a partida!" << endl; game_over = true;} //Winning condition | |
else if ((ttt[0][0] != '_') && (ttt[0][1] != '_') && (ttt[0][2] != '_') && | |
(ttt[1][0] != '_') && (ttt[1][1] != '_') && (ttt[1][2] != '_') && | |
(ttt[2][0] != ' ') && (ttt[2][1] != ' ') && (ttt[2][2] != ' ')) | |
{cout << endl << " O jogo empatou!" << endl; game_over = true;} //Drawing condition | |
} | |
if (game_over == true) break; | |
//CPU TURN | |
for (int c = 0; c < 1; c++) | |
{ | |
cpu = 0; | |
//Conditions for CPU to block the player | |
if ((ttt[0][0] != 'O' && ttt[0][0] != 'X') && ( //Checking if it is not a marked spot | |
((ttt[0][1] == 'X') && (ttt[0][2] == 'X')) || //HORIZONTAL | |
((ttt[2][0] == 'X') && (ttt[1][0] == 'X')) || //VERTICAL | |
((ttt[2][2] == 'X') && (ttt[1][1] == 'X')))) //DIAGONAL | |
cpu = 7;//This is where the CPU will mark to block the player | |
if ((ttt[0][1] != 'O' && ttt[0][1] != 'X') && ( | |
((ttt[0][0] == 'X') && (ttt[0][2] == 'X')) || //HORIZONTAL | |
((ttt[2][1] == 'X') && (ttt[1][1] == 'X')))) //VERTICAL | |
cpu = 8; | |
if ((ttt[0][2] != 'O' && ttt[0][2] != 'X') && ( | |
((ttt[0][0] == 'X') && (ttt[0][1] == 'X')) || //HORIZONTAL | |
((ttt[2][2] == 'X') && (ttt[1][2] == 'X')) || //VERTICAL | |
((ttt[2][0] == 'X') && (ttt[1][1] == 'X')))) //DIAGONAL | |
cpu = 9; | |
if ((ttt[1][0] != 'O' && ttt[1][0] != 'X') && ( | |
((ttt[1][1] == 'X') && (ttt[1][2] == 'X')) || //HORIZONTAL | |
((ttt[0][0] == 'X') && (ttt[2][0] == 'X')))) //VERTICAL | |
cpu = 4; | |
if ((ttt[1][1] != 'O' && ttt[1][1] != 'X') && ( | |
((ttt[1][0] == 'X') && (ttt[1][2] == 'X')) || //HORIZONTAL | |
((ttt[0][1] == 'X') && (ttt[2][1] == 'X')) || //VERTICAL | |
((ttt[2][0] == 'X') && (ttt[0][2] == 'X')) || //DIAGONAL | |
((ttt[0][0] == 'X') && (ttt[2][2] == 'X')))) //DIAGONAL | |
cpu = 5; | |
if ((ttt[1][2] != 'O' && ttt[1][2] != 'X') && ( | |
((ttt[1][0] == 'X') && (ttt[1][1] == 'X')) || //HORIZONTAL | |
((ttt[0][2] == 'X') && (ttt[2][2] == 'X')))) //VERTICAL | |
cpu = 6; | |
if ((ttt[2][0] != 'O' && ttt[2][0] != 'X') && ( | |
((ttt[2][1] == 'X') && (ttt[2][2] == 'X')) || //HORIZONTAL | |
((ttt[0][0] == 'X') && (ttt[1][0] == 'X')) || //VERTICAL | |
((ttt[1][1] == 'X') && (ttt[0][2] == 'X')))) //DIAGONAL | |
cpu = 1; | |
if ((ttt[2][1] != 'O' && ttt[2][1] != 'X') && ( | |
((ttt[2][0] == 'X') && (ttt[2][2] == 'X')) || //HORIZONTAL | |
((ttt[0][1] == 'X') && (ttt[1][1] == 'X')))) //VERTICAL | |
cpu = 2; | |
if ((ttt[2][2] != 'O' && ttt[2][2] != 'X') && ( | |
((ttt[2][0] == 'X') && (ttt[2][1] == 'X')) || //HORIZONTAL | |
((ttt[0][2] == 'X') && (ttt[1][2] == 'X')) || //VERTICAL | |
((ttt[0][0] == 'X') && (ttt[1][1] == 'X')))) //DIAGONAL | |
cpu = 3; | |
//Conditions for CPU to win, instead of just blocking the player | |
if ((ttt[0][0] != 'O' && ttt[0][0] != 'X') && ( | |
((ttt[0][1] == 'O') && (ttt[0][2] == 'O')) || //HORIZONTAL | |
((ttt[2][0] == 'O') && (ttt[1][0] == 'O')) || //VERTICAL | |
((ttt[2][2] == 'O') && (ttt[1][1] == 'O')))) //DIAGONAL | |
cpu = 7; | |
if ((ttt[0][1] != 'O' && ttt[0][1] != 'X') && ( | |
((ttt[0][0] == 'O') && (ttt[0][2] == 'O')) || //HORIZONTAL | |
((ttt[2][1] == 'O') && (ttt[1][1] == 'O')))) //VERTICAL | |
cpu = 8; | |
if ((ttt[0][2] != 'O' && ttt[0][2] != 'X') && ( | |
((ttt[0][0] == 'O') && (ttt[0][1] == 'O')) || //HORIZONTAL | |
((ttt[2][2] == 'O') && (ttt[1][2] == 'O')) || //VERTICAL | |
((ttt[2][0] == 'O') && (ttt[1][1] == 'O')))) //DIAGONAL | |
cpu = 9; | |
if ((ttt[1][0] != 'O' && ttt[1][0] != 'X') && ( | |
((ttt[1][1] == 'O') && (ttt[1][2] == 'O')) || //HORIZONTAL | |
((ttt[0][0] == 'O') && (ttt[2][0] == 'O')))) //VERTICAL | |
cpu = 4; | |
if ((ttt[1][1] != 'O' && ttt[1][1] != 'X') && ( | |
((ttt[1][0] == 'O') && (ttt[1][2] == 'O')) || //HORIZONTAL | |
((ttt[0][1] == 'O') && (ttt[2][1] == 'O')) || //VERTICAL | |
((ttt[2][0] == 'O') && (ttt[0][2] == 'O')) || //DIAGONAL | |
((ttt[0][0] == 'O') && (ttt[2][2] == 'O')))) //DIAGONAL | |
cpu = 5; | |
if ((ttt[1][2] != 'O' && ttt[1][2] != 'X') && ( | |
((ttt[1][0] == 'O') && (ttt[1][1] == 'O')) || //HORIZONTAL | |
((ttt[0][2] == 'O') && (ttt[2][2] == 'O')))) //VERTICAL | |
cpu = 6; | |
if ((ttt[2][0] != 'O' && ttt[2][0] != 'X') && ( | |
((ttt[2][1] == 'O') && (ttt[2][2] == 'O')) || //HORIZONTAL | |
((ttt[0][0] == 'O') && (ttt[1][0] == 'O')) || //VERTICAL | |
((ttt[1][1] == 'O') && (ttt[0][2] == 'O')))) //DIAGONAL | |
cpu = 1; | |
if ((ttt[2][1] != 'O' && ttt[2][1] != 'X') && ( | |
((ttt[2][0] == 'O') && (ttt[2][2] == 'O')) || //HORIZONTAL | |
((ttt[0][1] == 'O') && (ttt[1][1] == 'O')))) //VERTICAL | |
cpu = 2; | |
if ((ttt[2][2] != 'O' && ttt[2][2] != 'X') && ( | |
((ttt[2][0] == 'O') && (ttt[2][1] == 'O')) || //HORIZONTAL | |
((ttt[0][2] == 'O') && (ttt[1][2] == 'O')) || //VERTICAL | |
((ttt[0][0] == 'O') && (ttt[1][1] == 'O')))) //DIAGONAL | |
cpu = 3; | |
if (cpu == 0) cpu = 1 + (rand() % 9);//If there are no places to block, CPU will pick a random unmarked spot | |
switch (cpu) | |
{ | |
case 7: | |
if (ttt[0][0] == 'O' || ttt[0][0] == 'X') {c--; break;} | |
ttt[0][0] = 'O'; | |
break; | |
case 8: | |
if (ttt[0][1] == 'O' || ttt[0][1] == 'X') {c--; break;} | |
ttt[0][1] = 'O'; | |
break; | |
case 9: | |
if (ttt[0][2] == 'O' || ttt[0][2] == 'X') {c--; break;} | |
ttt[0][2] = 'O'; | |
break; | |
case 4: | |
if (ttt[1][0] == 'O' || ttt[1][0] == 'X') {c--; break;} | |
ttt[1][0] = 'O'; | |
break; | |
case 5: | |
if (ttt[1][1] == 'O' || ttt[1][1] == 'X') {c--; break;} | |
ttt[1][1] = 'O'; | |
break; | |
case 6: | |
if (ttt[1][2] == 'O' || ttt[1][2] == 'X') {c--; break;} | |
ttt[1][2] = 'O'; | |
break; | |
case 1: | |
if (ttt[2][0] == 'O' || ttt[2][0] == 'X') {c--; break;} | |
ttt[2][0] = 'O'; | |
break; | |
case 2: | |
if (ttt[2][1] == 'O' || ttt[2][1] == 'X') {c--; break;} | |
ttt[2][1] = 'O'; | |
break; | |
case 3: | |
if (ttt[2][2] == 'O' || ttt[2][2] == 'X') {c--; break;} | |
ttt[2][2] = 'O'; | |
break; | |
default: | |
return 0; | |
} | |
system("CLS"); | |
cout << endl; | |
cout << " " << ttt[0][0] << "|" << ttt[0][1] << "|" << ttt[0][2] << endl; | |
cout << " " << ttt[1][0] << "|" << ttt[1][1] << "|" << ttt[1][2] << endl; | |
cout << " " << ttt[2][0] << "|" << ttt[2][1] << "|" << ttt[2][2] << endl; | |
if ((ttt[0][0] == 'O' && ttt[0][1] == 'O' && ttt[0][2] == 'O') || (ttt[0][0] == 'O' && ttt[1][0] == 'O' && ttt[2][0] == 'O') || | |
(ttt[1][0] == 'O' && ttt[1][1] == 'O' && ttt[1][2] == 'O') || (ttt[0][1] == 'O' && ttt[1][1] == 'O' && ttt[2][1] == 'O') || | |
(ttt[2][0] == 'O' && ttt[2][1] == 'O' && ttt[2][2] == 'O') || (ttt[0][2] == 'O' && ttt[1][2] == 'O' && ttt[2][2] == 'O') || | |
(ttt[0][0] == 'O' && ttt[1][1] == 'O' && ttt[2][2] == 'O') || (ttt[2][0] == 'O' && ttt[1][1] == 'O' && ttt[0][2] == 'O')) | |
{cout << endl << " CPU venceu a partida!" << endl; game_over = true;} | |
else if ((ttt[0][0] != '_') && (ttt[0][1] != '_') && (ttt[0][2] != '_') && | |
(ttt[1][0] != '_') && (ttt[1][1] != '_') && (ttt[1][2] != '_') && | |
(ttt[2][0] != ' ') && (ttt[2][1] != ' ') && (ttt[2][2] != ' ')) | |
{cout << endl << " O jogo empatou!" << endl; game_over = true;} | |
} | |
if (game_over == true) break; | |
} | |
break; | |
} | |
case 2: // Jogador VS Jogador | |
{ | |
cout << "\n Nome do primeiro jogador: "; | |
cin >> nome1; | |
cout << "\n Nome do segundo jogador : "; | |
cin >> nome2; | |
system("CLS"); | |
cout << endl; | |
cout << " 7|8|9" << endl; | |
cout << " 4|5|6" << endl; | |
cout << " 1|2|3" << endl; | |
while (true) | |
{ | |
for (int c = 0; c < 1; c++) | |
{ | |
game_over = false; | |
cout << endl << " " << nome1 << ": "; | |
cin >> p1; | |
switch (p1) | |
{ | |
case 7: | |
if (ttt[0][0] == 'O' || ttt[0][0] == 'X') {c--; break;} | |
ttt[0][0] = 'X'; | |
break; | |
case 8: | |
if (ttt[0][1] == 'O' || ttt[0][1] == 'X') {c--; break;} | |
ttt[0][1] = 'X'; | |
break; | |
case 9: | |
if (ttt[0][2] == 'O' || ttt[0][2] == 'X') {c--; break;} | |
ttt[0][2] = 'X'; | |
break; | |
case 4: | |
if (ttt[1][0] == 'O' || ttt[1][0] == 'X') {c--; break;} | |
ttt[1][0] = 'X'; | |
break; | |
case 5: | |
if (ttt[1][1] == 'O' || ttt[1][1] == 'X') {c--; break;} | |
ttt[1][1] = 'X'; | |
break; | |
case 6: | |
if (ttt[1][2] == 'O' || ttt[1][2] == 'X') {c--; break;} | |
ttt[1][2] = 'X'; | |
break; | |
case 1: | |
if (ttt[2][0] == 'O' || ttt[2][0] == 'X') {c--; break;} | |
ttt[2][0] = 'X'; | |
break; | |
case 2: | |
if (ttt[2][1] == 'O' || ttt[2][1] == 'X') {c--; break;} | |
ttt[2][1] = 'X'; | |
break; | |
case 3: | |
if (ttt[2][2] == 'O') {c--; break;} | |
ttt[2][2] = 'X'; | |
break; | |
default: | |
return 0; | |
} | |
system("CLS"); | |
cout << endl; | |
cout << " " << ttt[0][0] << "|" << ttt[0][1] << "|" << ttt[0][2] << endl; | |
cout << " " << ttt[1][0] << "|" << ttt[1][1] << "|" << ttt[1][2] << endl; | |
cout << " " << ttt[2][0] << "|" << ttt[2][1] << "|" << ttt[2][2] << endl; | |
if ((ttt[0][0] == 'X' && ttt[0][1] == 'X' && ttt[0][2] == 'X') || (ttt[0][0] == 'X' && ttt[1][0] == 'X' && ttt[2][0] == 'X') || | |
(ttt[1][0] == 'X' && ttt[1][1] == 'X' && ttt[1][2] == 'X') || (ttt[0][1] == 'X' && ttt[1][1] == 'X' && ttt[2][1] == 'X') || | |
(ttt[2][0] == 'X' && ttt[2][1] == 'X' && ttt[2][2] == 'X') || (ttt[0][2] == 'X' && ttt[1][2] == 'X' && ttt[2][2] == 'X') || | |
(ttt[0][0] == 'X' && ttt[1][1] == 'X' && ttt[2][2] == 'X') || (ttt[2][0] == 'X' && ttt[1][1] == 'X' && ttt[0][2] == 'X')) | |
{cout << endl << " " << nome1 << " venceu a partida!" << endl; game_over = true;} | |
else if ((ttt[0][0] != '_') && (ttt[0][1] != '_') && (ttt[0][2] != '_') && | |
(ttt[1][0] != '_') && (ttt[1][1] != '_') && (ttt[1][2] != '_') && | |
(ttt[2][0] != ' ') && (ttt[2][1] != ' ') && (ttt[2][2] != ' ')) | |
{cout << endl << " O jogo empatou!" << endl; game_over = true;} | |
} | |
if (game_over == true) break; | |
for (int c = 0; c < 1; c++) | |
{ | |
cout << endl << " " << nome2 << ": "; | |
cin >> p2; | |
switch (p2) | |
{ | |
case 7: | |
if (ttt[0][0] == 'O' || ttt[0][0] == 'X') {c--; break;} | |
ttt[0][0] = 'O'; | |
break; | |
case 8: | |
if (ttt[0][1] == 'O' || ttt[0][1] == 'X') {c--; break;} | |
ttt[0][1] = 'O'; | |
break; | |
case 9: | |
if (ttt[0][2] == 'O' || ttt[0][2] == 'X') {c--; break;} | |
ttt[0][2] = 'O'; | |
break; | |
case 4: | |
if (ttt[1][0] == 'O' || ttt[1][0] == 'X') {c--; break;} | |
ttt[1][0] = 'O'; | |
break; | |
case 5: | |
if (ttt[1][1] == 'O' || ttt[1][1] == 'X') {c--; break;} | |
ttt[1][1] = 'O'; | |
break; | |
case 6: | |
if (ttt[1][2] == 'O' || ttt[1][2] == 'X') {c--; break;} | |
ttt[1][2] = 'O'; | |
break; | |
case 1: | |
if (ttt[2][0] == 'O' || ttt[2][0] == 'X') {c--; break;} | |
ttt[2][0] = 'O'; | |
break; | |
case 2: | |
if (ttt[2][1] == 'O' || ttt[2][1] == 'X') {c--; break;} | |
ttt[2][1] = 'O'; | |
break; | |
case 3: | |
if (ttt[2][2] == 'O' || ttt[2][2] == 'X') {c--; break;} | |
ttt[2][2] = 'O'; | |
break; | |
default: | |
return 0; | |
} | |
system("CLS"); | |
cout << endl; | |
cout << " " << ttt[0][0] << "|" << ttt[0][1] << "|" << ttt[0][2] << endl; | |
cout << " " << ttt[1][0] << "|" << ttt[1][1] << "|" << ttt[1][2] << endl; | |
cout << " " << ttt[2][0] << "|" << ttt[2][1] << "|" << ttt[2][2] << endl; | |
if ((ttt[0][0] == 'O' && ttt[0][1] == 'O' && ttt[0][2] == 'O') || (ttt[0][0] == 'O' && ttt[1][0] == 'O' && ttt[2][0] == 'O') || | |
(ttt[1][0] == 'O' && ttt[1][1] == 'O' && ttt[1][2] == 'O') || (ttt[0][1] == 'O' && ttt[1][1] == 'O' && ttt[2][1] == 'O') || | |
(ttt[2][0] == 'O' && ttt[2][1] == 'O' && ttt[2][2] == 'O') || (ttt[0][2] == 'O' && ttt[1][2] == 'O' && ttt[2][2] == 'O') || | |
(ttt[0][0] == 'O' && ttt[1][1] == 'O' && ttt[2][2] == 'O') || (ttt[2][0] == 'O' && ttt[1][1] == 'O' && ttt[0][2] == 'O')) | |
{cout << endl << " " << nome2 << " venceu a partida!" << endl; game_over = true;} | |
else if ((ttt[0][0] != '_') && (ttt[0][1] != '_') && (ttt[0][2] != '_') && | |
(ttt[1][0] != '_') && (ttt[1][1] != '_') && (ttt[1][2] != '_') && | |
(ttt[2][0] != ' ') && (ttt[2][1] != ' ') && (ttt[2][2] != ' ')) | |
{cout << endl << " O jogo empatou!" << endl; game_over = true;} | |
} | |
if (game_over == true) break; | |
} | |
break; | |
} | |
case 3: // Sair | |
{ | |
cout << "\n Adeus!\n"; | |
return 0; | |
} | |
default: | |
invalid = true; | |
} | |
if (invalid == false) | |
jogar_novamente(); | |
} | |
system("CLS"); | |
cout << "\n Adeus!\n"; | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment