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

📄 chasesprite.java

📁 用Kjava写的一个简单的小游戏!供初学者研究研究
💻 JAVA
字号:
package found;

import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import java.util.*;

public class ChaseSprite
    extends Sprite {
  private Random rand;
  private int speed;
  private TiledLayer barrier;
  private boolean directional;
  private Sprite chasee;
  private int aggression;

  private int Left[] = {
      9, 10, 11, 10};
  private int Up[] = {
      0, 1, 2, 1};
  private int Down[] = {
      6, 7, 8, 7};
  private int Right[] = {
      3, 4, 5, 4};

  public ChaseSprite(Image image, int frameWidth, int frameHeight,
                     int chaseSpeed,
                     TiledLayer barrierLayer, boolean hasDirection,
                     Sprite chaseeSprite,
                     int aggressionLevel) {
    super(image, frameWidth, frameHeight);
    rand = new Random();
    speed = chaseSpeed;
    barrier = barrierLayer;
    directional = hasDirection;
    chasee = chaseeSprite;
    aggression = aggressionLevel;
  }

  public void update() {
    int xPos = getX();
    int yPos = getY();
    int direction = 0;

      if (Math.abs(rand.nextInt() % (aggression + 1)) > 0) {

        if (getX() > (chasee.getX() + chasee.getWidth() / 2)) {
          // Chase left
          move( -speed, 0);
          direction = 3;
        }
        else if ( (getX() + getWidth() / 2) < chasee.getX()) {
          // Chase right
          move(speed, 0);
          direction = 1;
        }
        if (getY() > (chasee.getY() + chasee.getHeight() / 2)) {
          // Chase up
          move(0, -speed);
          direction = 0;
        }
        else if ( (getY() + getHeight() / 2) < chasee.getY()) {
          // Chase down
          move(0, speed);
          direction = 2;
        }
      }

    else {
      switch (Math.abs(rand.nextInt() % 4)) {
        //  left
        case 0:
          move( -speed, 0);
          direction = 3;
          break;
          // right
        case 1:
          move(speed, 0);
          direction = 1;
          break;
          //up
        case 2:
          move(0, -speed);
          direction = 0;
          break;
          //down
        case 3:
          move(0, speed);
          direction = 2;
          break;
      }
    }

    if (barrier != null && collidesWith(barrier, true)) {
      setPosition(xPos, yPos);
    }
    if (directional) {
      switch (direction) {
        case 0:
          this.setFrameSequence(Up);
          this.nextFrame();
          break;
        case 1:
          this.setFrameSequence(Right);
          this.nextFrame();
          break;
        case 2:
          this.setFrameSequence(Down);
          this.nextFrame();
          break;
        case 3:
          this.setFrameSequence(Left);
          this.nextFrame();
          break;

      }
    }
    else {
      nextFrame();
    }
  }
}

⌨️ 快捷键说明

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