我想用Java做一个Hang子手游戏,但是我在互联网上发现的大部分都是用while循环,但是因为这是chatbot的一部分,所以我需要它与if语句,但它不起作用。它正确地抓住第一个单词,发送6个短划线,但是每个猜测都是“错误的”,并且生活会消失。有谁知道我做错了什么?提前致谢!爪哇试图制作Hang子手
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 void。 Hang子手检查是否已经猜到了这封信。如果没有,请检查该字母是否在秘密字词中,并向用户显示猜出的字母。如果它不在秘密词中,请移除生命。如果生命是0,结束游戏。
PS。是的,我知道,我使用的是字符串而不是布尔值,但它是一样的,我暂时用它来测试这是否是问题,嘿。
编辑:这不是同一个问题。改变了这一行代码后,问题仍然存在。
那么,为什么我会下降?我只展示了必要的代码,解释了问题并解释了它应该做的事情。我没有加上感谢或问候。我遵循所有规则。我认为这不值得投票。 –
在你的letterConversion()方法改变了秘密和字母的比较 –
@KevinEsche这并没有解决它,仍然是同样的问题! :(感谢您的输入,尽管如此。 –