基本上,我正在尝试使用“投注”功能创建自己的Craps游戏,您可以在其中玩游戏并查看您赢得或失去多少钱的更新。为此,我创建了Craps类,该类允许玩家一次玩Craps,并且我的代码依赖于自定义枚举,我将其称为PASS_WON ,PASS_LOST
,DP_WON
,DP_LOST
,KEEP_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
)的操作,使用其枚举类名来限定它们的使用。