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

📄 animal.java

📁 类似于推箱子的手机游戏源码
💻 JAVA
字号:
import javax.microedition.lcdui.game.*;
import javax.microedition.lcdui.*;
import java.util.Random;



public class Animal {
  private Hunt_Canvas manCanvas;  //游戏画面
  private int[] Locus;        
  private Sprite animal;       // 图象
  private Random rnd;           // 随机种子
  private int SWidth, SHeight;  // 设备屏幕的宽度与高度
  private boolean isActive;
  private int flag;
  private int Xinit;
  private int Yinit;
  private int Xincrement;
  private Image img;

  public Animal(Hunt_Canvas manCanvas, Image img, int SWidth, int SHeight, int flag) {
    this.manCanvas = manCanvas;
    this.flag = flag;
    this.img = img;
    if(flag == 1){
        animal = new Sprite(img, img.getWidth()/2, img.getHeight());
    }
    else if(flag == 5){
        animal = new Sprite(img, img.getWidth()/3, img.getHeight());
    }
    animal.setFrame(0);
    Locus = new int[4];   
    rnd = new Random();
    this.SWidth = SWidth;
    this.SHeight = SHeight;
    isActive = true;
    
    Xinit = img.getWidth();
    Yinit = img.getHeight();
  }


 public void InitAnimalLocus() {
     animal.setTransform(Sprite.TRANS_NONE);
    Locus[0] = (rnd.nextInt() & 0x7fffffff) % 2; //两种类型路径
    switch (Locus[0]) {
      case 0:
        Locus[1] = -Xinit; //初始X坐标值
        Locus[2] = SHeight-Yinit-10; //初始的Y坐标值
        Locus[3] = (rnd.nextInt() & 0x7fffffff) % Xincrement + 5; //X坐标增量
        animal.setTransform(Sprite.TRANS_MIRROR);
        break;
      case 1:
        Locus[1] = SWidth+Xinit;
        Locus[2] = SHeight-Yinit-10;
        Locus[3] = ( (rnd.nextInt() & 0x7fffffff) % Xincrement + 5) * -1;     
        animal.setTransform(Sprite.TRANS_NONE);
        break;
    
    }
  }
  // 显示
  public void paint(Graphics g) {
    
      animal.setPosition(Locus[1], Locus[2]);
      animal.paint(g);
      if(isActive){
        animal.nextFrame();
      }
      UpdataAnimalLocus(); // 更新运行轨迹数组
    }
  
  // 更新运行轨迹数组 
  public void UpdataAnimalLocus() {
      if(isActive){
             Locus[1] += Locus[3];    
      }
    //超出边界的处理
      else if(flag == 1){
          Locus[2]+=5;
      }
      else if(flag == 5){
          Locus[2]+=20;
      }
    if (Locus[1] < -Xinit || Locus[1] > SWidth+Xinit || Locus[2] > SHeight) {    
      isActive = true;
          InitAnimalLocus();
      manCanvas.setFlag(flag,false);
    }
  }
  public Sprite getAnimal(){
    return animal;
  }
  
   
  public void setIsAnimal(boolean f){
         isActive = f;
     }
     
   public void setXincrement(int Xincre){
       this.Xincrement = Xincre;
  }
}

⌨️ 快捷键说明

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