public class Dubo {
//2个骰子之和
public int rollDice(){
int roll = (int)(Math.random()*6)+(int)(Math.random()*6);
if(roll <2){
roll = 2;
}
return roll;
}
//游戏规则
public void dubo(){
final int WIN = 0,LOST = 1,CONTINUE = 2;
boolean firstRoll = true;
int gameStatus = CONTINUE;//记录游戏状态
int firstPoint = 0;//记录第一个数
int sumOfDice;
System.out.println("游戏开始!");
while(true){
if(firstRoll){
sumOfDice = rollDice();
System.out.println("玩家之和:"+ sumOfDice);
switch(sumOfDice){
case 7:
case 11:
gameStatus = WIN;
break;
case 2:
case 3:
case 12:
gameStatus = LOST;
break;
default:
firstRoll = false;
gameStatus = CONTINUE;
firstPoint = sumOfDice;
break;
}
}
else{
sumOfDice = rollDice();
System.out.println("玩家之和:"+ sumOfDice);
if(sumOfDice == firstPoint)
gameStatus = WIN;
else if(sumOfDice == 7)
gameStatus = LOST;
}
if(gameStatus == CONTINUE)
System.out.println("胜负未分,再掷一次*****");
else if(gameStatus == WIN)
{
System.out.println("玩家胜");
break;
}
else
{
System.out.println("玩家输");
break;
}
}
}
public static void main(String[] args) {
new Dubo().dubo();
System.out.println("游戏 结束");
}
}
游戏输出:
游戏开始!
玩家之和:4
胜负未分,再掷一次*
玩家之和:7
玩家输
游戏 结束
——————–
游戏开始!
玩家之和:5
胜负未分,再掷一次*
玩家之和:2
胜负未分,再掷一次*
玩家之和:3
胜负未分,再掷一次*
玩家之和:2
胜负未分,再掷一次*
玩家之和:6
胜负未分,再掷一次*
玩家之和:3
胜负未分,再掷一次*
玩家之和:5
玩家胜
游戏 结束
总结:可以看出每次结果不同,达到要求!
/*题目描述:
* 投掷2个骰子,计算2个骰子之和
* 如果第一次和为7、11,玩家胜;
* 如果和为2、3、12,则玩家输;
* 如果和为其他数,则记录第一次的点数和,然后继续投掷,直到点数和=第一次点数和,则玩家胜;
* 假如在玩家胜之前出现和为7,则玩家输!
*/