2012-05-23 102 views
0

所以我試圖做一個hang子手遊戲,它會從單詞文件生成一個隨機單詞,要求用戶輸入一個字母,然後通過該單詞並打印該字母它出現或打印「_」。我知道我的「對不起,沒有找到匹配」現在的問題是不正確的,但我有麻煩能夠守在原地猜當我打印的字到目前爲止最後一個正確的字母在基於文本的hang子手遊戲中打印字母

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"); 
      } 
     } 
    } 



} 

}

回答

0

你可能會喜歡添加數組。即您的char數組長度爲100個字符,因此您可以創建另一個數組100個項目。第二個數組可以包含0和1。最初,它都設置爲0的,如果在位置數組2 [X]信猜測,然後將該值設置爲1。這將讓你使用第二陣列上環,

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! 
+0

好了,所以這肯定又近了一步是,但不是打印在正確的空間信,程序打印時發生的指數,其中環是目前 – user1413549

+0

在for循環中使用的信一個存儲正確字符串的數組,一個存儲值爲0/1的數組(以檢查該字母是否被猜測),然後是另一個數組來存放打印字符串。 在for循環中,將_和字母複製到第三個數組並打印出來。 例如 我把代碼放到答案中,因爲它看起來不好寫在這裏。 – user1399238