【问题标题】:changing 'invisible' chaaracters to letters, game of hangman将“隐形”字符更改为字母,刽子手游戏
【发布时间】:2013-03-28 21:39:11
【问题描述】:

所以在我的程序中,我试图将几个不同的类合并到我正在编写代码的主程序中。

我得到了什么

    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,我得到了并且必须实现 到我的代码中。它包含一个 81,000 个单词的列表,我没有 确定如何让我的程序在那里识别它。字典类 找不到文件“dictionaryData.txt”。请确保文件 位于项目文件夹中。 ^ 当我尝试打印一个 随机词

2) 我如何让我的程序将单词的字母更改为 星星(隐藏单词)

3) 把它全部放在一个循环中?

【问题讨论】:

  • 什么是FILE_NAME?您的 dictionaryData.txt 文件在哪里?一次只问一个问题。
  • dictionaryData.txt 是我拥有的一个完整的单独文件
  • 我问的是你所说的第一个问题im not sure how to have my program recognize its there
  • 好的,我得到了我的主程序 Program3,然后是 2 个其他类,Dictionary 和 WordHider。为了使 Dictionary 工作,它需要识别并找到我的文本文件 dictionaryData.txt
  • 我理解那部分。我要问的是你要传递给FILE_NAME 的字符串,如果该文件名是正确的并且位于你的 FILE_NAME 所说的位置,那么它将读取文件,否则它将抛出 FileNotFoundEcxception。

标签: java methods character hidden


【解决方案1】:

Dictionary 类和 WordHider 类的部分内容缺失。不过,我会尽力回答您的问题。

1) 就像我说的,您缺少 Dictionary 类的一部分。你像这样合并这个类:

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

2) 像这样:

wordHider.setSecretWord(word);

3) 我不确定“它”是什么,但是是的,您的用户必须猜测一个字母。然后你必须检查字母是否在单词中。像这样:

wordHider.revealLetter(letter);

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

【讨论】:

    猜你喜欢
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多