Reto Juego 4 en línea
Reto final del Introductorio de la Cohorte 3
Descripción del juego
El juego 4-en-línea se desarrolla en un tablero rectangular vertical en el que, aprovechando la gravedad, dos jugadores dejan caer fichas en forma alternada, con el objetivo de lograr que al menos 4 fichas queden alineadas en alguna dirección. Las fichas de cada jugador se diferencian por su color. Cuando le corresponde su turno, el jugador elige una columna del tablero que no esté llena y suelta una ficha desde la parte superior. La ficha cae por esa columna hasta la primera posición desocupada y permanece ahí hasta el final del juego.
Inicialmente, el tablero está completamente vacío, tal como se ve en la imagen 1. El jugador que primero logra alinear 4 fichas, ya sea en forma vertical, diagonal u horizontal, tal como se ve en la imagen 2, gana el juego.
Sin embargo, parte de la estrategia de un buen jugador es también impedir que el otro jugador logre alinear 4 fichas, para lo cual es común que intente colocar sus propias fichas entre las fichas de su rival. Finalmente, si ambos jugadores son muy buenos, es posible que ocurra un empate. Esto se da cuando el tablero se llena completamente y ningún jugador ha conseguido alinear 4 fichas.
Visita http://www.disfrutalasmatematicas.com/juegos/4-en-linea.html, donde podrás encontrar una versión avanzada de este juego.
Descripción del Proyecto
En este proyecto, queremos construir un programa que permita implementar una versión simple del juego, para dos jugadores, considerando un tablero de tamaño 6×6. Para implementar lo anterior, necesitamos que el programa tenga dos tipos de comportamientos:
- Como controlador del juego, esto es, gestionar los turnos de juego, validar que las jugadas sean posibles, verificar la situación del juego (si hay ganadores o empate), y mostrar adecuadamente la evolución del juego.
- Como jugador, esto es, que cada jugador pueda indicar la columna (cualquiera de las 6) donde desea jugar (soltar la ficha).
El juego se desarrolla en fases, las que deben ejecutarse en forma alternada. Al final de cada fase, el programa debe mostrar en la pantalla el estado actual del tablero, diferenciando las posiciones que tienen fichas de cada jugador, así como las posiciones vacías. La representación de las fichas puede hacerse de muchas maneras, bien sea con caracteres específicos o coloreados, pero debe ser lo suficientemente clara para que los jugadores interpreten correctamente la evolución del juego.
En la primera fase, el jugador 1 elige una columna para colocar su ficha. El programa debe verificar que la jugada sea válida. Por ejemplo, serían jugadas inválidas colocar una ficha en una columna que esté completamente llena, o indicar un número de columna que no existe. Cuando la jugada es válida, el programa debe verificar si el juego ha terminado, ya sea porque el jugador que colocó la ficha consiguió ganar, o porque el tablero está completamente lleno.
En caso de que el jugador gane, debe mostrarse el tablero, diferenciando las cuatro fichas en línea que le dieron la victoria al vencedor. La forma de hacer esto es de libre elección. En la segunda fase, el jugador 2 procede a colocar su ficha, generando que el programa se comporte en forma similar a la fase anterior, pero esta vez respecto de la jugada del jugador 2. En la tercera fase, le corresponde nuevamente al jugador 1, y así sucesivamente. El juego continúa hasta que un jugador gane o hasta que se detecte un empate. Observe que cuando un jugador coloca una ficha, no es necesario revisar todo el tablero para saber si ganó la partida. Basta con verificar las vecindades (columnas aledañas) de la última ficha colocada.
Recomendaciones
- En lo posible, incluya comentarios que ayuden a entender mejor su programa. Se recomienda abordar el problema mediante descomposición, es decir, separando el problema en subproblemas más simples cuyas soluciones puedan ser implementadas mediante funciones.
- Diseñe los algoritmos de su programa antes de codificar. Recuerde que el papel siempre es buena idea.
- En caso de tener dudas con el enunciado, no dude en consultarlas con el mentor.
Entrega
La entrega del proyecto debe hacerse antes del Viernes hasta las 12m. El mecanismo de entrega será explicado en clase.