Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created May 21, 2021 18:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/e892554183163bba05f774efbaf9ab7d to your computer and use it in GitHub Desktop.
Save parzibyte/e892554183163bba05f774efbaf9ab7d to your computer and use it in GitHub Desktop.
static void iniciarJuego(int modo) {
if (modo != JUGADOR_JUGADOR && modo != JUGADOR_CPU && modo != CPU_CPU) {
System.out.print("Modo de juego no permitido");
return;
}
// Para que salgan cosas aleatorias
// Iniciar tablero de juego
char[][] tablero = new char[FILAS][COLUMNAS];
// Y limpiarlo
limpiarTablero(tablero);
// Elegir jugador que inicia al azar
char jugadorActual = jugadorAleatorio();
System.out.printf("El jugador que inicia es: %c\n", jugadorActual);
int x = 0, y = 0;
// Y allá vamos
int[] coordenadas = new int[2];
while (true) {
imprimirTablero(tablero);
if (modo == JUGADOR_JUGADOR || (modo == JUGADOR_CPU && jugadorActual == JUGADOR_X)) {
System.out.printf("Jugador %c. Ingresa coordenadas (x,y) para colocar la pieza\n", jugadorActual);
do {
x = solicitarNumeroValido("Ingresa X: ", 1, COLUMNAS);
y = solicitarNumeroValido("Ingresa Y: ", 1, FILAS);
if (!coordenadasVacias(y - 1, x - 1, tablero)) {
System.out.println("Coordenadas ocupadas. Intenta de nuevo");
}
} while (!coordenadasVacias(y - 1, x - 1, tablero));
// Al usuario se le solicitan números comenzando a contar en 1, pero en los arreglos comenzamos desde el 0
// así que necesitamos restar uno en ambas variables
x--;
y--;
} else if (modo == CPU_CPU || jugadorActual == JUGADOR_CPU_O) {
// Si es modo CPU contra CPU o es el turno del CPU, dejamos que las coordenadas las elija
// el programa
coordenadas = elegirCoordenadasCpu(jugadorActual, tablero);
x = coordenadas[0];
y = coordenadas[1];
}
// Sin importar cuál modo haya sido, colocamos la pieza según las coordenadas elegidas
colocarPieza(y, x, jugadorActual, tablero);
// Puede que después de colocar la pieza el jugador gane o haya un empate, así que comprobamos
if (comprobarSiGana(jugadorActual, tablero)) {
imprimirTablero(tablero);
System.out.printf("El jugador %c gana\n", jugadorActual);
return;
} else if (empate(tablero)) {
imprimirTablero(tablero);
System.out.print("Empate");
return;
}
// Si no, es turno del otro jugador
jugadorActual = oponenteDe(jugadorActual);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment