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.