⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plane.java

📁 一种用java语言开发的飞行旗新玩法,四种颜色的飞行旗给你不一样的体验!
💻 JAVA
字号:
public class Plane 
{
  public String status=new String("wait");  //定义飞机的状态,初始值为等待
  
  public String color=new String();          //飞机的颜色

  int player,station;              //定义玩家x,飞机的位置
  
  public PlaneGame pg=new PlaneGame();  //产生一个PlaneGame对象
  
  public ConXY xy;                    //飞机的坐标
  
  public int num;                      //随机数
  
  private int times=0;                 //以后在fly()方法中有用,防止无限循环
  
  //定义特殊点,specialP[0],specialP[1]分别与specialD[0],specialD[1]相对应,请看common()方法
  
  private int specialP[][]={{13,17,49},{26,30,10},{39,43,23},{0,4,36}};//冲的两点升天点 在 map.gif 中有表示 P 
  private int specialD[][]={{29,33},{26,30},{3,7},{16,20}};  //冲后的落点 在 map.gif 中有表示 d 
  
  public Plane(String color,int player,int station,String status)
  {
     this.color=color;
     this.player=player;
     this.station=station;
     this.status=status;
   }
   
  public void wait(int random)  //飞机的等待方法
  {
    num=random;
    
    if(num==6)    //如果随机数是6那么飞机就起飞了,呵呵!
     {
       flyUp();
     }
     else{
           calculnate();   //计算飞机的坐标
         }
  }
   
   private void flyUp()  //飞机的起飞方法
   {
      status="flyUp";
      calculnate();      //计算飞机的坐标
   }
   
   public void move(int random)  //飞机的移动方法
   {  
      num=random;
      
      common(num);   //调用飞机的逻辑计算方法

    }
    
    public void fly()    //飞机的飞跃方法
    {
       num=0;
       times++;          
       station+=4;      //飞机的位置加4 
       if(times==1)
       { common(num); }  //调用飞机的逻辑计算方法

    }
     
     //请看飞机的数据流图
     public void common(int random)  //公共的飞机计算,检测方法
     {
        num=random;
        
        station+=num;
         //==================================飞机在临近航道的最后一个格子时========================
                 //因为飞机超过了第51格,就要转换
         if(player==0&&station>51)  //如果玩家是1号并且其位置大于51 
          {
            num=0;
            status="toSky";
           
            station=station-specialP[player][2];
           
            toSky(num);  //这架飞机要进入升天格
          }
         
          else if(station>51)   //如果玩家不是第一个,那么就接着判断它的位置是否是大于51的
                 {
                    station=station-52;
                   
                    if(pg.moveMap[player][0]==color)  //判断下一个格子是否与飞机同色
                    {
                      if(times==0||times==1)       //用time来判断飞机是不是重新调用了common()
                        {
                         if(station==specialP[player][0]) //判断飞机的下一格是否为special格子
                         {
                           station=specialD[player][0];   //对应的特殊格
                           calculnate();
                         } 
                        else if(station==specialP[player][1]) //判断飞机的下一格是否为special格子
                          {
                            station=specialD[player][1];   //对应的特殊格
                            calculnate();
                          }
                          fly();                       //游戏规则遇到与飞机相同的格子就飞跃                    
                          calculnate();
                         }
                      }
                   }
           //===================非(飞机在临近航道的最后一个格子时)========================
           else if(pg.moveMap[player][0]==color&&station!=specialP[player][2]) //格子的颜色与飞机的颜色
                                  {                                             //--并且该格子不是升天格 
                   if(times==0||times==1) //用time来判断飞机是不是重新调用了common()
                     {
                       if(station==specialP[player][0])  //判断飞机的下一格是否为special格子
                        {
                          station=specialD[player][0];
                          calculnate();
                        }
                       else if(station==specialP[player][1])  //判断飞机的下一格是否为special格子
                          {
                            station=specialD[player][1];
                            calculnate();
                          }
                       else{  fly();              //游戏规则遇到与飞机相同的格子就飞跃 
                              calculnate();}
                      
                     }
                  }
            else if(station>specialP[player][2])   //游戏规则是相应的飞机在到了升天格后就不能再往
                  {                                //    下走了,必须进入升天格内,这个方法就是来
                    num=0;                         //     处理这样的问题
                    toSky(num);
                  }
            else  { calculnate(); }
       }
      
       public void toSky(int random) //飞机升天方法
       {
         num=random;
         status="toSky";
        
         station+=num;
        
         if(station>6)
         {
           station=12-station;      //游戏规则是飞机所撒的点数大于其位置到终点的格子数
           calculnate();            //    就要退回来,这里就是来处理的
         }
         else if(station==6)
         {
           status="complete";
           pg.complete[player]++;
           calculnate();
         }
         else { calculnate(); }
       }
      
       private void calculnate()   //坐标计算方法,可以忽略
       {
         int n=station+1;
         int x,y;
         x=0;y=0;
         if(status=="flyUp")
         {
           if(player==0)
             {
               xy=new ConXY(180,660);
             }
           else if(player==1)
             {
                xy=new ConXY(20,180);
             }
           else if(player==2)
             {
               xy=new ConXY(500,20);
             }
           else if(player==3)
             {
               xy=new ConXY(660,500);
             }
         } 
         /////////////
     if(status=="move")
     {
      switch(n)
      { case 1: case 4: case 18: case 21:
		  x=220;
		  if(n==1)
		  	y=620;
		 if(n==4)
			 y=500;
		 if(n==18)
			 y=180;
		  if(n==21)
			y=60;
		 xy=new ConXY(x,y);
		 break;
	case 27: case 30: case 44: case 47:
		x=460;
		if(n==27)
			y=60;
		if(n==30)
			y=180;
		if(n==44)
			y=500;
		if(n==47)
			y=620;
	   xy=new ConXY(x,y);
		break;
	case 5: case 17:
		x=180;
		if(n==5)
			y=460;
		if(n==17)
			y=220;
	   xy=new ConXY(x,y);
		break;
	case 31: case 43:
		x=500;
		if(n==31)
			y=220;
		if(n==43)
			y=460;
		xy=new ConXY(x,y);
		break;
	
	case 8: case 14:
		x=60;
		if(n==8)
			y=460;
		if(n==14)
			y=220;
		xy=new ConXY(x,y);
		break;
	case 34: case 40:
		x=620;
		if(n==34)
			y=220;
		if(n==40)
			y=460;
		xy=new ConXY(x,y);
		break;
	case 22: case 23: case 24: case 25: case 26:
		y=40;
		x=(n-16)*40+20;
		xy=new ConXY(x,y);
		break;
	case 35: case 36: case 37: case 38: case 39:
		x=640;
		y=(n-29)*40+20;
		xy=new ConXY(x,y);
		break;
	case 9: case 10: case 11: case 12: case 13:
		x=40;
		y=(19-n)*40+20;
		xy=new ConXY(x,y);
		break;
	case 48: case 49: case 50: case 51: case 52:
		y=640;
		x=(58-n)*40+20;
		xy=new ConXY(x,y);
		break;
	case 15: case 16: case 32: case 33:
		y=200;
		if(n==15)
			x=100;
		if(n==16)
			x=140;
		if(n==32)
			x=540;
		if(n==33)
			x=580;
		xy=new ConXY(x,y);
		break;
	case 6: case 7: case 41: case 42:
		y=480;
		if(n==6)
			x=140;
		if(n==7)
			x=100;
		if(n==41)
			x=580;
		if(n==42)
			x=540;
		xy=new ConXY(x,y);
		break;
	case 2: case 3: case 19: case 20:
		x=200;
		if(n==2)
			y=580;
		if(n==3)
			y=540;
		if(n==19)
			y=140;
		if(n==20)
			y=100;
		xy=new ConXY(x,y);
		break;
	case 28: case 29: case 45: case 46:
		x=480;
		if(n==28)
			y=100;
		if(n==29)
			y=140;
		if(n==45)
			y=540;
		if(n==46)
			y=580;
		xy=new ConXY(x,y);
		break;
    }
  }
  
  if(status=="toSky"||status=="complete")
  {
     if(player==0)
       { 
         n+=52;
         switch(n)
         {
          case 53: case 54: case 55: case 56: case 57: case 58:
              x=340;
              y=(67-n)*40+20;
              xy=new ConXY(x,y);
              break;
          }
         }
       else if(player==2)
          {
            n+=64;
            switch(n)
            {
              case 65: case 66: case 67: case 68: case 69: case 70:
                 x=340;
                 y=(n-63)*40+20;
                 xy=new ConXY(x,y);
                 break;
             }
           }
        else if(player==1)
             {
               n+=58;
               switch(n)
               {
                 case 59: case 60: case 61: case 62: case 63: case 64:
                     y=340;
                     x=(n-57)*40+20;
                     xy=new ConXY(x,y);
                     break;
                }
              }
          else if(player==3)
              {
                n+=70;
                switch(n)
                {
                  case 71: case 72: case 73: case 74: case 75: case 76:
                     y=340;
                     x=(85-n)*40+20;
                     xy=new ConXY(x,y);
                     break;
                 }
                }
          }
     

  }
}



              

                      
                    
        
        
      
      
           
           
           
                           
                       
      
      
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -