陷入刽子手游戏

时间:2014-03-10 11:17:21

标签: java string

我目前正在学习Java编程,我们需要制作一个基本的Hangman游戏,没有图形界面,只需要主要的和更少的方法。

所以这就是事情:

我做了一个方法,允许我在不同的主题之间进行选择,每个主题上有5个单词或一组单词,然后它随机选择其中一个并将其分配给一个字符串变量“word”,一个i'我会一起工作。

然后有一个方法创建一个字符串“HiddenWord”,只需用'*'替换字符并保留字之间的空格。

问题在于我不知道如何输入字母“字母”,并在隐藏字中替换该字母,逐步解析隐藏字。

我会提供我的代码,但它是西班牙语,所以我会翻译一些关键词(你注意到我的英语技能真棒吗?)

HideWord方法(我认为这里没有问题,也许应该以其他方式完成单词之间的间距):

public String hideWord(String word)
{
    String hiddenWord ="";
    for(int i=0;i<word.length();i++)
    {
        if(word.charAt(i)==' ')
        {
            hiddenWord+=' ';
        }
        else
        {
            hiddenWord+='*';
        }
    }
    return hiddenWord;
}

我已故意删除main方法中无趣且容易的部分。

main ()
{

    Ahorcado objeto=new Ahorcado();

    //Example word, since the full code is really long

    String word = "Hello World";
    int life;


    String hiddenWord=objeto.hideWord(word);

    System.out.println("Game just Started\n");

    System.out.println(palabraOculta); //Hello world -> ***** *****

    char letter;

    boolean resolved=false;

    do
    {

        System.out.println("Input a letter");
        letter=objeto.teclado.next().charAt(0);

        //Intentionally left almost Blank because every try did a weird Pyramid thing or just crash
        for(int i=0;i<word.length();i++)
        {
            if(letter==word.charAt(i))
            {
            }
        }
        if(hiddenWord.equals(word))
        {
            resolved=true;
        }
        objeto.life--;
    }
    while(objeto.vidas>=0&&resolved==false);
}

嗯,就是这样,抱歉我的可怕语法和我可怜的Java,如果需要,我会提供更多部分代码。

2 个答案:

答案 0 :(得分:1)

一旦你发现一个字母在单词中,你应该做什么,只需替换你在原始单词中找到字母的索引中的*字符:

 for(int i=0;i<word.length();i++)
 {
     if(letter==word.charAt(i))
     {
         char[] wordCharsArray = hiddenWord.toCharArray();
         wordCharsArray[i] = letter;
         hiddenWord= String.valueOf(wordCharsArray);
     }
 }

我不确定但是可能有更有效的方法来替换字符串中的字符,但这应该对你有用。

答案 1 :(得分:0)

为了提高效率,我只想使用StringBuilder

    do{    
        System.out.println("Input a letter");
        letter=objeto.teclado.next().charAt(0);
        StringBuilder sb = new StringBuilder();
        for(int i=0; i<word.length(); i++){
             if(letter == word.charAt(i)){
                 sb.append(word.charAt(i));
             } else {
                sb.append(hiddenWord.charAt(i));
             }
        }
        hiddenWord = sb.toString();
        resolved = hiddenWord.equals(word);
        objeto.life--;
    } while(objeto.vidas>=0 && !resolved); //resolved == false could be simplified to !resolved