- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试用 Java 制作一个 Hangman 游戏,但我在互联网上找到的大多数游戏都带有 while 循环,但由于这是聊天机器人的一部分,我需要它与 if 语句一起使用,但它不是在职的。它正确地捕获了第一个单词,发送了 6 个破折号,但每次猜测都是“错误的”,生命就这样结束了。有谁知道我做错了什么?提前致谢!
private static String hangmanStarted = "0";
private static String hangmanInitialized = "0";
private static String hangmanSecret = "";
private static int hangmanLives = 10;
private void cmdHangman() {
if (hangmanStarted.equals("0")) {
try {
secretWord();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
hangmanStarted = "1";
sendMessage("Hangman has started!\nType: ''.guess letter''\nto guess a letter!");
}
}
private void cmdGuess() {
if (hangmanStarted.equals("1")) {
String input = lastMsg.replace("[^a-zA-Z]", "");
input = input.replace("guess", "");
input = input.toLowerCase();
try {
Hangman(input);
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void Hangman(String input) throws IOException {
StringBuilder guessedLetters = new StringBuilder();
String dashes = secretDashes();
if (guessedLetters.toString().contains(input)) {
sendMessage("This word is already guessed");
} else {
if (hangmanSecret.contains(input)) {
guessedLetters.append(input);
if (hangmanSecret.equals(letterConversion(hangmanSecret, secretDashes(), input))) {
sendMessage("You win!");
hangmanInitialized = "0";
hangmanStarted = "0";
guessedLetters.delete(0, guessedLetters.length());
} else {
guessedLetters.append(input);
sendMessage("Letter was found!\nWord: " + letterConversion(hangmanSecret, secretDashes(), input));
}
} else {
guessedLetters.append(input);
hangmanLives = hangmanLives - 1;
sendMessage("Word: " + dashes + "\nLives: " + hangmanLives);
if (hangmanLives == 0) {
sendMessage("GAME OVER: You are dead.");
hangmanInitialized = "0";
hangmanStarted = "0";
hangmanLives = 10;
guessedLetters.delete(0, guessedLetters.length());
}
}
}
}
public static void secretWord() throws FileNotFoundException {
if (hangmanInitialized.equals("0")) {
hangmanInitialized = "1";
Scanner infile = new Scanner(new FileReader("hangWords.txt"));
hangmanSecret = infile.next();
infile.close();
}
}
public static String secretDashes() throws FileNotFoundException {
StringBuilder dashes = new StringBuilder();
for (int count = 0; count < hangmanSecret.length(); count++) {
dashes.append('-');
}
return dashes.toString();
}
public static String letterConversion(String secret, String dashes, String letter) {
StringBuilder conversion = new StringBuilder();
for (int index = 0; index < secret.length(); index++) {
char secretChar = secret.charAt(index);
secret = String.valueOf(secretChar);
char letterChar = letter.charAt(index);
if (secret.equals(letter))
conversion.setCharAt(index, letterChar);
dashes = conversion.toString();
}
return dashes;
}
它应该做什么:
我使用命令启动 Hangman。我通过猜测命令猜测字母。猜测命令的输入被转发到 Hangman void。刽子手检查这封信是否已经猜到。如果不是,请检查该字母是否在 secret 单词中,并向用户显示猜测的字母。如果不在密语中,就移除一条生命。如果生命为0,则结束游戏。
PS。是的,我知道,我使用的是字符串而不是 boolean 值,但这是同一件事,我暂时这样做是为了测试这是否是问题所在,呵呵。编辑:这不是同一个问题。更改该行代码后,问题仍然存在。
最佳答案
代码中的这一行不正确:
if (secret == letter)
应该是:
if(secret.equals(letter))
因为您使用的是字符串。
关于Java 试图制作 Hangman,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36862227/
我正在上 C 编程入门类(class),我们被分配编写 Hangman程序。 在游戏中,计算机随机选择一个单词并显示它有多少个字母。用户必须通过输入他们认为可能存在于该单词中的字母来猜测该单词。此外,
我用 Java 创建了一个刽子手游戏。我不知道如何检查和更换它。一切正常,字符串字正确,游戏板也很好。因此,游戏板给我的单词长度为“_ _ _ _ _”,例如。 我的问题就是如何获取用户输入检查的字符
我正在尝试为我的大学制作一个 Hangman 程序,我需要一些帮助。经过一试,程序进展顺利。最后,您可以选择玩另一个游戏或停止程序,但它保持答案是"is",要求输入新单词。经过一番尝试后如何访问菜单。
我正在制作的 Hangman 游戏有以下 while 循环: while(amountOfGuessesLeft > 0 || !wordComplete){ System.out.p
我正在编写一个hangman 类,并且遇到了一个意外类型错误的小问题。此错误位于 this.hidden.charAt(i) = this.original.charAt(i); 中。任何帮助将不胜感
对于我的刽子手游戏,我希望有一堆错误消息来检查是否输入了多个字母、两次猜测同一个字母等。到目前为止我的完整代码: import java.awt.Color; import java.
我有一个 JAVA 作业,必须使用数组和循环创建一个 Hangman 程序。 用户1输入一个有效的单词(无数字或符号) 用户2可以尝试一次猜出整个单词,或者使用一个字母总共猜10次。最初,用户 2 必
我似乎有一个无法解决的问题,当用户为我的程序输入完整的单词时,它每次搜索字符时都会显示,而不是仅显示整个单词,表明他们猜对了。当用户输入整个单词时,如何让它只显示单词,而不是每次搜索字符时显示?感谢您
import java.util.*; public class Hangman { public static void main(String[] args) { Scanner
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
我对编程和 java 非常陌生(如你所见),并且确实陷入了编程刽子手的一个基本问题上。我的代码不是我所知道的最干净的,但我真的很想就我在逻辑上出错的地方提供一些意见。我的麻烦是让程序在每次猜测时正确输
我正在构建一个刽子手/猜词游戏,它使用数组来检查用户输入是否与单词中的字母匹配(他们试图猜测)。尝试跟踪用户正确猜测的次数(使用发生变量),但每当代码运行时,它都会计数两次。 所以我们假设这个词是“a
这个问题已经有答案了: How do I compare strings in Java? (23 个回答) 已关闭 7 年前。 我正在尝试用 Java 制作一个 Hangman 游戏,但我在互联网上
我正在开发一个刽子手游戏,但我想从数据库中选择一个随机单词。 数据库连接: $db_host = "127.0.0.1"; $db_user
我是 Java 的初学者,需要为 Java 最终项目拼凑一个应用程序。我想做刽子手(当时看起来很容易)。这对我来说非常困难。到目前为止,这是我的代码。 (将大约 10 个开源刽子手游戏放在一起真是令人
如何让我的 python hangman 游戏将变量 blanks 中的下划线替换为正确的字母(如果猜到的话)。 我有正确的 if 语句,但我不确定如何替换字母。 这是我尝试过的: def main(
我最近完成了 Javascript、CSS、HTML 的基础知识,并开始使用 jQuery。我决定我所知道的足以制作一个简单的刽子手游戏,所以我决定这样做。我已经完成了大部分,但是如果他们猜对了字母,
这是一个简单的刽子手游戏,我通过按钮制作了一个字母键盘,所以 onclick 它应该调用函数 checkLetter 来检查在要猜测的单词中选择的字母是否不运行,以及如何在用户单击按钮时删除按钮上的字
我正在用 C++ 为 Uni 评估开发 Hangman 游戏,但在用户键入字母后我无法显示隐藏的单词。所以我得到的单词显示为“_ _ _ _ _ _ _”,但是当我键入一个字母时,它不会将下划线替换为
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我是一名优秀的程序员,十分优秀!