在基于文本的刽子手游戏中打印字母

时间:2012-05-23 20:34:59

标签: java arrays text

所以我试图制作一个刽子手游戏,它会从一个单词文件中生成一个随机单词,要求用户输入一个字母,然后翻阅该单词并将字母打印出来或打印出来a" _"。我知道我的"对不起没找到匹配"现在是不正确的,但是到目前为止打印这个词的时候,我无法保持猜到的最后一个正确的字母

    import java.util.Scanner;
    import java.util.Random;
    import java.io.*;
    public class hangman

    {
public static void main(String args[])
{

    Scanner hangman = null; 

    try 
    {
        // Create a scanner to read the file, file name is parameter
            hangman = new Scanner (new File("C:\\Users\\Phil\\Desktop\\hangman.txt"));
        } 
    catch (FileNotFoundException e) 
        {
        System.out.println ("File not found!");
        // Stop program if no file found
        System.exit (0);
        }



    String[] list = new String[100];
    int x = 0;

    while(hangman.hasNext())
    {
        list[x] = hangman.nextLine();
        x++;
    }

    Random randWord = new Random();
    String word = "";
    int wordNum = 0;
    boolean stillPlaying = true;

    wordNum = randWord.nextInt(12);
    word = list[wordNum];
    System.out.println("The word has "+word.length()+" letters");

    Scanner letter = new Scanner(System.in);
    String guess = "";

    while(stillPlaying = true)
    {           

        System.out.println("Guess a letter a-z");
        guess = letter.nextLine();
        for(int y = 0; y<word.length(); y++)
        {
            if(word.contains(guess))
            {
                if(guess.equals(word.substring(y,y+1)))
                {
                    System.out.print(guess+" ");
                }
                else
                    System.out.print("_ ");
            }
            else
            {
                System.out.println("Sorry, no matches found");
            }
        }
    }



}

}

1 个答案:

答案 0 :(得分:0)

你可能想要一个加法数组。即你的char数组是100个字符长,所以你可以使另一个数组长100个项目。第二个数组可以包含0和1。最初将它全部设置为0,如果位置array2 [x]中的字母被猜到,则将值设置为1.这将允许您在第二个数组上使用for循环,

 for (int i = 0; i < sizeof(array2); i++){
     if (array2[i] == 0)
          print "_";
     else 
          print stringArray[i]
}

以上可能不是正确的代码,但想法应该在那里,你只需使用相同大小的另一个数组来跟踪字母,看看它们是否被猜到或没有猜到(1或0)。我希望这有帮助

对不起,这个解决方案在C中,我没有看到导入,或标记我的第一次阅读。

array2只是一个整数数组,你可以访问类似于字符串数组的元素。

for(int i = 0; i < finalString.length; i++){
    if (array2[i] == 0){
        copy "_" to finalString position i;
    }
    else {
        copy stringArray position i to finalString position i;
    }

}
Now you can print finalString and it should show the proper string with _ and letters!