基本上,我正在尝试使用“投注”功能创建自己的Craps游戏,您可以在其中玩游戏并查看您赢得或失去多少钱的更新。为此,我创建了Craps类,该类允许玩家一次玩Craps,并且我的代码依赖于自定义枚举,我将其称为PASS_WON ,PASS_LOSTDP_WONDP_LOSTKEEP_ROLLING

我苦苦挣扎的部分是BetMoney类的第一步。首先,我要说的是,如果在掷骰子游戏结束时状态为WON,则状态为LOST,钱被减去等时,钱会添加到您已经拥有的钱中。但是,我无法访问我在BetMoney类中的Craps类中声明的私有Status枚举,以便执行if语句。我完全不确定如何为这样的枚举创建一个吸气剂。有什么方法可以“获取”我的BetMoney类中的枚举值,因此可以在if语句中使用它们?我想做的是像(if newGame [craps object].getGameStatus() == PASS_WON)这样的东西,增量取胜。

我确实有一个私有变量“ GameStatus”的获取器,该变量用于循环游戏。这用作当前的GameStatus,它的类型来自我所列举的Status。我只是不能在BetMoney中正确使用它。

摘要:

现在,我有2节课。掷骰子类(用于玩掷骰子的单个游戏),然后是BetMoney(将包含赢/输跟踪器)和金钱跟踪器。

目前,状态是我的Craps类中的一个私有静态枚举,我正在尝试在BetMoney中使用它。

//This is where my Status Enum is declared, these are all in Craps Class
private static enum Status {
        PASS_WON, PASS_LOST, KEEP_ROLLING, DP_WON, DP_LOST;
};

//Status variable for each single game
private static Status GameStatus;

//Getter for the single game status (there's also a setter)
public Status getGameStatus() {
    return GameStatus;
}

//Throughout Craps, I have a lot of code similar to this, where
//getPoint gets the original "point" (first sum rolled) and for certain

//sums, you win or lose the game, and GameStatus is set for use later.
switch (CrapsGame.getPoint()) {
        case 7:
        case 11:
            CrapsGame.setGameStatus(Status.PASS_WON);
}

//How I keep looping:
while(CrapsGame.getGameStatus().equals(Status.KEEP_ROLLING)) {
   ...logic to keep the game working...

}

//At the end, I return GameStatus.

最佳答案

您已将枚举类声明为私有。这样可以防止在Craps类之外使用它。

private static enum Status {
    PASS_WON, PASS_LOST, KEEP_ROLLING, DP_WON, DP_LOST;
};


您需要将其设置为私有以外的其他功能。优良作法是使每个类都尽可能地不可访问。但是您知道您想在Craps之外访问它。因此,如果Craps和BetMoney位于同一软件包中,则只需删除private即可使枚举受软件包保护:

static enum Status {
    PASS_WON, PASS_LOST, KEEP_ROLLING, DP_WON, DP_LOST;
};


在BetMoney内,您将需要导入要使用的常量,或者按照其示例类代码(例如Status.PASS_WON)的操作,使用其枚举类名来限定它们的使用。

10-08 12:26