Обновление значения параметра в Java - PullRequest
0 голосов
/ 27 сентября 2019

Я не был слишком уверен, что озаглавить это, поэтому я прошу прощения заранее.В настоящее время я пытаюсь создать игру, в которой общее количество очков должно составить до 100, чтобы игрок мог выиграть.Я сталкиваюсь с проблемой, когда «PlayerTotalPoints» не обновляется после того, как метод PlayerTurn возвращает количество PlayerTotalPoints и устанавливает его как новое значение в PlayerTotalPoints для повторного запуска в методе еще раз.

Это мой код:

public static void main(String[] args) {
        int PlayerTotalPoints = 0;
        int ComputerTotalPoints = 0;
        while (!IsGameOver(PlayerTotalPoints, ComputerTotalPoints)) {
            int TurnPointCounter = 0;
            System.out.println("It is the player's turn!");
            PlayerTotalPoints = PlayerTurn(TurnPointCounter, PlayerTotalPoints);
            System.out.println("The player currently has " + PlayerTotalPoints + " total points!");
            System.out.println("It is the computer's turn!");
            ComputerTotalPoints = ComputerTurn(TurnPointCounter, ComputerTotalPoints);
            System.out.println("The computer currently has " + ComputerTotalPoints + " total points!");
        }
    }

Метод PlayerTurn возвращает новое значение PlayerTotalPoints (я проверил, и оно возвращает правильное значение PlayerTotalPoints), но по какой-то причине это значениене переносится в переменную PlayerTotalPoints, которая должна продолжаться, поскольку игрок накапливает свой счет.Это для назначения, поэтому я не уверен, какую часть моего кода мне разрешено передавать в Интернете, но если вам нужно больше примеров моего кода, просто дайте мне знать, спасибо.

РЕДАКТИРОВАТЬ: Это PlayerTurn иМетоды ComputerTurn:

    public static int PlayerTurn(int counter, int PlayerTotalPoints) {
        System.out.println("The player currently has " + counter + " turn points.");
        System.out.println("Do you want to play or hold this turn? (P/H)");
        String answer = scan.nextLine();
        answer = answer.replaceAll(" ", "");
        answer = answer.toUpperCase();
        if (answer.equals("H")) {
            PlayerTotalPoints += counter;
            System.out.println("You have elected to hold this turn.");
//            System.out.println("You currently have " + PlayerTotalPoints + " total points.");
            System.out.println(PlayerTotalPoints);
            return PlayerTotalPoints;
        }
        int[] OneRoll = RollDice();
        int TurnCount = Turn(OneRoll, counter);
        if (OneRoll[0] == 6 && OneRoll[1] == 6) {
            PlayerTotalPoints = 0;
            return PlayerTotalPoints;
        }
        if (OneRoll[0] == 6 | OneRoll[1] == 6) {
//            System.out.println("The player currently has " + PlayerTotalPoints + " total points.");
            return PlayerTotalPoints;
        }
        PlayerTurn(TurnCount, PlayerTotalPoints);
        return PlayerTotalPoints;
    }

    public static int ComputerTurn(int counter, int ComputerTotalPoints) {
        System.out.println("The computer currently has " + counter + " turn points.");
        int n = generator.nextInt(100);
        if (n >= 70) {
            ComputerTotalPoints += counter;
            System.out.println("The computer has decided to hold this turn. ");
//            System.out.println("The computer currently has " + ComputerTotalPoints + " total points.");
            return ComputerTotalPoints;
        }
        int[] CompRoll = RollDice();
        int CompTurnCount = Turn(CompRoll, counter);
        if (CompRoll[0] == 6 && CompRoll[1] == 6) {
            ComputerTotalPoints = 0;
            return ComputerTotalPoints;
        }
        if (CompRoll[0] == 6 | CompRoll[1] == 6) {
//            System.out.println("The computer currently has " + ComputerTotalPoints + " total points.");
            return ComputerTotalPoints;
        }
        ComputerTurn(CompTurnCount, ComputerTotalPoints);
        return ComputerTotalPoints;
    }

1 Ответ

1 голос
/ 27 сентября 2019

Не должно ли следующее:

    PlayerTurn(TurnCount, PlayerTotalPoints);
    return PlayerTotalPoints;

быть чем-то вроде

    PlayerTotalPoints = PlayerTurn(TurnCount, PlayerTotalPoints);
    return PlayerTotalPoints;

для вызовов методов PlayerTurn и ComputerTurn?Помните, это рекурсивный вызов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...