Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created January 3, 2022 18:36
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/55032c9e98d19152858a22b409763a0f to your computer and use it in GitHub Desktop.
Save parzibyte/55032c9e98d19152858a22b409763a0f to your computer and use it in GitHub Desktop.
int elegir_mejor_columna(char jugador, vector<vector<char> > tablero)
{
// Voy a comprobar si puedo ganar...
int posibleColumnaGanadora = obtener_columna_ganadora(jugador, tablero);
if (posibleColumnaGanadora != -1)
{
cout << "*elijo ganar*\n";
return posibleColumnaGanadora;
}
// Si no, voy a comprobar si mi oponente gana con el siguiente movimiento, para evitarlo
char oponente = obtener_oponente(jugador);
int posibleColumnaGanadoraDeOponente = obtener_columna_ganadora(oponente, tablero);
if (posibleColumnaGanadoraDeOponente != -1)
{
cout << "*elijo evitar que mi oponente gane*\n";
return posibleColumnaGanadoraDeOponente;
}
// En caso de que nadie pueda ganar en el siguiente movimiento, buscaré en dónde se obtiene el mayor
// puntaje al colocar la pieza
ConteoConColumna conteoConColumnaJugador = obtener_columna_en_la_que_se_obtiene_mayor_puntaje(jugador, tablero);
ConteoConColumna conteoConColumnaOponente = obtener_columna_en_la_que_se_obtiene_mayor_puntaje(oponente, tablero);
if (conteoConColumnaOponente.conteo > conteoConColumnaJugador.conteo)
{
cout << "*elijo quitarle el puntaje a mi oponente*\n";
return conteoConColumnaOponente.columna;
}
else if (conteoConColumnaJugador.conteo > 1)
{
cout << "*elijo colocarla en donde obtengo un mayor puntaje*\n";
return conteoConColumnaJugador.columna;
}
// Si no, regresar la central por si está desocupada
int columnaCentral = obtener_columna_central(jugador, tablero);
if (columnaCentral != -1)
{
cout << "*elijo ponerla en el centro*\n";
return columnaCentral;
}
// Finalmente, devolver la primera disponible de manera aleatoria
int columna = obtener_columna_aleatoria(jugador, tablero);
if (columna != -1)
{
cout << "*elijo la primera vacía aleatoria*\n";
return columna;
}
cout << "Esto no debería suceder\n";
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment