Передача параметров в метод измерения, чтобы вести счет, является неточной - PullRequest
0 голосов
/ 18 ноября 2018

Предположим, у игры в кости есть класс EyesHaveIt.Объект игры - человек-игрок против компьютера.Я пытаюсь вести счет с помощью методов get и set, но у меня проблемы с тем, чтобы мой счет за ход не сбрасывался после того, как компьютер людей пять (или меньше) ходов.

Я не ищу точного ответа, просто полезные советы, потому что это опыт обучения для меня.Имейте в виду, что следующий код находится в стадии разработки, потому что я активно работаю над ним.Большое спасибо за любую помощь, советы или информацию о настройке / получении счетчиков для добавления очков / ходов.

public class EyesHaveIt {
Scanner kb = new Scanner(System.in);

private int turnScore;
private int gameScore;
private int computerTotalScore;
private int playerTurnScore;

private int computerTurnNumber;
private int playerTurnNumber;
public int roundPoints;
private String userName;

public void playGame() {
    computerTurn();
}

public void init(String name) {
    userName = name;
}

public void computerTurn() {
turnScore=0;
    System.out.println("Computer's turn: ");
    while (turnScore < 20) {
        rollTheDice();
        computerTurnNumber++;
     getComputerTotalScore(turnScore);
    }
    getGameScore();
  enterToContinue();
}
public void enterToContinue(){
    System.out.print("\nPress ENTER to continue ...");
    try {
        System.in.read();
    } catch (Exception e) {
        e.printStackTrace();
    }
  playerTurn();
  }
public void playerTurn() {
    System.out.println(userName + "'s turn:");
    for (int i=0;i < 5;i++) {
        rollTheDice();
     playerTurnNumber++;
        System.out.println("Roll again? (y/n) ");
        char continueGame = kb.next().charAt(0);
        continueGame = Character.toUpperCase(continueGame);
        if (continueGame == 'Y') {
            rollTheDice();
        } else {
            getGameScore();
        }
    }
  computerTurn();
}

public void rollTheDice() {
    PairOfDice dieOne = new PairOfDice();
    PairOfDice dieTwo = new PairOfDice();
    int die1 = dieOne.getDieOneValue();
    int die2 = dieTwo.getDieOneValue();
    System.out.println("\tRolled: " + die1 + " and " + die2);
    whatWasRolled(die1, die2);

}

public void whatWasRolled(int die1, int die2) {

    if (die1 == 1 && die2 == 1) {
        System.out.println("\t   Rolled snake eyes! All turn points will be doubled.");
        roundPoints = (die1 + die2 * 2);
        setScore(roundPoints);
    } else if (die1 == 6 && die2 == 6) {
        System.out.println("\t   Rolled box cars! All points are gone now!");
        roundPoints = 0;
        gameScore = 0;
        setScore(roundPoints);
    } else if (die1 == die2) {
        System.out.println("\t   Rolled double. . . lose all turn points.");
        roundPoints = 0;
        setScore(roundPoints);
    } else {
        roundPoints = die1 + die2;
        setScore(roundPoints);
        getTurnScore();
    }
}

public void setScore(int roundPoints) {
    turnScore = turnScore + roundPoints;
    gameScore += roundPoints;
}

public int getTurnScore() {
    System.out.println("\tCurrent score for this turn:" + turnScore);
    return turnScore;
}

public int getGameScore() {
    System.out.println("CURRENT GAME SCORE: Computer: " + computerTotalScore + "\t" + userName + ": ");
    return gameScore;
}
public int getComputerTotalScore(int turnScore){
  computerTotalScore = turnScore + computerTotalScore;
  return computerTotalScore;
 }
...