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

📄 tankcanvas.java

📁 Game MIDlet BanTank Java
💻 JAVA
字号:
package demo;import java.io.IOException;import java.util.Random;import javax.microedition.lcdui.Graphics;import javax.microedition.lcdui.game.GameCanvas;import javax.microedition.lcdui.game.LayerManager;import javax.microedition.lcdui.game.Sprite;/** * * @author lynhung_pro */public class TankCanvas extends GameCanvas implements Runnable{    private static final int SPEED = 3;    private static final int TIME = 30;    private Sprite redTank, bullet;    private boolean interrupted;    private LayerManager lm;    private TankDesign design;    private Sprites sprites;    private Sprite [] sprite;    private Random rand;    private TankRandom spriteRandom;    private int Level = 2;    private TankBullet tankBullet;    private byte direction = GameCanvas.UP;    public TankCanvas() throws IOException, InterruptedException{        super(true);        try{            Init();        }catch(IOException Ex){            Ex.printStackTrace();        }    }    public boolean wallCollides(Sprite sprite){        return ( sprite.getX() < 0                || sprite.getY() < 0                || sprite.getX() > (getWidth() - sprite.getWidth())                || sprite.getY() > (getHeight() - sprite.getHeight()));    }    public boolean spriteCollides(Sprite sprite) {        boolean hit = false;            for(int i=0;i<Level;i++){            if (sprite.collidesWith(                sprite==this.sprite[i]?redTank:this.sprite[i], true)){                hit = true;            }        }        return hit;    }    public void Init() throws IOException, InterruptedException{        //Khoi tao cac lop        design = new TankDesign();        lm = new LayerManager();        sprites = new Sprites(design.getImage(),15,15);        //Khoi tao cac sprite        redTank = sprites.getRedTank();        sprites.addTank(lm, redTank, 100, 100);        sprite = new Sprite[Level];        for(int i=0;i<Level;i++){            sprite[i] = sprites.getGreenTank();            sprites.addTank(lm, sprite[i], 15, 20*i);        }        //Hoan tat va ve len man hinh        design.updateLayerManagerForScreen(lm);        //Khoi tao luong cho SpriteRandom        for(int i=0;i<Level;i++){            spriteRandom = new TankRandom(this, sprite[i]);            spriteRandom.setSequences(                    design.greenTankSeqUp, Sprite.TRANS_NONE,                    design.greenTankSeqDown, Sprite.TRANS_NONE,                    design.greenTankSeqLeft, Sprite.TRANS_NONE,                    design.greenTankSeqRight, Sprite.TRANS_NONE);            (new Thread(spriteRandom)).start();        }    }    public void sleepTime(int time){        try{                Thread.sleep(time);            }catch(InterruptedException Ex){                Ex.printStackTrace();        }    }    public void gameStop(){        this.interrupted = true;    }    public void shutRedBullet() throws IOException, InterruptedException{        int xBullet = 0,yBullet = 0;        final int SIZE = 5;        if(direction == GameCanvas.UP){            xBullet = redTank.getX() + SIZE;            yBullet = redTank.getY();        }        if(direction == GameCanvas.DOWN){            xBullet = redTank.getX() + SIZE;            yBullet = redTank.getY() + 2*SIZE;        }        if(direction == GameCanvas.LEFT){            xBullet = redTank.getX();            yBullet = redTank.getY() + SIZE;        }        if(direction == GameCanvas.RIGHT){            xBullet = redTank.getX() + 2*SIZE;            yBullet = redTank.getY() + SIZE;        }        sprites = new Sprites(design.getImage(), 5, 5);        bullet = sprites.getRedBullet();        bullet.setPosition(xBullet, yBullet);        bullet.setVisible(true);        lm.append(bullet);        design.updateLayerManagerForScreen(lm);        tankBullet = new TankBullet(this, bullet, direction);        (new Thread(tankBullet)).start();        sleepTime(4*TIME);    }        public void shutGreenBullet(Sprite sprite,byte direct) throws IOException, InterruptedException{        int xBullet = 0,yBullet = 0;        final int SIZE = 5;        if(direct == GameCanvas.UP){            xBullet = sprite.getX() + SIZE;            yBullet = sprite.getY();        }        if(direct == GameCanvas.DOWN){            xBullet = sprite.getX() + SIZE;            yBullet = sprite.getY() + 2*SIZE;        }        if(direct == GameCanvas.LEFT){            xBullet = sprite.getX();            yBullet = sprite.getY() + SIZE;        }        if(direct == GameCanvas.RIGHT){            xBullet = sprite.getX() + 2*SIZE;            yBullet = sprite.getY() + SIZE;        }        sprites = new Sprites(design.getImage(), 5, 5);        bullet = sprites.getGreenBullet();        bullet.setPosition(xBullet, yBullet);        bullet.setVisible(true);        lm.append(bullet);        design.updateLayerManagerForScreen(lm);        tankBullet = new TankBullet(this, bullet, direct);        (new Thread(tankBullet)).start();    }    public void run() {        Graphics g = getGraphics();        while(!interrupted){            int keyState = getKeyStates();            if ((keyState & LEFT_PRESSED) != 0) {                direction = GameCanvas.LEFT;                redTank.setFrameSequence(design.redTankSeqLeft);                redTank.move(-SPEED, 0);                if(spriteCollides(redTank)||(wallCollides(redTank))){                    redTank.move(SPEED, 0);                }            } else if ((keyState & RIGHT_PRESSED) != 0) {                direction = GameCanvas.RIGHT;                redTank.setFrameSequence(design.redTankSeqRight);                redTank.move(SPEED, 0);                if(spriteCollides(redTank)||(wallCollides(redTank))){                    redTank.move(-SPEED, 0);                }            } else if ((keyState & UP_PRESSED) != 0) {                direction = GameCanvas.UP;                redTank.setFrameSequence(design.redTankSeqUp);                redTank.move(0, -SPEED);                if(spriteCollides(redTank)||(wallCollides(redTank))){                    redTank.move(0, SPEED);                }            } else if ((keyState & DOWN_PRESSED) != 0) {                direction = GameCanvas.DOWN;                redTank.setFrameSequence(design.redTankSeqDown);                redTank.move(0, SPEED);                if(spriteCollides(redTank)||(wallCollides(redTank))){                    redTank.move(0, -SPEED);                }            }else if((keyState & FIRE_PRESSED) != 0){                try {                                        shutRedBullet();                } catch (IOException ex) {                    ex.printStackTrace();                } catch (InterruptedException ex) {                    ex.printStackTrace();                }            }else {            }            this.lm.paint(g, 0, 0);            flushGraphics(0, 0, getWidth(), getHeight());            sleepTime(TIME);        }    }}

⌨️ 快捷键说明

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