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

📄 tankrandom.java

📁 Game MIDlet BanTank Java
💻 JAVA
字号:
package demo;import java.io.IOException;import java.util.Random;import javax.microedition.lcdui.game.GameCanvas;import javax.microedition.lcdui.game.Sprite;public class TankRandom implements Runnable {    private static final int SPEED = 1;    private static final int TIME = 50;    private TankCanvas canvas;    private Sprite sprite;    private byte preDirect;    private byte direction;    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;    private Random rand;    public TankRandom(TankCanvas canvas, Sprite sprite) {        this.canvas = canvas;        this.sprite = sprite;    }    public void setSequences( int[] upSeq, int upTrans,int[] downSeq, int downTrans,            int[] leftSeq, int leftTrans, int[] rightSeq, int rightTrans) {        this.upSeq = upSeq;        this.upTrans = upTrans;        this.downSeq = downSeq;        this.downTrans = downTrans;        this.leftSeq = leftSeq;        this.leftTrans = leftTrans;        this.rightSeq = rightSeq;        this.rightTrans = rightTrans;    }    public byte randDirect(){        byte randDirect = 0;        rand = new Random();        int k = rand.nextInt(4);        if(k==0) randDirect = GameCanvas.UP;        if(k==1) randDirect = GameCanvas.LEFT;        if(k==2) randDirect = GameCanvas.DOWN;        if(k==3) randDirect = GameCanvas.RIGHT;        return randDirect;    }    public void stop() {        interrupted = true;    }    public void spriteMove(int speed){        if(direction==GameCanvas.UP){            sprite.move(0, -speed);        }        if(direction==GameCanvas.LEFT){            sprite.move(-speed, 0);        }        if(direction==GameCanvas.DOWN){            sprite.move(0, speed);        }        if(direction==GameCanvas.RIGHT){            sprite.move(speed, 0);        }    }    public void setTrans(){        if (direction==GameCanvas.UP) {            sprite.setFrameSequence(upSeq);            sprite.setTransform(upTrans);        }        if (direction==GameCanvas.DOWN) {            sprite.setFrameSequence(downSeq);            sprite.setTransform(downTrans);        }        if (direction==GameCanvas.LEFT){            sprite.setFrameSequence(leftSeq);            sprite.setTransform(leftTrans);        }        if (direction==GameCanvas.RIGHT){            sprite.setFrameSequence(rightSeq);            sprite.setTransform(rightTrans);        }        return;    }    public void collidesWithSprite(){        spriteMove(-SPEED);        canvas.sleepTime(500);        direction = randDirect();        setTrans();        while(canvas.spriteCollides(sprite)                &&(preDirect != direction)){            spriteMove(SPEED);        }        return;    }    public void collidesWithWall(){        while(sprite.getX()<0){            if(canvas.spriteCollides(sprite))                collidesWithSprite();            this.direction = GameCanvas.RIGHT;            setTrans();            spriteMove(SPEED);            canvas.sleepTime(TIME);        }        while(sprite.getX()>(canvas.getWidth()-sprite.getWidth())){            if(canvas.spriteCollides(sprite))                collidesWithSprite();            direction = GameCanvas.LEFT;            setTrans();            spriteMove(SPEED);            canvas.sleepTime(TIME);        }        while(sprite.getY()<0){            if(canvas.spriteCollides(sprite))                collidesWithSprite();            direction = GameCanvas.DOWN;            setTrans();            spriteMove(SPEED);            canvas.sleepTime(TIME);        }        while(sprite.getY()>canvas.getHeight()-sprite.getHeight()){            if(canvas.spriteCollides(sprite))                collidesWithSprite();            direction = GameCanvas.UP;            setTrans();            spriteMove(SPEED);            canvas.sleepTime(TIME);        }    }    public void run() {        direction = randDirect();        preDirect = direction;        int cnt1 = 0, cnt2 = 0;        int rot = rand.nextInt(100);        int shut = 0;        while (!interrupted) {            cnt1 ++;            cnt2 ++;            rand = new Random();            if(cnt1 > rot){                canvas.sleepTime(500);                direction = randDirect();                preDirect = direction;                cnt1 = 0;                rot = rand.nextInt(100);            }            if (direction == GameCanvas.DOWN) {                preDirect = GameCanvas.DOWN;            } else if (direction == GameCanvas.UP) {                preDirect = GameCanvas.UP;            } else if (direction == GameCanvas.LEFT) {                preDirect = GameCanvas.LEFT;            } else if (direction == GameCanvas.RIGHT) {                preDirect = GameCanvas.RIGHT;            }            setTrans();            spriteMove(SPEED);            if(canvas.spriteCollides(sprite)||canvas.wallCollides(sprite)){                collidesWithSprite();                collidesWithWall();            }            if(cnt2 > shut){                cnt2 = 0;                shut = rand.nextInt(50);                try {                    canvas.shutGreenBullet(sprite, direction);                    canvas.shutGreenBullet(sprite, direction);                } catch (IOException ex) {                    ex.printStackTrace();                } catch (InterruptedException ex) {                    ex.printStackTrace();                }            }            canvas.sleepTime(TIME);        }    }}

⌨️ 快捷键说明

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