import java.util.Random;
import java.util.Scanner;
class Prize
{
public int yx,yx_;//一秀 .4
public int ej,ej_;//二举 .4 4
public int sj,sj_;//四进 .3 3 3 3
public int sh,sh_;//三红 .4 4 4
public int dt,dt_;//对堂 .1 2 3 4 5 6
public int zy,zy_;//状元 .4 4 4 4
public int wzdk,wzdk_;//五子登科 .3 3 3 3 3
public int cjh,cjh_;//插金花 .1 1 4 4 4 4
public int lbh,lbh_;//六杯红 .4 4 4 4 4 4
public int sum;//剩余奖品总数
public int flag;//记录是否有人掷得六杯红,无为0,有为玩家id
public int zy_winner;//记录获得状元的玩家编号,方便追饼情况记录
private Scanner scan;
Prize()
{
yx=0;//一秀
ej=0;//二举
sj=0;//四进
sh=0;//三红
dt=0;//对堂
zy=0;//状元
wzdk=0;//五子登科
lbh=0;//六杯红
cjh=0;//插金花
sum=0;
flag=0;
zy_winner=0;
}
public void setPrize_Number()
{
scan = new Scanner(System.in);
System.out.println("->请设置奖品数量:");
System.out.println("<1>状元奖数默认为:1");
lbh=cjh=wzdk=zy=1;
System.out.print("<2>请设置对堂奖数:");
dt=scan.nextInt();
System.out.print("<3>请设置三红奖数:");
sh=scan.nextInt();
System.out.print("<4>请设置四进奖数:");
sj=scan.nextInt();
System.out.print("<5>请设置二举奖数:");
ej=scan.nextInt();
System.out.print("<6>请设置一秀奖数:");
yx=scan.nextInt();
sum=zy+dt+sh+sj+ej+yx;
set_const_prize();
}
public void set_const_prize()
{
yx_=yx;
ej_=ej;
sj_=sj;
sh_=sh;
dt_=dt;
zy_=zy;
}
public void getPrize_Number()
{
if (sum != 0)
{
System.out.println();
System.out.println("当前剩余奖励有:");
System.out.println("状元奖励:"+zy+"个");
System.out.println("对堂奖励:"+dt+"个");
System.out.println("三红奖励:"+sh+"个");
System.out.println("四进奖励:"+sj+"个");
System.out.println("二举奖励:"+ej+"个");
System.out.println("一秀奖励:"+yx+"个");
}
else
{
System.out.println("当前无剩余奖励");
}
}
}
class Players
{
public int player_id;
public int roll[]=new int[7];//下标为0不用,从1-6对应骰子点数
public int zy_get;
public int dt_get;
public int sh_get;
public int sj_get;
public int ej_get;
public int yx_get;
public int get;//是否获奖
Players()
{
zy_get=dt_get=sh_get=0;
sj_get=ej_get=yx_get=0;
player_id=0;
for (int i:roll)
{
roll[i]=0;
}
get=0;
}
public void reset_roll()
{
for (int i=0; i<7; i++)
{
roll[i]=0;
}
}
public void play()
{
Random randomNumbers = new Random();
int j;
System.out.print("“");
for (int i=0; i<6; i++)
{
j=1+randomNumbers.nextInt(6);// 1-6
roll[j]++;
System.out.print(j+",");
}
}
public void out(Prize prize,Players player[])
{
if (roll[4] == 6)//特殊情况:六杯红
{
System.out.println(“六杯红,恭喜夺得所有奖品. ””);
System.out.println();
System.out.println(“游戏结束!”);
prize.sum=0;
prize.flag=player_id;
zy_get=prize.zy_;
dt_get=prize.dt_;
sh_get=prize.sh_;
sj_get=prize.sj_;
ej_get=prize.ej_;
yx_get=prize.yx_;
}
else if (roll[4] == 4 && roll[1] == 2)//状元插金花
{
if (prize.cjh != 0)
{
System.out.println(“状元奖-状元插金花,恭喜. ””);
prize.cjh=prize.wzdk=prize.zy=0;
if (prize.zy_winner == 0) prize.sum–;
else player[prize.zy_winner-1].zy_get=0;
prize.zy_winner=player_id;
zy_get=1;
}
else System.out.println(“该类奖品已发完,请继续努力.””);
}
else if (roll[1] == 5 || roll[2] == 5 || roll[3] == 5
|| roll[4] == 5 || roll[5] == 5 || roll[6] == 5)//五子登科
{
if (prize.wzdk != 0)
{
System.out.println(“状元奖-五子登科,恭喜.””);
prize.wzdk=prize.zy=0;
if (prize.zy_winner == 0) prize.sum–;
else player[prize.zy_winner-1].zy_get=0;
prize.zy_winner=player_id;
zy_get=1;
}
else System.out.println(“该类奖品已发完,请继续努力.””);
}
else if (roll[4] == 4)
{
if (prize.zy != 0)
{
System.out.println(“状元奖,恭喜.”);
prize.zy=0;
if (prize.zy_winner == 0) prize.sum–;
prize.zy_winner=player_id;
zy_get=1;
}
else System.out.println(“该类奖品已发完,请继续努力.””);
}
else if(roll[1] == 1 && roll[2] == 1 && roll[3] == 1
&& roll[4] == 1 && roll[5] == 1 && roll[6] == 1)//对堂
{
if (prize.dt !=0)
{
System.out.println(“对堂奖,恭喜.””);
prize.dt–;
prize.sum–;
dt_get++;
}
else System.out.println(“该类奖品已发完,请继续努力.””);
}
else if (roll[4] == 3)//三红
{
if (prize.sh != 0)
{
System.out.println(“三红奖,恭喜.””);
prize.sh–;
prize.sum–;
sh_get++;
}
else System.out.println(“该类奖品已发完,请继续努力.””);
}
else if (roll[1] == 4 || roll[2] == 4 || roll[3] == 4
|| roll[5] == 4 || roll[6] == 4)//四进
{
if (prize.sj != 0)
{
System.out.println(“四进奖,恭喜.””);
prize.sj–;
prize.sum–;
sj_get++;
}
else System.out.println(“该类奖品已发完,请继续努力.””);
}
else if (roll[4] == 2)//二举
{
if (prize.ej != 0)
{
System.out.println(“二举奖,恭喜.””);
prize.ej–;
prize.sum–;
ej_get++;
}
else System.out.println(“该类奖品已发完,请继续努力.””);
}
else if (roll[4] == 1)//一秀
{
if (prize.yx != 0)
{
System.out.println(“一秀奖,恭喜.””);
prize.yx–;
prize.sum–;
yx_get++;
}
else System.out.println(“该类奖品已发完,请继续努力.””);
}
else System.out.println(“无奖,请继续努力.””);
}
public void print()
{
get=zy_get+dt_get+sh_get+sj_get+ej_get+yx_get;
if (get != 0)
{
System.out.println("玩家编号:"+player_id);
System.out.println("累计获奖情况:");
if (zy_get != 0) System.out.println("“状元”奖"+zy_get+"个");
if (dt_get != 0) System.out.println("“对堂”奖"+dt_get+"个");
if (sh_get != 0) System.out.println("“三红”奖"+sh_get+"个");
if (sj_get != 0) System.out.println("“四进”奖"+sj_get+"个");
if (ej_get != 0) System.out.println("“二举”奖"+ej_get+"个");
if (yx_get != 0) System.out.println("“一秀”奖"+yx_get+"个");
System.out.println();
}
}
}
public class BetCake
{
public static void main( String args[] )
{
Scanner scan=new Scanner(System.in);
Prize prize=new Prize();
prize.setPrize_Number();
System.out.println("\n设置完成!\n");
System.out.println("->请设置玩家数量");
int num;
num=scan.nextInt();
while (num <= 0)
{
System.out.println("请设置正确的玩家数量n(n>0)");
num=scan.nextInt();
}
Players player[]=new Players[num];
for (int i=0; i<num; i++)
{
player[i]=new Players();
player[i].player_id=i+1;
}
int now_id=1;
while (prize.sum>0)//奖品领完前,
{
System.out.println("---------Start---------");
System.out.println("当前玩家编号:"+now_id);
System.out.println("输入字母p查看当前剩余奖品数,");
System.out.println("输入字母y开始掷骰子,");
System.out.println("输入字母f查看当前获奖状况,");
System.out.println("输入字母q提前结束游戏。");
int quit=0;
String s;
char ans;
do
{
s=scan.next();
ans=s.charAt(0);
if (ans == 'p')
{
prize.getPrize_Number();
}
if (ans == 'f')
{
System.out.println("-----------获奖情况-----------");
System.out.println();
if (prize.flag != 0)
{
player[prize.flag].print();
}
else
{
for (int i=0; i<num; i++)
{
player[i].print();
}
}
System.out.println("-----------获奖情况-----------");
}
if (ans == 'q')
{
quit=1;
break;
}
}
while (s.length() == 0 || (ans != 'y' && ans != 'Y'));
if (quit == 1)
{
System.out.println("----------End----------");
break;
}
player[now_id-1].reset_roll();//重置
player[now_id-1].play();
player[now_id-1].out(prize,player);
if (now_id == num) now_id=1;
else now_id++;
System.out.println("----------End----------");
System.out.println();
}
System.out.println("-----------获奖情况-----------");
System.out.println();
if (prize.flag != 0)
{
player[prize.flag].print();
}
else
{
for (int i=0; i<num; i++)
{
player[i].print();
}
}
System.out.println("-----------获奖情况-----------");
scan.close();
}
}