Java骰子游戏计数器无法正确添加

时间:2018-11-18 23:30:08

标签: java counter game-development

我用Java编写了一个骰子游戏,掷出两个骰子并保持得分。 整个游戏总共有四个班,但是我面临的问题是我的EyesHaveIt班。 它将每个回合加到总分上,但计算不正确。 我试图找到导致它的原因,但没有成功。 谁能帮我找到问题所在?

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

private int turnScore;
private int computerTotalScore;
private int playerTotalScore;
private int computerTurnNumber;
private int playerTurnNumber;
public int roundPoints;
private String userName;

//Accepts a name value from PlayGame class.
public void init(String name) {
    userName = name;
}

//This method starts the game with a computer turn.
public void playGame() {
    computerTurn();
}

//Computers turn to roll the dice.
public void computerTurn() {
    turnScore = 0;
    System.out.println("Computer's turn: ");
    while (turnScore < 20) {
        rollTheDice();
        computerTurnNumber++;
        setComputerTotalScore(turnScore);
    }
    getGameScore();
    enterToContinue();
}

//Checks users input(enter) to continue player turn.
public void enterToContinue() {
    System.out.print("\nPress ENTER to continue ...");
    try {
        System.in.read();
    } catch (Exception e) {
        e.printStackTrace();
    }
    playerTurn();
}

//Players turn to roll the dice.
public void playerTurn() {
    turnScore = 0;
    System.out.println(userName + "'s turn:");
    for (int i = 0; i < 5; i++) {
        rollTheDice();
        playerTurnNumber++;
        getPlayerTotalScore(turnScore);
        System.out.println("Roll again? (y/n) ");
        char continueGame = kb.next().charAt(0);
        continueGame = Character.toUpperCase(continueGame);
        if (continueGame == 'Y') {
            int test = 0;
        } else {
            getGameScore();
        }
    }
    getGameScore();
    computerTurn();
}

//Creates two dice from PairOfDice class and prints values rolled.
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);

}

//Accepts int from rollTheDie and checks the value.
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;
        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();
    }
}

//Sets turnScore from whatWasRolled.
public void setScore(int roundPoints) {
    turnScore = turnScore + roundPoints;
}

//Sets computer game score.
public void setComputerTotalScore(int turnScore) {
    computerTotalScore = turnScore + computerTotalScore;

}

//Sets player game score.
public void setPlayerTotalScore(int turnScore) {
    playerTotalScore = turnScore + playerTotalScore;

}

//computerTotalScore accesor returns an int.
public int getComputerTotalScore() {
    return computerTotalScore;
}

//playerTotalScore accesor returns an int.
public int getPlayerTotalScore(int turnScore) {
    playerTotalScore = turnScore + playerTotalScore;
    return playerTotalScore;
}


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

//How the game ends and current game score is displayed.
public void getGameScore() {
    System.out.println(
            "CURRENT GAME SCORE: Computer: " + computerTotalScore + "\t" + userName + ": " + playerTotalScore);

    if (computerTotalScore >= 150) {
        System.out.println("Sorry, " + userName + " you got beat by the computer!");
        System.exit(0);
    } else if (playerTotalScore > 150) {
        System.out.println(userName + ", Congratulations! You beat the computer!");
        System.exit(0);
    }
}

}

1 个答案:

答案 0 :(得分:0)

你好吗?

我在2个班级做了3次改动。 看看它是否适合您。

//Computers turn to roll the dice.
    public void computerTurn() {

        computerTurnNumber = 0; // here

        turnScore = 0;
        System.out.println("Computer's turn: ");
        while (computerTurnNumber < 20) { // here is the amount of time the dice will be rolled
            rollTheDice();
            computerTurnNumber++;
            setComputerTotalScore(turnScore);
        }
        getGameScore();
        enterToContinue();
    }

//Sets turnScore from whatWasRolled.
    public void setScore(int roundPoints) {
        turnScore = roundPoints; //here, before it was accumulating the points of each turn
    }