gpt4 book ai didi

java - 解决随机数游戏逻辑时遇到问题

转载 作者:行者123 更新时间:2023-12-02 11:17:19 24 4
gpt4 key购买 nike

我对java编程比较陌生。我目前正在开发一个迷你猜谜游戏,作为学习更多 Java 的项目。我遇到以下问题:

以下是我无法解决的 4 个主要问题。

  • 记录每个用户的答案(如果不正确)。
  • 如果用户是正确的,则在后续回合中跳过它们。
  • 当所有玩家都猜对了自己的数字后,打印出每个玩家猜对的次数、错误的答案,并显示玩家的排名。
  • 询问用户是否希望再次玩。如果是这样,请重置所有值。

这是我编写的方法;

import java.io.*;

public class MultiPlayerRandomGame {

// this method asks how many users will be playing and returns the number of users
public static int howManyUsers() {

System.out.println("How many users will be playing?");
int players = IO.readInt();
return players;
}

// this method generates and returns a random number
public static int generateRandomNumber() {

int randomNumber = (int) (Math.random() * 100);
return randomNumber;
}

// this method compares user's entered guess and the generated random number then returns true/false
public static boolean compareGuess(int guess, int randomNumbers) {

boolean isGuessCorrect = false;

if (guess == randomNumbers) {
System.out.println("CORRECT!");
isGuessCorrect = true;

} else if (guess > randomNumbers) {
System.out.println("Too High");

} else if (guess < randomNumbers) {
System.out.println("Too Low");
}

System.out.println("test1");
return isGuessCorrect;
}

// this method determines whether Player N is correct or incorrect
public static boolean nextPlayer(int numOfUsers, int[] numberOfGuesses, int[] randomNumbers, int[][] numberBoard) {

for (int n = 0; n < numOfUsers; n++) {
int guessedNumber = numberOfGuesses[n];

/* if (guessedNumber == 0) {
return false;
}*/

if (numberBoard[n][guessedNumber] != randomNumbers[n]) {
return false;
}
}
return true;
}

/* this method is supposed to print out the number of guesses it took each player to guess their correct number
* CORRECTION: change the logic of this method to printing the number of guesses for one player then
* in the main method or wherever, make a for loop that prints out the number of guesses for each player
*/
public static void amountOfGuesses(int numOfUsers, int [] numberOfGuesses, int [][] numberBoard) {

int n = 0;
for ( int i = 0; i < numOfUsers; i++ ) {
n = n + 1;
System.out.println("Player " + n + " guessed " + numberOfGuesses[i]+ " time(s)");
}
}

// this method determines whether the user(s) would like to play again
public static boolean playAgain(String answer) {

boolean userWillPlayAgain;

if (answer.compareToIgnoreCase("no") == 0) {
userWillPlayAgain = false;
}
else {
userWillPlayAgain = true;
}
return userWillPlayAgain;
}

// this method controls the entire game
public static boolean playGame(){

boolean gameTerminate = false;
int numOfUsers = howManyUsers();
int [] randomNumbers = new int[numOfUsers];
int [] numberOfGuesses = new int [numOfUsers];
int [][] numberBoard = new int [numOfUsers][100];

// this for loop assigns the n random number(s) to the n player(s)
for (int n = 0; n < numOfUsers; n++){
randomNumbers[n] = generateRandomNumber();
System.out.println("PLAYER " + (n+1) + "'s RANDOM NUMBER: " + randomNumbers[n]);
}

do {
for (int i = 0; i < numOfUsers; i++) {
int guessedNumber = numberOfGuesses[i];

if (guessedNumber == 0 || numberBoard[i][guessedNumber-1] != randomNumbers[i]) {
System.out.println("Enter your guess Player " + (i+1) + ":");
int enteredGuess = IO.readInt();


numberBoard[i][guessedNumber] = enteredGuess;
numberOfGuesses[i] = guessedNumber + 1;

if(compareGuess(enteredGuess, randomNumbers[i])){
return true;

}
}
}

/* int n = 0;
* for ( int j = 0; j < numOfUsers; j++ ) {
n = n + 1;
System.out.println("Player " + n + " guessed " + numberOfGuesses[j]+ " time(s)"); }
*/


} while (nextPlayer(numOfUsers, numberOfGuesses, randomNumbers, numberBoard) == false);


// System.out.println("test");
return gameTerminate;
}

public static void main(String[] args){
boolean playing = true;
while (playing) {
playGame();

System.out.println("Would you like to play again?");
String answer = IO.readString();

playing = playAgain(answer);
}
System.out.println("OK, goodbye!");
}
}

目前的主要问题:游戏终止并询问用户是否愿意在玩家猜出他们的数字后再次玩,而不是在每个玩家都猜出他们的数字后。

我是否需要实际的对象来实现这一点并跟踪每个玩家,或者在没有对象的情况下仍然可以解决这个问题吗?这是一个我不熟悉的领域。

最佳答案

现在,只要任何猜测从 compareGuess 返回正确,您的 playGame 方法就会返回 true 返回到 main

我建议在 playGame 中设置另一个数组 boolean[] CorrectGuess ,如果玩家猜测正确,则将玩家编号索引标记为 true 。您还可以使用这个新数组来跳过猜对的玩家。一旦所有玩家都被标记为 true,您就可以返回main

关于java - 解决随机数游戏逻辑时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50182787/

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