Beetle游戏java实现

游戏规则:参与人数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图表示:

BeetleDieBeetleGame

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

 

          

 

   

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
蜣螂算法是一种受到蜣螂行为启发的启发式算法,用于解决优化问题。蜣螂是地里很常见的昆虫,它们以它们独特的方式滚动着它们找到的动物粪便。蜣螂行进时遵循一套简单但有效的规则,这就是蜣螂算法所依赖的。 蜣螂算法的核心概念是基于蜣螂滚动粪便时的行为: 1. 直线行进:蜣螂以直线的方式前进,最大限度地减少路程。 2. 循环滚动:一旦蜣螂遇到一个障碍物(如树木),它会利用循环滚动的方式,围绕障碍物找到通往目的地的最短路径。 3. 信息素跟踪:蜣螂在滚动过程中会释放一种特殊的化学物质,称为信息素,用于标记它所走过的路径。其他蜣螂可以根据这些信息素找到更短的路线。 将蜣螂的行为应用于优化算法中,可以帮助解决复杂的问题。例如,在路线规划问题中,蜣螂算法可以模拟蜣螂寻找最短路径的行为,从而找到最优解。在通信网络优化中,蜣螂算法可以用于寻找最佳数据传输路径,提高网络性能。 蜣螂算法具有计算复杂度低、收敛速度快的特点。它可以应用于各种领域,如工程设计、金融投资、机器学习等,并已在实际应用中取得了一定的成功。 总而言之,蜣螂算法通过模拟蜣螂滚动粪便的行为,提出一套简单但有效的规则,用于解决优化问题。它是一种具有实际应用价值的算法,可以在许多领域中发挥作用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值