java中游戏刽子手的逻辑

时间:2014-04-23 02:33:28

标签: java logic

我对如何处理这种情况有疑问。我对编码还是比较新的。对于我的班级,我们的老师正在让我们制作刽子手的经典游戏,我陷入困境。我很好奇,看看是否有人可以帮我解决这种情况。

我遇到的问题是:

 The secret word is: hangman
 Your progress: -------
 Wrong guesses:
 Guesses remaining: 10
 Number of words possible: 7359
 Guess a letter: e

你会如何找到剩下的可能字数?我们获得了一本我们读入的字典,并从中获取了单词的数量。几乎可以用任何东西来解决它。问题是,每当你猜出一个字符正确时,列表就会像这样缩小:

 The secret word is: hangman
 Your progress: -an--an
 Wrong guesses: eix
 Guesses remaining: 7
 Number of words possible: 3
 Guess a letter: g

希望你们能给我一些想法!

谢谢!

2 个答案:

答案 0 :(得分:2)

让我们说你的字典单词存储在某种集合中 - 比如List<String>。我们还假设你知道如何构建一个代表当前猜测状态的字符串(例如你的例子中的"-an--an")。

你需要做的就是写一个这样的函数:

static boolean checkMatch(String candidateWord, String currentGuess) {
    return ...;
}

您的功能需要实现此逻辑:

  • 如果candidateWordcurrentGuess的长度不同,请返回false。否则,
  • 检查candidateWord的每个字母对着同一位置currentGuess的字母
  • 如果currentGuess的字母是短划线'-',或者如果它与同一位置的candidateWord字母匹配,请转到下一个字母
  • 否则,请返回false
  • 一旦到达单词的末尾,请返回true

使用此功能,您可以获取当前猜测,针对每个字典单词进行检查,并在每次checkMatch返回true时增加计数。这将为您提供潜在匹配的数量。

答案 1 :(得分:0)

最糟糕的解决方案可能是使用正则表达式并在一次有效猜测后查看每个单词。

为了使这更好一点,也许使用length()修剪一点......


哦,保留一组当前有效的单词。 (所以只缩小集合而不是遍历每个单词)