Java初学者子手游戏

时间:2018-12-07 13:51:34

标签: java

是否有人对我猜下正确的字母后如何将下划线更改为正确的字母有任何想法?这是我设置的将答案显示为下划线的方法:

private void printWordStatus() 
{
    for ( int i = 0; i < answer.length(); i++)
    {
        String answer = this.answer;
        String word = "";
        char c = answer.charAt(i);

        if (c == ' ')
        {
            word += c;
        }else 
        {
            word += " _ ";
        }
        System.out.print(word);
    }

}

让我们说答案是“星期一”,此方法将产生“ _ _ _ _ _ _”,并且它将通过不计算不正确的猜测来识别何时键入正确的字母。如果他们正确地猜出了M,N和Y,我只是不知道如何使下划线显示“ M _ N _ _ Y”。

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

您可以容纳一个带有单词长度的布尔数组。 让我们将其称为guessed_letters,当您将其全部初始化为false时。 每次用户猜出一个字母时,都将布尔数组上的值设置为True。

然后在打印循环中,可以通过简单地if(guessed_letters[i])检查每个索引是否被猜到。如果猜到了您要打印的字母,否则您将打印_

答案 1 :(得分:0)

我相信您可以在地图上大声疾呼。并标记每个猜出的字母。然后只需使用布尔值来表示_或字符。 希望这就是您所需要的。

如果需要更多,请告诉我。

答案 2 :(得分:0)

使用tryALetter方法,您可以引入已在列表中经过测试的平均字母。  例如,您可以配置更多:如果列表中测试的字母超过3-4个,则不在->> Game over一词中。

public List<Char> letterTested;
    private void tryALetter(Char oneLetter){
          for ( int i = 0; i < answer.length(); i++){
                     if (oneLetter == answer.charAt(i){
                           letterTested.add(oneLetter); 
                     }
          }
    }    

    private void printWordStatus() 
        {
            for ( int i = 0; i < answer.length(); i++)
            {
                String answer = this.answer;
                String word = "";
                char c = answer.charAt(i);

                if (c == ' ')
                {
                    word += c;
                }else 
                { /* here you test if the letter is in the list 
                   if it is in the list, you print the letter, not the "_" */
                  for(int j = 0; j < letterTested.lenght(); j++){
                       if (c == letterTested.get(j)){
                                word += c;
                    } else {
                       word += " _ ";
                    }
                  }
                }
                System.out.print(word);
            }

        }