Juego del Tres en Raya en C++ y Juego OSO: Código Completo Explicado
Juego del tres en raya en C++
A continuación se presenta el código del juego del tres en raya, desarrollado en C++ para ejecutarse por consola.
Código base del tres en raya
#include <iostream>
using namespace std;
int main() {
char c1='1', c2='2', c3='3', c4='4', c5='5', c6='6', c7='7', c8='8', c9='9';
char jugador='X';
int pos, jugadas=0;
while (true) {
cout << "\n " << c1 << " | " << c2 << " | " << c3 << "\n";
cout << "---+---+---\n";
cout << " " << c4 << " | " << c5 << " | " << c6 << "\n";
cout << "---+---+---\n";
cout << " " << c7 << " | " << c8 << " | " << c9 << "\n";
cout << "\nTurno " << jugador << " (1-9): ";
cin >> pos;
if (cin.fail() || pos < 1 || pos > 9) {
cin.clear();
cin.ignore(1000, '\n');
cout << "Inválido.\n";
continue;
}
if (pos==1 && c1=='1') c1=jugador;
else if (pos==2 && c2=='2') c2=jugador;
else if (pos==3 && c3=='3') c3=jugador;
else if (pos==4 && c4=='4') c4=jugador;
else if (pos==5 && c5=='5') c5=jugador;
else if (pos==6 && c6=='6') c6=jugador;
else if (pos==7 && c7=='7') c7=jugador;
else if (pos==8 && c8=='8') c8=jugador;
else if (pos==9 && c9=='9') c9=jugador;
else {
cout << "No válido.\n";
continue;
}
jugadas++;
if ((c1==jugador && c2==jugador && c3==jugador) || (c4==jugador && c5==jugador && c6==jugador) || (c7==jugador && c8==jugador && c9==jugador) || (c1==jugador && c4==jugador && c7==jugador) || (c2==jugador && c5==jugador && c8==jugador) || (c3==jugador && c6==jugador && c9==jugador) || (c1==jugador && c5==jugador && c9==jugador) || (c3==jugador && c5==jugador && c7==jugador)) {
cout << "\n¡Gana " << jugador << "!\n";
break;
}
if (jugadas == 9) {
cout << "\n¡Empate!\n";
break;
}
jugador = (jugador == 'X') ? 'O' : 'X';
}
return 0;
}
Juego OSO en C++
A continuación se presenta la versión del juego OSO, en la que cada jugador elige la letra O o S, y gana quien forme la secuencia OSO en una línea.
Código del juego OSO
#include <iostream>
using namespace std;
int main() {
char c1='1', c2='2', c3='3', c4='4', c5='5', c6='6', c7='7', c8='8', c9='9';
char letra;
int pos, jugadas=0;
while (true) {
cout << "\n " << c1 << " | " << c2 << " | " << c3 << "\n";
cout << "---+---+---\n";
cout << " " << c4 << " | " << c5 << " | " << c6 << "\n";
cout << "---+---+---\n";
cout << " " << c7 << " | " << c8 << " | " << c9 << "\n";
cout << "\nElige posición (1-9): ";
cin >> pos;
if (cin.fail() || pos < 1 || pos > 9) {
cin.clear();
cin.ignore(1000, '\n');
cout << "Posición inválida\n";
continue;
}
cout << "\nElige (O/S): ";
cin >> letra;
letra = toupper(letra);
if (letra != 'O' && letra != 'S') {
cout << "Letra no válida.\n";
continue;
}
if (pos==1 && c1=='1') c1=letra;
else if (pos==2 && c2=='2') c2=letra;
else if (pos==3 && c3=='3') c3=letra;
else if (pos==4 && c4=='4') c4=letra;
else if (pos==5 && c5=='5') c5=letra;
else if (pos==6 && c6=='6') c6=letra;
else if (pos==7 && c7=='7') c7=letra;
else if (pos==8 && c8=='8') c8=letra;
else if (pos==9 && c9=='9') c9=letra;
else {
cout << "Posición no válida.\n";
continue;
}
jugadas++;
if ((c1=='O'&&c2=='S'&&c3=='O') || (c4=='O'&&c5=='S'&&c6=='O') || (c7=='O'&&c8=='S'&&c9=='O') || (c1=='O'&&c4=='S'&&c7=='O') || (c2=='O'&&c5=='S'&&c8=='O') || (c3=='O'&&c6=='S'&&c9=='O') || (c1=='O'&&c5=='S'&&c9=='O') || (c3=='O'&&c5=='S'&&c7=='O')) {
cout << "\n¡Se formó OSO! 🎉\n";
break;
}
if (jugadas == 9) {
cout << "\n¡Empate!\n";
break;
}
}
return 0;
}