import java.security.SecureRandom;
//这时一个摇骰子游戏
public class Craps {
// 创建一个安全的产生随机数的random对象
private static final SecureRandom secureRandoms = new SecureRandom();
// 定义一个枚举类型类表示输赢的状态
private enum Status {
CONTINUE, WON, LOST
};
// 常量表示两次骰子摇到的结果判定输赢
private static final int SNAKE_EYES = 2;
private static final int TREY = 3;
private static final int SEVEN = 7;
private static final int ELEVEN = 11;
private static final int BOX_CARS = 12;
public static void main(String[] args) {
int myPoint = 0;// 本地变量存储第一次摇骰子得到的结果
Status gameStatus;
int sumOfDice = rollDice();
switch (sumOfDice) {
case SEVEN:
case ELEVEN:
gameStatus = Status.WON;// 第一次摇出2数之和为7或11就赢了
break;
case SNAKE_EYES:
case TREY:
case BOX_CARS:
//摇出 2|3输了
gameStatus = Status.LOST;
break;
default:
gameStatus = Status.CONTINUE;
myPoint = sumOfDice;
System.out.println("我的点数:" + myPoint);
break;
}
while (gameStatus == Status.CONTINUE) {
sumOfDice = rollDice();
if (sumOfDice == myPoint)
gameStatus = Status.WON;
//如果和上次一样就赢了
else if (sumOfDice == SEVEN) {
gameStatus = Status.LOST;
}
}
if (gameStatus == Status.WON) {
System.out.println("U Win");
} else
System.out.println("U lose");
}
private static int rollDice() {
int die1 = secureRandoms.nextInt(6);
int die2 = secureRandoms.nextInt(6);
int sum = die1 + die2;
System.out.printf("你摇出了%d和%d 得:%d", die1, die2, sum);
System.out.println();
return sum;
}
}
先自己理解代码,这是一个风靡于大街小巷和赌场的摇骰子游戏。阅读代码来加深对每句类型的理解。
本地变量gameStatus声明为前面定义的枚举类型,枚举类型是craps类的一个成员,因为只在这个类用到。
Status被称为枚举类型,里面定义用逗号分割开的叫做枚举常量。
枚举常量是隐式的final类型
枚举常量是饮食的static类型
枚举类型不能够通过new创建
枚举常量可以被用在任何可以使用常量的地方
一般的,我们用枚举类型来标识状态,如一上代码实例就是用来表示,摇骰子的状态。