
文章目录
目录
一、实验内容
二、设计思路
三、实验内容
1.博饼类
2.骰子类
3.玩家类
4. 玩游戏
四、运行结果
模拟博饼游戏:
(1)设计骰子类,实现随机掷骰子的功能;
(2)构建玩家类,记录玩家获得的每种奖励的个数;
(3)构建博饼游戏类,判断每次掷骰子时应获得的奖励,判断是否已发放所有的奖励;
记录游戏规则:
package game;
public class BoCake
{
public static final int A = 1;
public static final int B = 2;
public static final int C = 4;
public static final int D = 8;
public static final int E= 16;
public static final int F = 32;
//牺牲一个存储空间,增加程序可读性
public int[] reward1=new int[7]; //记录状元
public int reward2=0;
public int reward3=0;
public int reward4=0;
public int reward5=0;
public int reward6=0;
public BoCake()
{
for(int i=1;i<7;i++)
reward1[i]=0;
reward2=0;
reward3=0;
reward4=0;
reward5=0;
reward6=0;
}
//判断奖励
public void judgeReward(Dice dice,Player player)
{
int x=0; //记录点数为4的骰子数目
int a=0,b=0,c=0,d=0,e=0,f=0;
for(int i=1;i<7;i++)
{
if(dice.die[i]==4) x++;
else if(a==0) a=dice.die[i];
else if(b==0) b=dice.die[i];
else if(c==0) c=dice.die[i];
else if(d==0) d=dice.die[i];
else if(e==0) e=dice.die[i];
else if(f==0) f=dice.die[i];
}
//判断奖励 状元等级
//六博红
if(x==6)
{
reward1[2]=1; System.out.println("恭喜有机会获得状元!");
}
//六博黑
else if(x==0 && a==b && b==c && c==d && d==e && e==f)
{
reward1[3]=1;
System.out.println("恭喜有机会获得状元!");
}
//五王
else if(x==5)
{
if(a==6) reward1[4]=6;
else if(a==5) reward1[4]=5;
else if(a==3) reward1[4]=3;
else if(a==2) reward1[4]=2;
else if(a==1) reward1[4]=1;
System.out.println("恭喜有机会获得状元!n");
}
//五子登科
else if(a==b && b==c && c==d && d==e)
{
if(x==1 && reward6
2.骰子类
随机骰子点数:
package game;
public class Dice {
public int[] die=new int[7]; //骰子点数
public Dice()
{
for(int i = 1;i<7;i++)
die[i] =0;
}
public void printDice()
{
System.out.println("骰子的点数:");
for(int i = 1;i<7;i++)
System.out.printf("%d ",die[i]);
System.out.print("n");
}
//随机扔骰子
public void rollDice()
{
for(int i = 1;i<7;i++)
die[i] = 1 + ( int )(Math.random() * 6); //m+(int)(Math.Random()*(n-m+1))
}
}
3.玩家类
package game;
public class Player
{
public static final int A = 1;
public static final int B = 2;
public static final int C = 4;
public static final int D = 8;
public static final int E= 16;
public static final int F = 32;
public int id; //玩家号码
public int[] result=new int[7]; //记录玩家结果
public Player()
{
id=0;
for(int i=1;i<7;i++)
result[i]=0;
}
//判断玩家所获奖励
public void winReward(Dice dice)
{
int x=0; //记录点数为4的骰子数目
int a=0,b=0,c=0,d=0,e=0,f=0;
for(int i=1;i<7;i++)
{
if(dice.die[i]==4) x++;
else if(a==0) a=dice.die[i];
else if(b==0) b=dice.die[i];
else if(c==0) c=dice.die[i];
else if(d==0) d=dice.die[i];
else if(e==0) e=dice.die[i];
else if(f==0) f=dice.die[i];
}
//判断奖励 状元等级
if(x==4 && a==1 && b==1 && (result[1]>1||result[1]==0)) result[1]=1;
//六博红
if(x==6 && (result[1]>2||result[1]==0)) result[1]=2;
//六博黑
else if(x==0 && a==b && b==c && c==d && d==e && e==f && (result[1]>3||result[1]==0))
result[1]=3;
//五王
else if(x==5)
{
if(a==6 && (result[1]>4||result[1]==0)) result[1]=4;
else if(a==5 && (result[1]>5||result[1]==0)) result[1]=5;
else if(a==3 && (result[1]>6||result[1]==0)) result[1]=6;
else if(a==2 && (result[1]>7||result[1]==0)) result[1]=7;
else if(a==1 && (result[1]>8||result[1]==0)) result[1]=8;
}
//五子登科
else if(a==b && b==c && c==d && d==e)
{
//if(x==1 && result[6]9||result[1]==0)) result[1]=9;
else if(a==5 && (result[1]>10||result[1]==0)) result[1]=10;
else if(a==3 && (result[1]>11||result[1]==0)) result[1]=11;
else if(a==2 && (result[1]>12||result[1]==0)) result[1]=12;
else if(a==1 && (result[1]>13||result[1]==0)) result[1]=13;
}
//状元
else if(x==4 && result[1]==0)
{
result[1]=14;
}
}
}
4. 玩游戏
package game;
import java.util.Scanner;
public class PlayGame {
//主函数
public static void main(String[] args)
{
//指定用户数量
System.out.println("请用户数量(6-10):");
Scanner scanner= new Scanner(System.in);
int n=scanner.nextInt();
System.out.printf("共有用户:%dn",n);
n=n+1;
//扔骰子
Dice dice=new Dice() ;
BoCake cake = new BoCake();
Player[] player=new Player[n];
for(int i=1;i
四、运行结果