2013-03-28 27 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); 

然后,你必须显示该单词并让用户猜测另一个字母。这个猜测/检查/显示必须循环。