2013-03-28 53 views
0

所以在我的程序中,我試圖將幾個不同的classse合併到我的主程序中,我正在編寫代碼。將'看不見的'字符改爲字母,hang子手遊戲

我與其他類一起被給予的是什麼

Dictionary() { 
     dictionary = new String[NUMBER_OF_WORDS]; 
     Scanner inputStream = null; 
     try { 
      inputStream = new Scanner(new File(FILE_NAME)); 
     }catch (FileNotFoundException e) { 
      System.out.println("Dictionary class cannot find file \"dictionaryData.txt\"."); 
      System.out.println("Please make sure that the file is in the project folder."); 
      System.exit(0); 
     } 
     for (int i = 0; i < NUMBER_OF_WORDS; i++) { 
      dictionary[i] = inputStream.next(); 
     } 
    } 

    public String getRandomWord(){ 
     Random generator = new Random(); 
     String temp = new String(); 
     temp += dictionary[generator.nextInt(NUMBER_OF_WORDS)]; 
     return temp; 
    } 

    public boolean find(String word) { 
     int count = 0; 
     int lowerIndex = 0; 
     int upperIndex = NUMBER_OF_WORDS - 1; 
     int middleIndex; 
     while(lowerIndex <= upperIndex){ 
      middleIndex = (lowerIndex + upperIndex)/2; 
      count++; 
      if(word.equalsIgnoreCase(dictionary[middleIndex])) { // found it 
       return true; 
      } 
      else if (word.compareToIgnoreCase(dictionary[middleIndex]) < 0) { // word smaller than middle 
       upperIndex = middleIndex - 1; 
      } 
      else { // word is larger than middle 
       lowerIndex = middleIndex + 1; 
      } 
     } 
     return false; 
    } 
} 

WordHider

 WordHider() { 
     secretWord = new String(); 
     wordMask = new String(); 
    } 

    public String getWordMask() { 
     return wordMask; 
    } 

    public String getSecretWord() { 
     return secretWord; 
    } 

    public void setSecretWord(String newSecretWord) { 
     secretWord = newSecretWord.toLowerCase(); 
     if (secretWord.length() > 0) { 
      wordMask = HIDE_CHAR; 
      for (int i = 1; i < secretWord.length(); i++) { 
       wordMask += HIDE_CHAR; 
      } 
     } 
    } 

    public boolean isHiddenWordFound() { 
     for (int i = 0; i < wordMask.length(); i++) { 
      if(wordMask.charAt(i) == HIDE_CHAR.charAt(0)) { 
       return false; 
      } 
     } 
     return true; 
    } 
    public int revealLetter(String letter) { 
     int count = 0; 
     String newFoundWord = ""; 
     if (letter.length() == 1) { 
      for (int i = 0; i < secretWord.length(); i++) { 
       if ((secretWord.charAt(i) == letter.charAt(0)) 
         && (wordMask.charAt(i) == HIDE_CHAR.charAt(0))) { 
        count++; 
        newFoundWord += letter; 
       } 
       else { 
        newFoundWord += wordMask.charAt(i); 
       } 
      } 
     } 
     wordMask = newFoundWord; 
     return count; 
    } 
} 

,並使用這些類,我必須拿出代碼,看起來像這樣:

Word: ********** Guesses Left: 5 
Enter your guess: a 
Miss! 
Word: ********** Guesses Left: 4 
Enter your guess: e 
Miss! 
Word: ********** Guesses Left: 3 
Enter your guess: i 
Word: i**i*i**** Guesses Left: 3 
Enter your guess: o 
Word: i**i*i*o** Guesses Left: 3 

並且我得到了一些關於這個問題,

1)我有一個dictionaryData.text,我得到了,必須在我的代碼中實現 。它包含一個81000字的列表,而不是 確定如何讓我的程序識別它。 Dictionary類 找不到文件「dictionaryData.txt」。請確保文件 位於項目文件夾中。 ^我得到這個錯誤,當我嘗試並打印 隨機字

2)如何讓我的程序來改變一個單詞的字母 星(隱藏字)

3)把它全部在一個循環?

+1

什麼是「FILE_NAME」?你的'dictionaryData.txt'文件在哪裏?同時提出一個問題。 – Smit

+0

dictionaryData.txt是一個完整的單獨文件我有 – tawnpawt

+0

我問第一個問題,因爲你說'我不知道如何讓我的程序識別它' – Smit

回答

0

缺少Dictionary類和WordHider類的部分。不過,我會盡力回答你的問題。

1)就像我說的,你錯過了Dictionary類的一部分。您合併類是這樣的:

Dictionary dictionary = new Dictionary(); 
String word = dictionary.getRandomWord(); 

2)所示:

wordHider.setSecretWord(word); 

3)我不知道什麼是「它」是的,但肯定的,你的用戶要猜一個字母。然後你必須檢查這封信是否在單詞中。像這樣:

wordHider.revealLetter(letter); 

然後,你必須顯示該單詞並讓用戶猜測另一個字母。這個猜測/檢查/顯示必須循環。