Игра «Удар и удар» на Java

#java

#java

Вопрос:

Я написал код, который является основной игрой разума на Java. Я смог написать код для запуска игры. Этот код удалось запустить, но игра не завершилась, даже если пользователь уже ввел правильный ответ или они уже достигли максимального игрового времени. Я думал, как это исправить, и попытался исправить, чтобы работать хорошо, но я не смог исправить. и теперь я понятия не имею, как это исправить. Кроме того, я хочу создать файл для записи того, как пользователь играл и запускал эту программу. Я знаю, что мне нужно использовать метод FileWriter, но я понятия не имею, как записать процесс.

Это мой код

 import java.util.Scanner;
public class MasterMind{
 public static void main(String[] args){
  int[] number = makeArray(10);
  for(int i = number.length - 1; i > 0; i--){
  int r = (int)(Math.random() * (i   1));
  int tmp = number[i];
  number[i] = number[r];
  number[r] = tmp;
}
 int playNumber = 4; // digits
 int[] answer = new int[playNumber];
 if(number[0] == 0){
     for (int i = 0; i < answer.length; i  ){
       answer[i] = number[i   1];
    }
 }else{
     for(int i = 0; i < answer.length; i  ){
       answer[i] = number[i];
     }
 } 
  ystem.out.println();
runGame(number, answer, 4);
}
private static int[] makeArray(int size){
int[] numbers = new int[size];
for(int i = 0; i < size; i  )
  numbers[i] = generateNumber();
return numbers;
}
 private static int generateNumber(){
 return (int)(Math.random() * 10)   1; // make secret number
}
private static void runGame(int[] number, int[] answer, int playNumber){
int hit = 0;
int blow = 0;
int count = 0;
int maxPlay = 5;
boolean gameEnd = false;
while(!gameEnd){
  hit = 0;
  blow = 0;
  int[] userGuess = new int[playNumber];
  boolean checkValid = false;
  while(!checkValid){
  System.out.println("enter your guess"); //ask user to get guess number
      Scanner keyboard = new Scanner(System.in);
      int[] inNum = new int[playNumber];
      String guess = keyboard.nextLine();
      int n = Integer.parseInt(guess);
      String putNumber = guess.substring(0, 1); //set 1st
      int digits = Integer.toString(n).length();

      creatArray(inNum,n);

      digits = Integer.toString(n).length();
      if(putNumber.equals("0")){
        System.out.println("you cannot enter 0 first");
      }else if(digits != playNumber){
        if(digits < playNumber || n < Math.pow(10, playNumber - 1))
          System.out.println(digits);
          System.out.println("It is not enough digits");
      }else if(digits > playNumber){
          System.out.println("It is too much");
      }else{
        gameEnd = true;
        userGuess = inNum;
      }
       }
  for(int i = 0; i < playNumber; i  ){  //check hit
      if(answer[i] == userGuess[i]){
          hit  ;
      }
    }
  for(int i = 0; i < playNumber; i  ){ //check blow
    for(int k = 0; k < playNumber; k  ){
      if(answer[i] == userGuess[k]){
          blow  ;
      }
    }
  }
  if(hit == playNumber){
    System.out.println("It is correct");
    System.out.println("you enter "   count);
    gameEnd = true;
  }else{
    System.out.println(hit   "hit"   (blow - hit)   "Blow");
    count  ;
  }
  if(count == maxPlay){
    System.out.println("You reach"   maxPlay   "Game Over");
    gameEnd = true;
  }
}
}
private static void creatArray(int[] inNum, int n){
for(int j = inNum.length - 1; j >= 0; j--){
  int d = n / 10;
  int k = n - d * 10;
  n = d;
  inNum[j] = k;
}
}
}
 

Комментарии:

1. Я предполагаю, что это задание в процессе изучения Java, поэтому предоставление нового реструктурированного кода — это не способ достичь вашей цели. Некоторый код, на который вы, возможно, захотите взглянуть: 1) вы также добавляете число 10, возможно, захотите остановиться на 9. 2) Вы, похоже, никогда не покидаете цикл checkValid while , что делает невозможным проверку значения while(!gameEnd). Удачи с вашей головоломкой 🙂

2. @Wkrem Спасибо, что посоветовали мне, я не заметил, что забыл сделать checkValid истинным… Я постараюсь это исправить!

3. @Wkrem Я смог остановить запуск игры! Я признателен вам. Большое вам спасибо!