Programa el juego de escaleras y serpientes en Java

Hola a todos, hoy os voy a explicar como podemos programar el juego de escaleras y serpientes en Java.

Todos alguna vez de pequeños, hemos jugado al juego de escaleras y serpientes, se trata de juego de mesa donde el objetivo es llegar a la meta pudiendo adelantarnos mediante escaleras o bajar mediante serpientes.

Reglas de escaleras y serpientes

Los jugadores comienzan en la casilla 1 de un tablero de 64 casillas y se turnan para lanzar un dado que les indicará la cantidad de casillas que deben avanzar.

Si al finalizar un movimiento un jugador cae en una casilla donde comienza una escalera, sube por ella hasta la casilla donde ésta termina. Por el contrario, cae en una en donde comienza la cabeza de una serpiente, desciende por ésta hasta la casilla donde finaliza su cola.

Si un jugador obtiene un 6 podrá mover y tirar nuevamente el dado. Si un jugador obtiene tres 6 consecutivos, deberá regresar a la casilla inicial y no podrá mover su ficha hasta obtener nuevamente un 6.

El jugador que logra llegar a la casilla final es el ganador. En una de las modalidades se debe llegar al casilla final con el puntaje justo.

Tienes más detalles aquí.

Preparando todo lo necesario

En primer lugar, necesitaremos algunas variables que usaremos para nuestro juego:

  • Dos arrays con las casillas especiales, uno con la casilla origen y otro con el destino. Por ejemplo, si caigo en la casilla 7, iría a la casilla 38.
  • Un array con las posiciones de los jugadores donde la posición 0 es del jugador 1 y la posición 1 es del jugador 2.
  • Un array de booleanos para indicar si el jugador esta bloqueado o no.
  • Constante con el numero de casillas totales (64).
  • Variable con la casilla limite que es la que se debe llegar, es decir, la última casilla.
  • Variable turno para indicar el jugador que le toca, se combina con el array de las posiciones de los jugadores.
  • Variable dado para almacenar el valor del dado que haya sacado un jugador.
  • Variable tiradasConsecutivas indica el número de tiradas consecutivas con el valor 6 se han sacado.
  • Variable casillaSuperior que la usaremos para el caso de que nos pasemos del tablero.
  • Variable casillaEspecial indica si donde ha caído el jugador es una de las casillas especiales.

Necesitamos generar un número aleatorio para el dado, lo tenemos en este tutorial:

Como generar números aleatorios con el método Math.random de Java

Fin del juego de escaleras y serpientes

El juego se termina cuando uno de los dos jugadores llega a la casillaLimite.

Tirada de dado

En cada turno, el jugador tira el dado, si es 6 no cambia el turno.

Desbloqueo de jugador y tiradas consecutivas

Si sacamos un 6, tenemos un par de escenarios:

  • El jugador esta bloqueado, por lo que lo desbloqueamos y reseteamos las tiradas consecutivas.
  • El jugador no esta bloqueado, aumentamos en uno las tiradas consecutivas.

Sino es un 6, reseteamos las tiradas consecutivas.

Bloqueo del jugador de escaleras y serpientes

Cuando el número de tiradas consecutivas llega a 3, bloqueamos al jugador del turno actual.

Movimiento jugador

Las posiciones del jugador se van actualizando según el valor del dado, por otro lado, tenemos un caso especial que es cuando el jugador se pase de la casilla limite, por lo que «rebotaremos» hacia atrás.

Casillas especiales de escaleras y serpientes

Cuando el jugador cae en una casilla, comprobamos si es especial, si el origen es mayor que el destino es una serpiente, sino es una escalera.

Cambio de turno

Al final, cambiaremos el turno siempre y cuando no sea un 6.

Código final

Así queda nuestro código al final:

Resultados

Con todo listo, ya podemos probar nuestro programa:

escaleras y serpientes java 1 escaleras y serpientes java 2

Os dejo un video donde explicamos todo paso a paso

https://youtu.be/askCpTe-5t4

Recuerda que todo el código esta en github.

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


Warning: Trying to access array offset on value of type null in /home2/discodur/public_html/discoduroderoer/wp-content/themes/disto/single.php on line 539