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

📄 spriterandommovement.java

📁 Bomber mario ) Mobile game writen in java
💻 JAVA
字号:
package demo;import javax.microedition.lcdui.game.GameCanvas;import javax.microedition.lcdui.game.Sprite;/** * Animate a sprite on canvas using a simple algorithm * to recover from collisions. * * @author Karel Herink */public class SpriteRandomMovement implements Runnable {    private static final int SPEED = 4;    private DemoGameCanvas canvas;    private Sprite sprite;    private byte previousDirection = GameCanvas.DOWN;    private byte direction = GameCanvas.DOWN;    private boolean interrupted;    private int[] downSeq;    private int downTrans;    private int[] upSeq;    private int upTrans;    private int[] leftSeq;    private int leftTrans;    private int[] rightSeq;    private int rightTrans;    public SpriteRandomMovement(DemoGameCanvas canvas, Sprite sprite) {        this.canvas = canvas;        this.sprite = sprite;    }    public void setSequences(int[] downSeq, int downTrans, int[] upSeq, int upTrans, int[] leftSeq, int leftTrans, int[] rightSeq, int rightTrans) {        this.downSeq = downSeq;        this.downTrans = downTrans;        this.upSeq = upSeq;        this.upTrans = upTrans;        this.leftSeq = leftSeq;        this.leftTrans = leftTrans;        this.rightSeq = rightSeq;        this.rightTrans = rightTrans;    }    public void stop() {        this.interrupted = true;    }    public void run() {        while (!this.interrupted) {            if (this.direction == GameCanvas.DOWN) {                if (this.previousDirection != this.direction) {                    this.sprite.setFrameSequence(this.downSeq);                    this.sprite.setTransform(this.downTrans);                    this.previousDirection = this.direction;                }                this.sprite.move(0, SPEED);                if (this.canvas.spriteCollides(this.sprite)) {                    this.sprite.move(0, -SPEED);                    this.direction = GameCanvas.LEFT;                    continue;                }            } else if (this.direction == GameCanvas.UP) {                if (this.previousDirection != this.direction) {                    this.sprite.setFrameSequence(this.upSeq);                    this.sprite.setTransform(this.upTrans);                    this.previousDirection = this.direction;                }                this.sprite.move(0, -SPEED);                if (this.canvas.spriteCollides(this.sprite)) {                    this.sprite.move(0, SPEED);                    this.direction = GameCanvas.RIGHT;                    continue;                }            } else if (this.direction == GameCanvas.LEFT) {                if (this.previousDirection != this.direction) {                    this.sprite.setFrameSequence(this.leftSeq);                    this.sprite.setTransform(this.leftTrans);                    this.previousDirection = this.direction;                }                this.sprite.move(-SPEED, 0);                if (this.canvas.spriteCollides(this.sprite)) {                    this.sprite.move(SPEED, 0);                    this.direction = GameCanvas.UP;                    continue;                }            } else if (this.direction == GameCanvas.RIGHT) {                if (this.previousDirection != this.direction) {                    this.sprite.setFrameSequence(this.rightSeq);                    this.sprite.setTransform(this.rightTrans);                    this.previousDirection = this.direction;                }                this.sprite.move(SPEED, 0);                if (this.canvas.spriteCollides(this.sprite)) {                    this.sprite.move(-SPEED, 0);                    this.direction = GameCanvas.DOWN;                    continue;                }            }            try {                Thread.sleep(50);            } catch (InterruptedException ex) {                ex.printStackTrace();            }        }    }}

⌨️ 快捷键说明

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