gpt4 book ai didi

Java 试图制作 Hangman

转载 作者:行者123 更新时间:2023-11-30 02:57:23 25 4
gpt4 key购买 nike

我正在尝试用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com