游戏规则:参与人数1人以上,谁的甲虫最先完整谁就胜出。初始的甲虫不具有任何器官,而完整的甲虫具有躯干、头部、6条腿、两只眼、两只触角、一条尾巴。
玩法:轮你掷骰子时,按如下规定采取动作:
1:如果甲虫已有一处躯干,传骰子给下一位。否则,添加一个躯干,并再掷一次。
2:如果甲虫已有头部或没有躯干,传骰子。否则,添加一个头部,并再掷一次。
3:如果甲虫已有6条腿或没有躯干,传骰子,否则,添加两条腿,并再掷一次。
4:如果甲虫已有两只眼或没有头部,传骰子。否则,添加一只眼睛,并再掷一次。
5:如果甲虫已有两根触角或没有头部,传骰子,否则,添加一根触角,并再掷一次。
6:如果甲虫已有一条尾巴或没有躯干,传骰子。否则,添加一条尾巴,并再掷一次。
第一步:先确定这类,有甲虫类、骰子类、甲虫游戏类。
class Beetle {
//甲虫类
}
class Die {
//骰子类
}
class BeetleGame {
//甲虫游戏类
}
第二步:确定类的字段和方法。甲虫类字段有:躯干(body)、头部(head)、眼睛(eyes)、触角(feelers)、腿(legs)、尾巴(tail)。这里只取躯干和眼睛做个示例。 方法有:构造函数、躯干添加是否成功(addBody())、眼睛添加是否成功(addEye())、甲虫是否完整(isComplete())。
骰子类字段有:最上面的点数(topFace),方法有:构造函数、访问器(getTopFace())、修改器(roll())。
甲虫游戏类字段有:两只甲虫(bettle)、一只骰子(die)、一个按键掷骰子控制器(INPUT),方法有:构造函数、掷骰子判断是否要传骰子(takeTurn)、玩游戏(play())。
如下类UML图表示:
Beetle |
Die |
BeetleGame |
body:boolean
eyes:int
|
topFace:int |
INPUT:java.util.Scanner
beetle1:Beetle
beetle2:Beetle
die:Die
|
Beetle()
addBody():boolean
addEye():boolean
isComplete():boolean
|
Die()
getTopFace():int
roll():void
|
BeetleGame()
play():void
takeTurn(int,Beetle):boolean
main(String[]):void
|
第三步:Beetle类的实现
class Beetle {
private boolean body;
private int eyes;
public void addBody() {
if(body) {
return false; //如果已有一个躯干,则添加躯干失败
} else {
body = true; //如没有,则添加一个躯干
return true; //添加躯干成功
}
}
public Beetle() {
body = false;
eyes = 0;
}
public void addEye() {
if(head && eyes < 2) { //如果有头部且眼睛没有两只,对应点数4规则
eyes++; //添加一只眼睛
return true; //添加眼睛成功
} else {
return false; //添加眼睛失败
}
}
}
Die类的实现
class Die {
private int topFace;
public Die() {
this.topFace = 1; //初始上面点数为1;不然默认就为0了.
}
public int getTopFace() {
return this.topFace;
}
public void roll() {
this.topFace = ((int)Math.random()*6)+1;
//掷骰子当然要是随机方法了。采用Math类的random方法,由于它返回的是一个最小值为0,最大值小于1的双精度数,故*6之后还要加1.
}
}
BeetleGame类的实现
public class BeetleGame {
private java.util.Scanner INPUT = java.util.Scanner(System.in);
//定义按键掷骰子的控制器INPUT
private Beetle beetle1;
private Beetle beetle2;
private Die die;
public BeetleGame() {
beetle1 = new Beetle();
beetle2 = new Beetle(); //构造两只甲虫
die = new Die(); //构造一只骰子
}
public boolean takeTurn(int player,Beetle beetle) {
System.out.println("\n现在拿骰子的是玩家"+player+"你目前的甲虫情况是:");
System.out.println(beetle);
System.out.println("按回车键掷骰子:");
INPUT.nextLine(); //捕获键盘信号
roll();
System.out.println("你掷到"+die.getTopFace()+"点");
switch(die.getTopFace) { //按规则采取行动
case 1:
System.out.println("是否添加躯干");
return beetle.addBody();
...
case 4:
System.out.println("是否添加眼睛");
return beetle.addEye();
}
}
public void play() {
int player = 1;
Beetle beetle = beetle1; //第一次掷骰子初始为第一个玩家
while(!isComplete()) { //甲虫不完整
if(!(takeTurn(player,beetle))) { //传骰子给下一个玩家
if(player == 1) { player = 2; beetle = beetle2;}
} else {player = 1;beetle = beetle1;}
}
System.out.println("\n恭喜!玩家"+player+"获得了胜利!");
System.out.println("就是这只完整的甲虫"+beetle);
}
public static void main(String[] args) {
System.out.println("欢迎玩甲虫游戏!");
BeetleGame game = new BeetleGame();
game.play();
}
}
分享到:
相关推荐
PaddleTS 是一个易用的深度时序建模的Python库,它基于飞桨深度学习框架PaddlePaddle,专注业界领先的深度模型,旨在为领域专家和行业用户提供可扩展的时序建模能力和便捷易用的用户体验。
白色大气风格的乐器爱好者网站模板下载.zip
海外派遣员工管理守则
flowable-demo-master
内容概要:本文档详细介绍了一个图书馆管理系统的数据库课程设计。内容涵盖需求分析、数据库设计、SQL实现、前端实现及系统测试等环节。项目旨在支持图书借阅、归还、图书信息管理、用户管理等功能。数据库设计包括三个主要表:用户表(Users)、图书表(Books)和借阅记录表(BorrowRecords)。通过具体示例演示了表的创建、数据插入及查询操作。 适用人群:适合正在学习数据库设计或从事数据库相关工作的学生和技术人员。 使用场景及目标:①学习如何进行需求分析,确定系统的功能和数据需求;②掌握数据库设计方法,绘制ER图并转换为具体的表结构;③编写SQL语句,实现数据的增删改查操作;④实现前端页面,完成与后端的交互;⑤进行系统测试,确保各项功能正常运行。 其他说明:此文档不仅提供了理论知识,还给出了详细的代码示例,非常适合动手实践。建议在学习过程中结合文档中的示例,动手实现数据库设计、SQL操作和前端页面,从而加深对数据库技术的理解。
白色风格的手机网站模板下载.rar
白色淡雅风的商务企业网站模板下载.zip
白色大气风格的企业站通用整站网站源码下载.zip
PCle AI加速卡在医疗影像诊断中的应用.docx
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
白色大气简洁的时装模特企业网站模板下载.zip
西门子PLC 1214C 做的压机控制 可以在触摸屏上任意编辑压装逻辑 该程序为一台设备的完成程序 包含很多工能块 压机控制程序+汇川PN伺服块+脉冲控制块+以太网TCP功能块 + 气缸块+托盘坐标计算块+基恩士扫码器SR1000块+模拟量功能块 所有功能块都是基于模块话编程思路编辑功能块都是SCL语言 可移植性强 一个公式套用所有功能块 可以直接将IO引脚做成触摸屏库关联 编写思路新颖,有助于提高编程能力
通过分析,了解谷歌应用商店app的总体情况。
“开学第一课”小学儿童教育家长会宣传模板
内容概要:本文涵盖了大地测量的基本概念、任务和特点,大地测量系统与参考框架,常用坐标系及其转换方法,传统大地控制网的布设原则,光学经纬仪和全站仪的使用与检验,水平角和三角高程测量的观测方法,以及导线测量的技术要点。文中还提供了多个例题,帮助考生理解和掌握关键知识点。 适合人群:具备一定测绘基础,准备参加注册测绘师资格考试的专业技术人员。 使用场景及目标:用于备考注册测绘师资格考试,提高大地测量领域的专业知识和技能,掌握具体的测量方法和技术细节。 阅读建议:此讲义内容详实,涵盖了大量实用的技术细节,建议结合实际测量工作和练习题进行学习,以加深理解和应用能力。
白色简洁风的设计企业网站模板下载.zip
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;
白色大气风格的恐龙化石博物馆网站模板下载.zip
白色简洁风格的餐厅会员登录框源码下载.zip
白色创意风格的单反爱好者网站模板下载.zip