如何制作Java猜谜游戏程序

时间:2013-11-16 22:28:10

标签: java arrays count numbers

我正在尝试用Java制作一个猜谜游戏程序并需要帮助这是我到目前为止所做的。

public class CodeGuessingGame {

public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);
    int[] guess = {0, 1, 2, 3, 4};
    int[] secretNumber = {0, 1, 2, 3, 4};

    System.out.println("Let the game begin...");
    System.out.println("Guess my secret code, consisting of 1 and 2");
    System.out.println(" ");

        for (int i=0; i<5; i++) {
        System.out.print("Guess number " + (i+1) + " (1 or 2): ");
        guess[i] = scan.nextInt();
        }
        System.out.println(" ");
        System.out.println("Your guess: " + "[" + guess[0] + "]" + 
            "[" + guess[1] + "]" + "[" + guess[2] + "]" + 
            "[" + guess[3] + "]" + "[" + guess[4] + "]");

       for (int i=0; i<5; i++) {
           secretNumber[i] = (int) (Math.random() * 2 + 1);
       }
       System.out.print("Secret code: " + "[" + secretNumber[0] + "]" + 
            "[" + secretNumber[1] + "]" + "[" + secretNumber[2] + "]" + 
            "[" + secretNumber[3] + "]" + "[" + secretNumber[4] + "]");

}

此代码的输出应如下:

Let the game begin...
Guess my secret code, consisting of 1 and 2
Guess number 1 (1 or 2): 1
Guess number 2 (1 or 2): 2
Guess number 3 (1 or 2): 2
Guess number 4 (1 or 2): 1
Guess number 5 (1 or 2): 1
Your guess: [1][2][2][1][1]
Secret code: [2][1][2][1][2]

此代码将永远存在。你必须能够赢或输。如果您获得3个或更多数量的密码,您就赢了。如果你没有得到3个或更多的数字,你就输了。我该怎么做?

3 个答案:

答案 0 :(得分:3)

在主页末尾添加。

int count = 0;
for (int i=0; i<5; i++) {
   if (secretNumber[i] == guess[i])
       count++;
}

if (count >= 3)
    System.out.print("You guessed " + count + " numbers correct, therefore you win");
else
    System.out.print("You only guessed " + count + " number(s) correct, therefore you lose");

答案 1 :(得分:1)

要做到这一点,你可以只定义一个变量a并为每个正确答案增加一个变量a。例如:

int a;

if (answer1 == true1){
  a = a + 1;
}

if (answer2 == true2){
  a = a + 1;
}

//check the rest
if (a > 2){
  System.out.println("You win");
} 
else{
  System.out.println("You lose");
}

答案 2 :(得分:1)

您应该将代码的行为分成不同的方法。例如,

public int void recieveGuess(int guessNum, Scanner scan){
   System.out.print("Guess number ") + guessNum + "(1 or 2): ");
   return scan.nextInt(); //Assuming the user entered an int. May want to check for that.
}

public int compareGuess(int[] secret, int[] guesses){
   int count = 0;
   for(int i = 0; i < secret.length; i++){
      if(secret[i] == guess[i]){
          count++;
      }
   }
   return count;
}

然后在您的主要内容中,您可以打印起始信息,然后循环遍历recieveGuess,无论您想要多次,然后在最后进行比较。

if(compareGuess(secretNumber, guess) >= 3){
   //they won
} else {
   //they lost
}

此外,您应该将secretNumber初始化为new int [5]。这将创建一个长度为5的数组,其中包含全零或任意长度。然后用随机数填充密码。像这样:

int[] secretNumber = new int[5];
int[] guess = new int[5];