博饼小游戏

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();
}

}

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值