Lógica del juego 6: Función terminar_partida - aigora/twIE_2021-chkr_s-l GitHub Wiki
Función terminar_partida.
La función terminar partida puede devolver uno de cuatro valores: continúa la partida=0, ganan amarillas=1, ganan moradas=2, empate=3. La partida puede terminar de tres maneras:
Gana un jugador
La función cuenta en cada turno las fichas que hay en el tablero, separando por colores.
for (i=0; i<32; i++) //Cuenta el número de fichas de cada color.
{
if (tablero[i] % 3 == 0) { amarillas++; } else if (tablero[i] % 3 == 1) { moradas++; }
}
Y si no hay fichas de un color devueleve el valor que corresponde a la victoria del oponente.
if(moradas==0) { return 1; } else if(amarillas==0) { return 2; }
Tablas
Si llevan más de 60 turnos sin comer alguna ficha se consideran tablas y por tanto empate.
if ((turnos_sin_comidos)>=60) //Si ha habido 60 turnos sin comer es tablas
{
return 3;
}
Ahogado
Cuando el jugador no puede mover ninguna de sus fichas se considera ahogado y se termina en empate.
if (nComidasPosibles == -1)
{
for (i=0; i<32; i++) //Se comprueba si es ahogado
{
if (tablero[i]%3 == turno%2)
{
nMovimientosPosibles = puedeMover(tablero, i, movimientosPosibles);
if (nMovimientosPosibles != -1) { ahogado = false; }
}
}
if (ahogado) { return 3; }
}
Esta función comprueba que en el turno actual el jugador no puede ni mover ni comer ninguna ficha, por tanto esta atascado y se termina con un empate.