【问题标题】:Java HangMan GameJava 刽子手游戏
【发布时间】:2016-05-24 20:22:50
【问题描述】:

我正在做这个刽子手项目,我快完成了,但我无法让输出显示所有正确的字母来代替下划线,而是只显示刚刚输入的正确字母.请帮忙。

import java.util.Random;
public class HangManGames
{

    public static int i;
    public static int errors = 0;
    public static String wordList[] = {"alabama","alaska","arizona","arkansas","california","colorado","connecticut","delaware","florida","georgia","hawaii","idaho","illinois","indiana","iowa","kansas","kentucky","louisiana","maine","maryland","massachusetts","michigan","minnesota","mississippi","missouri","montana","nebraska","nevada","new hampshire","new jersey","new mexico","new york","north carolina","north dakota","ohio","oklahoma","oregon","pennsylvania","rhode island","south carolina","south dakota","tennessee","texas","utah","vermont","virginia","washington","west virginia","wisconsin","wyoming"};
    public static boolean guessLetter;

    public static String mysteryWord;
    public static int mysteryWordLength;
    public static int remainingLetters;
    StringBuffer buffer = new StringBuffer();


    public static void Start()
    {
        System.out.println("      _______   ");
        System.out.println("     |       |");
        System.out.println("     |");
        System.out.println("     |");
        System.out.println("     |");
        System.out.println("     |");
        System.out.println("     |");
        System.out.println("_____|_____ ");
    }
    public static void Error1()
    {
        System.out.println("      _______ ");
        System.out.println("     |       |");
        System.out.println("     |      ( )");
        System.out.println("     |       ");
        System.out.println("     |");
        System.out.println("     |");
        System.out.println("     |");
        System.out.println("_____|_____ ");
    }
    public static void Error2()
    {
        System.out.println("      _______ ");
        System.out.println("     |       |");
        System.out.println("     |      ( )");
        System.out.println("     |       |");
        System.out.println("     |       |");
        System.out.println("     |       |");
        System.out.println("     |");
        System.out.println("_____|_____ ");
    }
    public static void Error3()
    {
        System.out.println("      _______ ");
        System.out.println("     |       |");
        System.out.println("     |      ( )");
        System.out.println("     |       |");
        System.out.println("     |       |");
        System.out.println("     |       |");
        System.out.println("     |      /");
        System.out.println("_____|_____ ");
    }
    public static void Error4()
    {
        System.out.println("      _______ ");
        System.out.println("     |       |");
        System.out.println("     |      ( )");
        System.out.println("     |       |");
        System.out.println("     |       |");
        System.out.println("     |       |");
        System.out.println("     |      / \\");
        System.out.println("_____|_____ ");
    }
    public static void Error5()
    {
        System.out.println("      _______ ");
        System.out.println("     |       |");
        System.out.println("     |      ( )");
        System.out.println("     |       |");
        System.out.println("     |      /|");
        System.out.println("     |       |");
        System.out.println("     |      / \\");
        System.out.println("_____|_____ ");
    }
    public static void Error6()
    {
        System.out.println("      _______ ");
        System.out.println("     |       |");
        System.out.println("     |      ( )");
        System.out.println("     |       |");
        System.out.println("     |      /|\\");
        System.out.println("     |       |");
        System.out.println("     |      / \\");
        System.out.println("_____|_____ ");
    }
     public static void main(String args[])
    {
        do{
            Random random = new Random();
            int index = random.nextInt(50);
            mysteryWord = wordList[index]; 

            mysteryWordLength = mysteryWord.length(); 

            remainingLetters = mysteryWordLength;
            String result = "";
            for (i = 0; i < mysteryWordLength; i++) 
                result += "_ ";
            System.out.println(result);  
            System.out.println(" ");
            while (remainingLetters != 0 && errors < 6) {
                 if (errors == 0){
                    System.out.println("");
                    Start();
                    System.out.println("");}
                 else if (errors == 1){
                    System.out.println("");
                    Error1();
                    System.out.println("");}
                 else if (errors == 2){
                    System.out.println("");
                    Error2();
                    System.out.println("");}
                 else if (errors == 3){
                    System.out.println("");
                    Error3();
                    System.out.println("");}
                 else if (errors == 4){
                    System.out.println("");
                    Error4();
                    System.out.println("");}
                 else if (errors == 5){
                    System.out.println("");
                    Error5();
                    System.out.println("");}
                 else if (errors == 6){
                    System.out.println("");
                    Error6();
                    System.out.println("");} 


                 System.out.print("Guess a letter:"); 
                 char guess = Expo.enterChar();
                 guessLetter = (mysteryWord.indexOf(guess)) != -1; 



                 if (guessLetter == false) { 
                       System.out.println("Sorry, bad guess"); 
                       errors++; 
                       System.out.print(result);

                    } else {   
                       System.out.println("Great guess!"); 
                        for (i = 0; i< mysteryWordLength; i++) { 
                           if (mysteryWord.charAt(i) == guess) 
                               System.out.print(guess);
                            else {

                               remainingLetters--;
                               System.out.print("_");
                               System.out.print(result.charAt(i));

                            }                           
                       }                        
                 }         
            } 
            }while(remainingLetters != 0 && errors < 6);

        System.out.println();
        System.out.println();
        if (remainingLetters == 0 && errors <6)
        {
            System.out.print("YAY! You Win!"); 
            System.out.println("The word was " + mysteryWord); 
        }else  
        {
            System.out.println("Game Over! You Lose!");
            System.out.println("The word was " + mysteryWord); 
        }
    }     

}

【问题讨论】:

  • 您需要跟踪单词的哪些部分已经被猜到。就像另一个变量 mysteryWordGuessed 一样,您不断替换猜测的字母并将其用于输出。

标签: java bluej


【解决方案1】:

您应该创建一个名为 lettersGuessed 的变量,该变量最初是一个空字符串 ""ArrayList&lt;Character&gt;. 然后在每次猜测之后,或者这一行 char guess = Expo.enterChar(); 将字符 guess 添加到您的 ArrayList 或字符串(如果您不熟悉数组列表,我建议使用字符串)所以lettersGuessed += guess; 然后System.out.println("Letters guessed: " + lettersGuessed)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 2019-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    相关资源
    最近更新 更多