Как добавить чит-функцию в игру Java mastermind

Я пишу игру вдохновителя, вот мои коды:

import java.util.*;

public class mm {
    public static void main(String[] args) {      
        System.out.println("I'm thinking of a 4 digit code.");
        int[] random=numberGenerator();
        int exact=0, close=0;
        while(exact!=4){
            int[] guess=userinput();
            exact=0;
            close=0;
            for(int i=0;i<guess.length;i++){
                if(guess[i]==random[i]){
                    exact++;
                }
                else if(random[i]==guess[0] || random[i]==guess[1] || random[i]==guess[2] || random[i]==guess[3]){
                    close++;
                }
            }
            if(exact==4){
                System.out.println("YOU GOT IT!");
            }
            else{
                System.out.println("Exact: "+exact+" Close: "+close);
            }
        }   
    }

public static int[] userinput(){
    System.out.println("Your guess: ");
    Scanner user = new Scanner(System.in);
    String input = user.nextLine();
    int[] guess = new int[4];
    for (int i = 0; i < 4; i++) {
        guess[i] = Integer.parseInt(String.valueOf(input.charAt(i)));
    }
    return guess;
}

public static int[] numberGenerator() {
    Random rnd = new Random();
    int[] randArray = {10,10,10,10};
    for(int i=0;i<randArray.length;i++){
        int temp = rnd.nextInt(9);
        while(temp == randArray[0] || temp == randArray[1] || temp == randArray[2] || temp == randArray[3]){
            temp=rnd.nextInt(9);
        }
        randArray[i]=temp;
    }
    return randArray;
}
}

Сейчас программа работает. Однако я хочу добавить функцию, которая, если пользователь вводит "*", программа печатает "введенный чит-код. Секретный код: XXXX(// случайное число, которое сгенерировало)", а затем продолжайте спрашивать. Я пытался написать отдельный cheat() функция для достижения этого. Но это называетnumbergenerator()опять же, секретный код меняется каждый раз. Как избежать этой проблемы? Или есть какой-то другой способ добиться этой функции?

Кстати, вот логика чит-функции:

if (guess.equals("*")){
    System.out.format("cheat code entered. The secret code is:")
    for(int i=0;i<guess.length;i++){
            System.out.print(guess[i]);
        }
}

1 ответ

Решение

Обман выглядит так:

if (guess.equals("*")){
    System.out.format("cheat code entered. The secret code is:")
    for(int i=0;i<random.length;i++){
            System.out.print(random[i]);
        }
}

РЕДАКТИРОВАТЬ: Два способа получить доступ к случайным userinput()

A) Передать случайным образом userinput() в качестве параметра

public static int[] userinput(int[] random){
   ...

B) сделать случайную переменную-член (вероятно, лучший способ сделать это)

public class mm {
    static int[] random;
    public static void main(String[] args) {      
        System.out.println("I'm thinking of a 4 digit code.");
        random=numberGenerator();
        ...
Другие вопросы по тегам