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图表示:

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

 

          

 

   

你可能感兴趣的:(java,游戏,UML)