Readers: 89 | Updated: 2008

Beetle游戏java实现

Translate Into:

网站: JavaEye  作者: viMory  链接:http://vimory.javaeye.com/blog/188534  发表时间: 2008年04月30日

声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!

游戏规则:参与人数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();       } }

 

          

 

   


本文的讨论也很精彩,浏览讨论>>


JavaEye推荐



From The Blogs

Internet Observation

2008
一封致Flash的情书
最最亲爱的Flash:      我发现就去年一年中,人们还是对你这么的不友善,说你没用,说你讨厌,说你在这个以内容为主的网络上就是个祸害。我也知道,有些暴徒仍旧在不断的败坏你的名声,他们侮辱你,用各... 查看全文

Fashion Innovation,Digital Products

2007
为游戏狂热者而生的散热装置
这些USB制冷装置被设计成能够保持你的手和手掌保持干燥,旨在进一步提高您对游戏的享受度。同样出自Themaltake公司,防排汗腕垫式装置(上图)在腕垫部位使用两个小型风扇来吹出冷空气,而桌面制冷装置... 查看全文

Fashion Innovation,Digital Products

2007
MSI GX600游戏笔记本,玩家极致享受
微星最新游戏笔记本MSI GX600上市啦!这款机型共有两个版本——GX600 Extreme Edition 和 GX600 Performance Edition。 GX600采用Intel Co... 查看全文

Fashion Innovation,Digital Products

2008
你的足印有多大?
如果你认为你正在毁坏那颗行星,那么,举起手来!没有手?噢,有意思……但我们并不这样认为,或者直到我们玩一个由美国大众媒体推出的、叫《消费后果》的小巧FLASH游戏之后。在那儿,我们将很快地变成它的忠实... 查看全文

PSP游戏下载 PSP电影下载 PSP资源下载 PMP电影

2008
PSP游戏下载:拳皇94-04全集有声版可联机Neogeo模拟器(服务器做种保证速度)
拳皇94-04全集有声版可联机Neogeo模拟器 ---Neogeo 模拟器--- 模拟器名称:Mvspsp 2.3.1 USER CN 3.xx 内核(中文版可联机) 模拟器说明:NEOGEO 模拟... 查看全文

Internet Observation

2008
自我控制
在日常的的工作业务中,我有一个独特的目标:去开创一种由消费者自己控制的虚拟世界。      这是一种挑战,虚拟世界应该不仅仅意味着大型的多玩家的游戏。这是一个问题,你能把虚拟世界的精髓演变成容易的、小... 查看全文

Fashion Innovation,Digital Products

2008
“格调”游戏
酒吧里的非数码游戏,像飞镖,桌球和桌面足球,对于那些智商不高的人,醉酒还挑战游戏的人和进行着尴尬的破冰的人都是很不错的;却通常被产品设计者忽略。这类游戏项目大多令人遗憾地严重缺少美的外观,看起来就像是... 查看全文

World,Fashion, Entertainment

2008
中国网游震后强势回归
尽管中国最近遭受到了巨大的地震灾害,但总部设在中国的CDC游戏有限公司今天宣布它的网络游戏收入在地震之后马上又恢复到了以前的水平。从电视新闻中的图片来看,我们很难相信还有中国人会有心情去玩游戏-但CD... 查看全文

World,Fashion, Entertainment

2008
影视中的喝酒游戏:欲望都市[喝酒游戏]
我承认和我喝酒的对象大部分都是男生,但是现在我们要谈论的是《欲望都市》里的女主角凯莉和她的三个好朋友,谈论这部电视剧是因为它深受女士门的喜爱。       我想你们都已经聚在一起看过这个节目了。现在,... 查看全文

World,Fashion, Entertainment

2008
旅行癖
你不必理解或让Bjork去理解,她正在另一架飞机上。《旅行癖》,冰岛歌手令人振奋的新3D视频,今天在雅虎网站上首映。这个视频的导演是Encyclopedia Picura,它包含了木偶制作,动作,模拟... 查看全文
More Articles