Juego del ahorcado en Java

Hangman es un popular juego de adivinanzas de palabras en el que el jugador se esfuerza por construir una palabra perdida especulando una letra a la vez. Después de un cierto número de conjeturas fuera de base, el juego termina y el jugador pierde. El juego también termina cuando el jugador distingue con precisión todas las letras de la palabra perdida. La implementación de este juego en Java se muestra a continuación. 

Ejemplo:

Salida
Bienvenido al JUEGO DEL HANGMAN 
, juguemos el juego 
_ _ _ _ _ _ 
Su conjetura: 
Entrada : s
Salida
S no está presente en la palabra. 
_ _ _ _ _ _ 
Te quedan 4 intentos. 
Su conjetura: 
Entrada : m
Salida
M no está presente en la palabra. 
_ _ _ _ _ _ 
Te quedan 3 intentos. 
Su conjetura: 
Entrada: d
Salida
D no está presente en la palabra. 
_ _ _ _ _ _ 
Te quedan 2 intentos. 
Su conjetura: 
Entrada : t
Salida
T está presente en la palabra.
T_ _ _ T_ 
Te quedan 2 intentos. 
Su conjetura: 
Entrada : o
Salida
O está presente en la palabra.
TO_ OT_ 
Te quedan 2 intentos. 
Su conjetura: 
Entrada : y
Salida
Y está presente en la palabra.
TOYOT_ 
Te quedan 2 intentos. 
Su conjetura: 
Entrada : a
Salida
A está presente en la palabra.
La palabra es: TOYOTA 
¡Bien jugado, lo hiciste!

Java es un dialecto de programación informática de propósito general que es concurrente, basado en clases, orientado a objetos y especialmente diseñado para tener la menor cantidad de dependencias posible. Java ha dedicado una biblioteca completa a los números aleatorios al ver su importancia en la programación del día a día. nextInt() , una función, se usa en el código de este artículo. Este juego es para principiantes que están aprendiendo a codificar en Java y para darles un breve resumen sobre el uso de strings, bucles y sentencias condicionales.
 

Comprender el juego
 

El jugador debe adivinar una palabra. Entonces, la pantalla de salida mostrará la cantidad de guiones que representan las letras que quedan por adivinar. Entonces el jugador adivinará una letra. Si esa letra está presente en la palabra, el programa reemplazará los guiones con la letra en cada lugar donde aparezca. Si la letra no está presente en la palabra, se reduce el número de líneas de vida (que consiste en un número finito de posibilidades). El jugador gana el juego tan pronto como haya adivinado correctamente todas las letras de la palabra.

Plan de juego:

El usuario debe comenzar por adivinar las letras que aparecen más en la palabra que son vocales ( a , e , i , o , u ). Aparte de las vocales, las otras letras más utilizadas son t , n , s , h , r , d y l .

Implementación del juego.

En el programa, se ha creado un Class Game en el que se crea una lista de strings que consta de palabras. En la lista de palabras, se elegirá una palabra al azar usando un módulo aleatorio ( java.util.Random ) para que el usuario adivine sus letras. Después de elegir la palabra, todas las letras se escriben en mayúsculas usando la función toUpperCase() y luego esas letras se reemplazan por guiones. El número máximo de conjeturas incorrectas permitidas en el juego es 5, si el usuario va más allá, perderá el juego. En el ciclo while a medida que el usuario comienza a adivinar las letras, las conjeturas correctas reemplazarán los guiones por letras correctas, mientras que las conjeturas incorrectas aumentarán la variable contando el número de conjeturas incorrectas en 1 .

  • La primera condición se utiliza para informar al usuario sobre las líneas de vida que quedan cuando el usuario ha adivinado la letra equivocada.
  • La segunda condición se usa para decirle al usuario que las letras ingresadas ya han sido adivinadas.
  • La tercera condición es verificar si la nueva letra adivinada está presente en la palabra o no, si son correctas, los guiones se reemplazan por las letras correctas.
  • Si la letra no está presente en la palabra, la línea de vida se reduce en 1.

El juego termina si se cumple alguna de las condiciones: 

  • El usuario ha adivinado la palabra completa correctamente.
  • Las líneas de vida del usuario han terminado. 
     

Java

// Java program to implement
// Hangman game
  
import java.util.Scanner;
import java.util.Random;
  
class Game {
  
    static Scanner input;
    public static void hangman()
    {
        input = new Scanner(System.in);
  
        // array of strings containing words
        String[] company = { "Maruti", "Tata", "Suzuki",
                             "Ducati", "Toyota" };
        System.out.println(
            "    Welcome to HANGMAN GAME    ");
  
        Random obj = new Random();
        int Ran_num = obj.nextInt(5);
  
        // takes input of the word
        String word = (company[Ran_num]);
        word = word.toUpperCase();
  
        // To show the word in underscores
        String word1 = word.replaceAll("[A-Z]", "_ ");
  
        // play the game
        System.out.println("let's play the game");
        startGame(word, word1);
    }
    public static void startGame(String word, String word1)
    {
        // total guesses
        int guess_ = 0;
  
        // number of wrong guesses
        int wrong = 0;
  
        // for each guess
        String guess;
  
        // stores the guessed letter
        char letter;
  
        // stores if the letter was
        // already guessed
        boolean guessescontainsguess;
        String guesses = "";
        boolean guessinword;
  
        // while loop starts here
        while (wrong < 5 && word1.contains("_")) {
  
            System.out.println(word1 + "\n");
            int temp = 5 - wrong;
            if (wrong != 0) {
  
                // for picture 1
                System.out.println("You have " + temp
                                   + " guesses left.");
            }
  
            System.out.print("Your Guess:");
  
            // takes guess input
            guess = input.nextLine();
  
            // converts to uppercase
            // for comparison
            guess = guess.toUpperCase();
  
            // gets the first letter
            // as guessed letter
            letter = guess.charAt(0);
  
            guessescontainsguess
                = (guesses.indexOf(letter)) != -1;
  
            // stores every letter
            // guessed in guesses
            guesses += letter;
  
            // converts to uppercase for
            // comparison
            letter = Character.toUpperCase(letter);
            System.out.println();
  
            // if letter already guessed
            if (guessescontainsguess == true) {
  
                // already guessed letter
                System.out.println("You ALREADY guessed "
                                   + letter + ". \n");
            }
  
            // guessed letter is in the word
            guessinword = (word.indexOf(letter)) != -1;
  
            // if statement begins
            if (guessinword == true) {
  
                // print the letter
                System.out.println(
                    letter + " is present in the word.");
                System.out.print("\n");
  
                // find the letter positions
                // replace dashes with those
                // letter at valid positions
                for (int position = 0;
                     position < word.length(); position++) {
  
                    // guessed letter is equal to
                    // letter at position in word
                    // and word1 has previously does not
                    // have that letter
                    if (word.charAt(position) == letter
                        && word1.charAt(position)
                               != letter) {
  
                        word1 = word1.replaceAll("_ ", "_");
                        String word2;
                        word2 = word1.substring(0, position)
                                + letter
                                + word1.substring(position
                                                  + 1);
                        word2 = word2.replaceAll("_", "_ ");
                        word1 = word2;
                    }
                }
            }
  
            // if statement ends, else if begins
            else {
  
                // prints
                // wrong = wrong + 1, after every
                // wrong answer
                System.out.println(
                    letter
                    + " is not present in the word.");
                wrong++;
            }
  
            // guess_ = guess_ + 1, after every
            // attempt
            guess_++;
  
        } // while loop ends
  
        // if the lifelines finishes
        if (wrong == 5) {
            System.out.println(
                "YOU LOST!, maximum limit of incorrect guesses reached.");
        }
        else {
  
            // when solved
            System.out.print(
                "The word is: " + word1
                + "\n Well Played, you did it!!");
        }
    }
    public static void main(String[] args)
    {
        // play hangman game
        hangman();
    }
}

Producción:

Hangman Game

Nota: Este es un juego interactivo, así que juega en la consola.

Publicación traducida automáticamente

Artículo escrito por shardul_singh_tomar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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