简单博饼游戏的实现(java)
游戏规则:
游戏使用骰子一副(6个),参与游戏的玩家轮流依次掷骰子,看骰子点数得饼:
- 有1个“四点”,得“一秀”饼;
- 有2个“四点”,得“二举”饼;
- 有3个“四点”,得“三红”饼;
- 有4个相同点数(除四点外),得“四进”饼;
- 若骰子点数分别为1-6顺序排列,得“对堂”饼;
- 玩家得“状元”饼的情况有几种,其等级按从小到大排列如下:
- 有4个“四点”,加上2个“一点”,得“状元插金花”;
- 有5个相同点数的,得“五子登科”;
- 有4个“四点”,得“状元”;
- 特殊情况: 若玩家掷出6个“四点”得“六杯红”,则直接夺得所有奖品。
程序要求:
(1)游戏开始时,可由玩家设置奖品数,例如:设“状元”1个,“对堂”2个,“三红”4个,“四进”8个,“二举”16个,“一秀”32个。
(2)游戏开始时,可设定玩家人数,游戏中应提示各位玩家轮流依次掷骰子,例如“1号玩家请掷筛子:y”;
(3)游戏中,应显示玩家每次掷得的点数,并显示得奖情况。例如“1,2,3,5,5,6 无奖,继续努力”;“1,4,4,3,5,6 二举,恭喜”。程序应能保存各位玩家得奖的记录。
(4)游戏设定的“一秀”、“二举”、“三红”、“四进”、“对堂”的奖品若领完,后续玩家若再掷出此类点数,不再得奖。但在上述奖品领完前,“状元饼”采取追饼的方式,即在其他奖品分完前,后一个掷得“状元”的人若比前一个“状元”等级大,则可追得“状元饼”。
(5)所有奖品分完,游戏结束。或者某玩家掷出6个“四点”,夺得所有奖品,其他玩家将同时失去所有奖品,游戏结束。
(6)游戏结束后,应输出所有玩家得奖情况。
附:各种得奖情况图示
关于博饼游戏代码的一些说明
设计思路:总体设计思路是考虑先将总体的游戏代码框架搭好然后再去实现一些游戏逻辑,这样实现会较为轻松。
(1)用面向对象的思想,游戏的玩家可以封装成一个类,其中包含玩家的id、获奖情况以及用来比较状元之间追饼关系的flag。相关代码如下:
(2)然后主程序也封装成一个公共类名为bobing,在主程序中实现相关逻辑
具体实现:
第一步:设置玩家数量,对不合法的输入值进行提醒,并让用户再次输入
第二步:设置奖品数量,用6个变量去存储,然后让用户去输入奖品数,对不合法的值进行判断,这里只截取一部分代码
第三步:创建对象数组,并初始化
第四步:开始游戏,用随机数来模拟掷色子,并用一个数组去存储掷色子的结果,如果掷到第六个时则对该次循环对应的玩家所掷出的色子进行判断,判断他的获奖情况,并存储在对应的类数组中。当循环到第六次,此时循环体中i为5,此时对该玩家的所有属性进行更改,下图我使用了6个flag去对所掷出的6个色子进行数据保存,之后可以用这6个flag去判断该玩家的获奖情况,一次循环对应一个人的全部属性的改变,直到游戏结束
第五步:用这6个flag去讨论获奖情况,因为游戏中有个特殊情况-----六杯红 该情况要单独拿出来讨论,我这里还用了常量YIXIU、DUITANG等常量去保留各个奖品数,当four_flag=6时,将全部奖品数归0,该玩家获得所有奖品数,对应的奖品数组全部赋值,并将其他玩家获得的奖品数全部归0
第六步:最重要的是追饼的实现,所以先对追饼进行实现(此次游戏实现的是状元数只有1个的情况),实现思路是写个静态变量prize_flag,并初始化为0
当有玩家抽到状元时,判断抽到的状元的等级,与之前抽到状元的玩家比较,那么怎么比较呢?
我是这样想的,设置除了六杯红外的3个状元等级-----4个4的状元为等级1,五子登科为2,状元插金花为3。假设第一次有人抽到状元而且是4个4的状元,则将全局的prize_flag置为1,并将玩家中的player_flag置为1,假设后来还有人抽到4个4的状元,则用1和prize_flag去比较,看下1是否大于prize_flag,大的话将prize_flag置为1并将玩家中的player_flag置为1,在这里显然不行所以改不了改玩家的状态,所以无法获得状元奖品。可以对应现实中博饼游戏里奖品被人先拿而无法获奖的情况,其他两种情况类似
当然如果该玩家的状元比较大,比如说是五子登科时则依旧比较prize_flag与状元等级之间的大小关系,满足小于关系时才改变该玩家类的属性,只不过这里是把prize_flag和player_flag置为2
这样在最后输出所有玩家的获奖情况时,只需遍历所有玩家比较谁的player_flag等于prize_flag谁就获得状元奖品。
第七步:对游戏结束条件的编写和全部情况的逻辑编写-------这里要设置一个条件,不能无限追饼,这样游戏就没有意义,所以要在除了状元外的所有奖品都被人拿走后而且状元已经被决出来的情况直接结束游戏,若状元还未有人抽中,则继续游戏直到一名玩家抽中状元,并且此时结束游戏
全部逻辑的编写都是以four_flag为核心进行讨论,分情况讨论为0、1、2、3、4、5、6这七种情况,举个例当four_flag为2时的情况如下:
其他情况类似,要注意判断是否还有相对应的奖品存在,若不在则无法获奖,要输出无奖,继续努力
第八步:实现状元获奖者属性的更改,并将上述讨论的全部结果从类数组中输出,相应代码的实现:
简单博饼游戏的实现(java)相关推荐
- php 摇骰子,php实现的中秋博饼游戏之掷骰子并输出结果功能详解
本文实例讲述了php实现的中秋博饼游戏之掷骰子并输出结果功能.分享给大家供大家参考,具体如下: 前面讲述了php实现的中秋博饼游戏之绘制骰子图案功能,纯php实现,就要用php来生成图案,第一步就先绘 ...
- php做的中秋博饼游戏之绘制骰子图案功能示例
先看代码 header('Content-Type:image/png'); $img = imagecreatetruecolor(200, 200); $white = imagecoloral ...
- 厦门中秋博饼程序!(JAVA编写)
/*博饼,这是一个Applet程序,要求:记录已经获取的每种奖品的数目,如果某种奖品用完了,再博出的相应点数不获奖. 游戏结束的条件是:状元已经产生,而且奖品已经用完.跟踪每个获奖过程,一直到游戏结束 ...
- 中秋博饼游戏的实现(c++)
博饼可以说是福建闽南特色,而且近几年来有向北方向辐射影响的趋势,是根据古时候朝廷的官阶作为参照考量的标准.博饼活动存在了三百多年,并且还在被不断地完善和发扬光大,这就是对博饼这项活动最好的褒奖! 中秋 ...
- java简单通讯录的实现02person类_用java实现简单的小游戏(你一定玩过)
用java实现简单的小游戏(你一定玩过) 对于java初学者来说,通过一些学习小游戏来对swing学习以及对java基础的学习是一个好的方法,同时也给学习带来了很多的乐趣,接下来就给大家分享一个jav ...
- java实现简单窗体小游戏----球球大作战
java实现简单窗体小游戏----球球大作战 需求分析 1.分析小球的属性: 坐标.大小.颜色.方向.速度 2.抽象类:Ball 设计类:BallMain-创建窗体 BallJPanel- ...
- 推箱子java下载_Java实现简单推箱子游戏
本文实例为大家分享了Java实现简单推箱子游戏的具体代码,供大家参考,具体内容如下 *编写一个简易的推箱子游戏,使用10*8的二维字符数据表示游戏画面,H表示墙壁; &表示玩家角色: o表示箱 ...
- java骰子_Java实现的简单掷骰子游戏示例
本文实例讲述了Java实现的简单掷骰子游戏.分享给大家供大家参考,具体如下: 要求: 掷两个骰子,每个骰子有六面, 分别为1.2.3.4.5.6.检查这两个骰子的和. 如果为2.3或12你就输了:如果 ...
- java做小窗体_java实现简单窗体小游戏----球球大作战
java实现简单窗体小游戏----球球大作战 需求分析 1.分析小球的属性: 坐标.大小.颜色.方向.速度 2.抽象类:Ball 设计类:BallMain-创建窗体 BallJPanel-画小球 ...
- 用java做一个简单的打字游戏
Java也是可以做桌面程序的.只不过需要运行在装有JDK的电脑环境上,所以应用不是很广泛,但是用来提高自身的代码逻辑还是可以的!偶有一天看到金山的打字通,就想起何不做个简单的打字游戏用来练练手.于是就 ...
最新文章
- RanceQuest2_从委托到Lambda_会用(递归数学函数)
- 目标检测比赛中的tricks集锦
- 用Cocos Studio 2.3.2制作UI界面中控件不再支持运行3d动作特效
- arraylist 初始化_第一章 C#数据结构--数组和ArrayList
- Lucene 源码分析之倒排索引(三)
- 洛谷 P1101 单词方阵
- CentOS 7安装mysql-5.6.17
- html 开发资料 英文,HTML 中的框架(国外英文资料).doc
- 1 Linux挂载光盘与U盘
- 简单hbase java,Hbase 简单java API 操作
- git push本地代码到github出错
- 《信息安全工程》读书笔记
- 智能优化算法:原子搜索优化算法 -附代码
- 将Subversion(SVN)日志记录导出到excel表格(理论windows和Linux通用)
- 白山搜索引擎优化收费_白山SEO优化_专业搜索引擎优化、整站优化、快速排名公司...
- 用axure整理,体检软件-----第一天
- linux一键安装lamp教程,CentOS7下LAMP一键安装包教程
- 为什么需要等待2MSL
- 帝国cms 标签php,帝国CMS ecmsinfo万能标签
- JAVA用Math 给pi赋值_导入Math.PI作为参考或值
热门文章
- ZEMAX 中三种设计优化方法
- 云计算的工作原理是什么?
- 数据结构21:递归可视化(谢尔宾斯基三角形)
- SQL数据库练习题以及答案(46例题)
- 清除ie各种缓存.cmd
- js代码编写新年倒计时
- fatal:unable to access ‘https://github....‘:Failed to conect to github.com port 443:拒绝连接的解决方法
- NC6 UAP流程平台适配 类 nc.itf.scmpub.reference.uap.pf.PfServiceScmUtil
- EasyCamera轻松集成Camera拍照
- 网线制作相关基础知识