El juego Mastermind en Java trata de hacer una implementación, por consola, de un juego del mismo nombre pero con algunas modificaciones. Es algo así:

Realizar el juego en Java por consola en donde el programa piense una contraseña aleatoria (el usuario puede elegir si la misma puede o no contener repetidos, la clave serán dígitos del 0 al 9) y el usuario trate de adivinarla.

Si el usuario no acierta, el programa debe dar pistas por cada dígito de la contraseña:

  • En caso de que el dígito esté en donde debería estar, se coloca un * como pista
  • En caso de que el dígito sea parte de la contraseña, pero no esté en la posición correcta, se va a indicar con un _
  • Finalmente, si el dígito no forma parte de la contraseña entonces se indica con un espacio en blanco

Cuando el usuario acierte la contraseña se debe indicar el número de intentos.

Veamos cómo implementar este juego en Mastermind en Java; será muy fácil y entretenido.

Generación de contraseña aleatoria

Comencemos viendo el método que va a generar la contraseña aleatoria que el usuario debe adivinar. Se ve así:

Es una función que recibe un parámetro indicando si la contraseña debería contener repetidos, en caso de que no, generamos un nuevo carácter aleatorio mientras ese ya exista.

Como ves, la cadena aleatoria solo tendrá dígitos del 0 al 9 según la muestra de la línea 2.

El método también recibe un argumento indicando la longitud deseada de la contraseña.

Preguntar al usuario preferencias para Mastermind en Java

Ahora veamos los métodos que sirven para obtener las preferencias del usuario. En primer lugar vamos a preguntarle si la contraseña puede contener caracteres repetidos.

En segundo lugar vamos a ver un método para obtener la suposición del usuario, es decir, la contraseña que cree que es.

Para todo esto vamos a usar un Scanner en Java.

Estamos separando todo en métodos así la programación será más sencilla.

Generación de pistas para el usuario

Otro método importante es aquel para obtener las pistas y mostrarlas al usuario, es decir, obtener una cadena que tendrá un asterisco, guión bajo o espacio en blanco.

Para ello he diseñado el siguiente método que recibe la contraseña original y verifica. Al inicio declaro una cadena vacía que contendrá las pistas; después simplemente recorro la cadena y compruebo las tres opciones posibles:

De este modo al final tendremos una cadena con pistas.

Comenzar juego

Y finalmente veamos cómo se hace el loop o ciclo para jugar, además de los intentos en el método Main:

Utilizamos los métodos mencionados anteriormente y hacemos un ciclo infinito en la línea 13. Después, comprobamos si lo que el usuario ingresó coincide con la contraseña usando el método equals en Java.

Cuando el usuario acierta, se indican los intentos. En caso de que no acierte, se suma el número de intentos y se vuelven a obtener las pistas para la suposición que fue brindada por el usuario,

Mastermind en Java – Juego completo

Ahora veamos el código completo poniendo juntos todos los métodos. Queda como se ve a continuación:

Si quieres puedes ejecutarlo directamente en este enlace: jugar en línea.

Yo lo he jugado y probado un poco, aquí mis resultados:

Mastermind en Java - Ejecución del juego por consola

Mastermind en Java – Ejecución del juego por consola

Conclusión

Dejo algunos enlaces de interés. Te invito a ver más tutoriales sobre Java o ver el código fuente de videojuegos.


Estoy disponible para trabajar en tu proyecto o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.
Si el post fue de tu agrado muestra tu apoyo compartiéndolo, suscribiéndote al blog, siguiéndome o realizando una donación.

Suscribir por correo

Ingresa tu correo y recibirás mis últimas entradas sobre programación, open source, bases de datos y todo lo relacionado con informática

Únete a otros 1,355 suscriptores


parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

0 Comentarios

Deja un comentario

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

A %d blogueros les gusta esto: