游戏规则:参与人数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();
}
}
分享到:
相关推荐
Beetle J2ee Application Framework(BJAF)一个功能强大而简单易用的J2EE应用开发框架。它涵盖了J2EE体系结构的表示层、业务层和持久层,为构建一个可靠、高性能、可扩展、灵活缩放的高质量企业应用系统提供了一套...
标题中的"Beetle.JT808-master.zip"表明这是一个关于JT808协议的开源项目,由Beetle框架实现,且基于C#编程语言。Beetle是一个通用的通讯框架,而JT808则是一种广泛应用于中国GPS监控系统中的通信协议。这个项目可能...
Beetle.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码Beetle.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码Beetle.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码Beetle....
【标题】"beetle 开源框架书的源码"涉及的是一个名为"beetle"的开源框架的源代码,这通常意味着该框架可能是用于Java平台,因为J2EE(Java 2 Platform, Enterprise Edition)是Java领域广泛使用的开发企业级应用的...
在标题中提到的"beetle类包含其他类",这暗示了Beetle可能是一个封装了多种功能的类库,它通过组织多个类来实现文件传输的不同组件和功能。 首先,我们可以假设Beetle类库中有一个核心的`BeetleManager`类,这个类...
- **有线网络**:通过网线将BEETLE_XL_II与路由器相连即可实现上网功能。 #### 模块化打印机 - **安装方法**:将打印机插入预留接口,并固定好。 - **调试步骤**:确保打印机驱动程序已正确安装,然后进行打印测试...
标题中的“Android-Beetle实现通过摇一摇手机就能够轻松地在GitHubGitLab和AzureDevOps上创建Bug报告”揭示了一个独特的Android应用程序——Beetle。这个应用旨在简化开发者和用户向GitHub、GitLab以及Azure DevOps...
LeetCode中文站爬虫的Java实现,持续更新+整理代码 目前完成功能: 登录并获取Cookie 获取所有题目列表 获取指定题目内容 提交题解至LeetCode,并返回submissionId 使用submissionid查询题解 使用示例: ...
已经成功应用于多个高并发量的TCP、UDP框架通信接口,
"Popular Beetle"是一款专业的数据库比较和数据整合工具,专为软件测试人员设计,旨在提高工作效率并确保数据的一致性。该工具提供了强大的功能,能够帮助用户深入对比不同数据库之间的结构差异,同时支持数据的同步...
在实际应用中,Java实现的360度全景图展示系统会通过JavaScript或Java本身处理用户的鼠标拖动、缩放等交互操作,平滑地调整全景图视角。同时,为了优化性能,可能会使用分块加载技术,只加载当前可视区域的图像部分...
回到Beetle项目本身,其“摇一摇”功能可能是通过手机应用实现的,用户只需摇动手机即可触发bug报告的创建界面。这样的设计降低了报告bug的门槛,鼓励用户及时反馈问题,从而帮助开发团队更快地发现并修复bug。 ...
天牛须算法(Beetle Antennae Search Algorithm,简称BAS),是一种新型的智能优化算法,它以长角天牛的搜索行为为灵感而设计。长角天牛因其长长的触须而著名,这些触须常常比它们的身体还要长。BAS算法模拟了这些...
beetle是基于c#编写的高性能Socket tcp组件,它基于SocketAsyncEventArgs的实现并提供了发送队列和接收队列的支持,可以根据情况灵活地设置1-N个发送队列和接收队列。除了队列上的支持组件还提供Buffer缓冲池和基于...
在Beetle.java示例中,通过静态变量和静态初始化块演示了静态属性和静态代码块的初始化顺序。静态属性和静态代码块在类加载时就会进行初始化,并且按代码顺序依次执行。在Beetle类中,静态变量x1和x2的初始化顺序取...
本压缩包“Beetle.zip”提供了一个基于Scratch的编程项目源代码,旨在帮助初学者通过一个有趣的“Beetle”游戏案例学习编程。 在“Beetle.sb3”文件中,包含了整个游戏的完整源代码,用户可以直接在Scratch环境中...
数据操作的jar包,包括oracle/mssql,通用~
5. **游戏逻辑和算法**:编写游戏规则,实现游戏循环,以及处理碰撞检测、动画帧管理等。这通常涉及到一些算法的应用,如A*寻路算法或简单的物理模拟。 6. **文件I/O和数据存储**:游戏可能需要保存和加载玩家进度...
标题中的“c#_以Beetle为基础SOCKET服客端(WPF)与客户端(winphone\win8 metro)”指的是一个使用C#编程语言构建的网络通信应用,它基于Beetle框架,实现了SOCKET服务器端(WPF)以及Windows Phone和Windows 8 Metro...
【标题】"简单聊天室实现"揭示了一个编程项目,它基于Beetle库构建了一个基本的聊天室应用程序。Beetle通常是一个用C#编写的高性能Socket TCP组件,旨在简化网络通信,特别是对于实时和高吞吐量的应用场景。在这个...