【问题标题】:Hangman Java Game Logic刽子手 Java 游戏逻辑
【发布时间】:2014-05-06 16:59:30
【问题描述】:

我正在学习 java,我正在编写一个客户端-服务器刽子手游戏,客户端与服务器联系,服务器用随机词响应。然后客户用星号覆盖这个词。例如,如果单词是 java,用户将看到 ****。然后用户猜测一个字母,我坚持的部分是当用户猜错字母时剩余的猜测数量如何减少。比如:

客户端将单词“NEW”发送到服务器,服务器以随机单词的长度进行响应,程序将其转换为星号。假设这个词是“java”。

****

用户猜字母“a”。 然后服务器会响应如下内容:

真的

真的
这是theValue的值

我编写程序的打印方式:
*a*a

这就是我想要的,但是,我的程序减去了两次猜测,因为服务器返回的 4 个布尔值中有 2 个是假的,即使用户猜到了一个正确的字母。有没有办法查看所有布尔值,如果没有一个是真的,那么减少猜测?

代码如下:

public void evaluateGuess() {
    try {         
      for (int i = 0; i < wordAsItIs.length(); i++) {
            String word = in.readLine();     
            boolean theValue = Boolean.parseBoolean(word);
            ArrayList<Boolean> booleans = new ArrayList<Boolean>();
            booleans.add(theValue);
            System.out.println(booleans);

           if (booleans.contains(true) && wordAsItIs.charAt(i) == '*') {
               wordAsItIs.setCharAt(i, playersGuess);
           }

           if (!booleans.contains(true))
               guessesRemaining--;
      }
      displayGame();

    } catch (IOException e) {
      e.printStackTrace();
    }
  }

【问题讨论】:

  • 使用布尔值来判断它是否被遗漏。一开始,初始化为假,如果一个是正确的声明它为真。如果为假,则在循环结束时减去未命中
  • @ZachSaucier 哦,有道理!非常感谢!

标签: java


【解决方案1】:

不知道您是否得到了问题的答案..但这可能会有所帮助。它来自我已经做过的类似于你正在做的事情:

public static char[] checkMethod(char[] checkArray, char letter, char[] word)
{
    boolean flag = false;

    for(int i=0; i<checkArray.length; i++)
    {
        if(word[i] == letter)
        {
            checkArray[i] = letter;     //checks if the letter guessed exists in the board
            flag = true;
        }
    }

    if(flag == true)
        System.out.println("Good job!\n");  // if guess is right
    else 
    {
        counter--;
        if(counter > 0)     // counter for wrong guesses
            System.out.println("Wrong! You have " + counter + " guesses left");
    }
    return checkArray;
}

计数器在public static int counter = 5; //maximum number of wrongs类外部声明的地方

希望对您有所帮助。

【讨论】:

    【解决方案2】:
    do {
    

    检查每个猜测的代码,基本上你的 for 循环在这里

    } while (booleans == false);
    

    只要一个 true 出现,循环就会退出。然后,如果它在单词期间退出,则可以不减去该值。如果它没有退出,那么您将需要另一个条件。我需要查看更多您的代码(变量声明、构造函数等),以便为您提供游戏的特定代码。

    【讨论】:

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