【发布时间】:2021-02-16 16:36:12
【问题描述】:
我为我的一个 Java 课程作业创建了这个刽子手游戏。但是我的代码存在许多问题:
- 即使玩家猜对了所有字母,我似乎也无法跳出循环
- 我没有进入询问玩家是否要再试一次的部分。
- 我想创建一种方法来加载从列表中选择一个单词并将其转换为单个字符,但我不知道该怎么做。 非常感谢您的帮助: 这是我的代码:
import java.util.Scanner;
import java.util.Random;
public class test {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
Random random = new Random();
String wordList[] = {"AARDVARK", "BANANA", "ORBITAL", "LANDSCAPE","BEACHES", "SCIENCE", "PRODUCTION"};
boolean play = true;
while(play = true){
System.out.println("You are playing game of hangman. Can you guess the word? ");
char [] selectedWord = wordList[random.nextInt(wordList.length)].toCharArray(); // java -> j,a,v,a
char [] playerGuess = new char[selectedWord.length]; // "* * * * * * * *"
for(int i=0; i<playerGuess.length; i++){ // Assign empty dashes at start "* * * * * * * *"
playerGuess[i] = '*';
}
System.out.println(selectedWord);
boolean correctGuess = true;
int numberOfGuesses = 0;
while(correctGuess = true ){
addSpace(playerGuess);
System.out.println("Enter your next choice: ");
char letterInput = input.nextLine().charAt(0);
numberOfGuesses = numberOfGuesses + 1 ;
if(letterInput == '*'){
correctGuess = true;
play = false;
} else{
for(int i=0; i<selectedWord.length; i++){
if(selectedWord[i] == letterInput){
playerGuess[i] = letterInput;
}
}
if(checkGuess(playerGuess)){
correctGuess = true;
System.out.println("You guessed the word! You guessed " + numberOfGuesses + " times.");
}
}
}
if (playerGuess.equals(selectedWord))
break;
System.out.println("Do you want to play again? (yes/no) ");
String playAgain = input.nextLine();
if(playAgain.equals("no")){
play = false;
}
}
System.out.println("Game Over!");
}
public static boolean checkGuess(char[] word){
boolean guessed = true;
for(int i=0; i < word.length; i++){
if(word[i] == '*'){
guessed = false;
}
}
return guessed;
}
public static void addSpace(char [] word){
for(int i=0; i < word.length; i++){ // Assign empty dashes at start "* * * * * * * *"
System.out.print(word[i] + " ");
}
System.out.println();
}
}
【问题讨论】:
-
play = true这是一个分配,而不是比较。play == true是比较 -
谢谢,我把它改成 play == true,但我仍然卡在循环中
-
答案已更新。