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

📄 battlecanvas.java

📁 j2me的坦克大战 元代码 单机版和蓝牙联网版
💻 JAVA
字号:
import javax.microedition.lcdui.*;import javax.microedition.lcdui.game.*;import java.io.*; public class BattleCanvas extends GameCanvas implements Runnable,CommandListener{        public static int level=1;    private  boolean win = false;    private  boolean lose = false;    public  static boolean gameover=false;//游戏结束    public  static boolean interrupt;//控制kingSprite    public  static void setInterrupt(boolean interrupt) {        BattleCanvas.interrupt = interrupt;    }    public boolean pressStop=false;    private Command listCommand = new Command("Sound Setting",Command.ITEM,1);    private Command pauseCommand = new Command("Pause",Command.STOP,1);    private Command resumeCommand = new Command("Continue",Command.STOP,1);    private Command exitCommand = new Command("Exit",Command.ITEM,2);    private Command nextCommand = new Command("NextLevel",Command.BACK,1);    private GameDesign gameDesign;    //平铺层,Base,Tree,Water,Things    private TiledLayer base;    private TiledLayer water;    private TiledLayer trees;    private TiledLayer things;    //绘图者,LayerManager    private LayerManager layerManager;    //精灵    private KingSprite kingSprite;    private  TentSprite tentSprite;    public TentSprite getTentSprite() {        return tentSprite;    }    private UserSprite userSprite[];    private EnemySprite enemySprite[];    private BulletSprite userBulletSprite[];    private BulletSprite enemyBulletSprite[];    private PetSprite petSprite[];        private  int UserNum=1;            private  int UserBulletNum=1;    private  int EnemyNum=6;      //total enemy number        private  int EnemyBulletNum=6;    private  int PetNum=4;      //实用引用    private GameMidlet gameMidlet;        public BattleCanvas(GameMidlet gameMidlet){        super(true);        this.gameMidlet = gameMidlet;        try {            //Sound.instance.gamestartPlayer();            Sound.instance.resumeBack();                        this.addCommand(pauseCommand);            this.addCommand(listCommand);            this.addCommand(exitCommand);            this.setCommandListener(this);            this.init();        } catch (IOException ex) {            ex.printStackTrace();        }    }    public void init()throws IOException{        //绘图者添加平铺层        gameDesign = new GameDesign();        layerManager = new LayerManager();        switch(BattleCanvas.level){            case 1:gameDesign.updateLayerManagerForSchool(layerManager);break;            case 2:gameDesign.updateLayerManagerForSchool1(layerManager);break;            //case 3:gameDesign.updateLayerManagerForSchool2(layerManager);break;        }         //添加king        Image kingImage = null;        try{             kingImage = Image.createImage("/tank/king.png");                      }catch(IOException e){            e.printStackTrace();        }        kingSprite = new KingSprite(kingImage,layerManager,this);        //帐篷        Image tentImage = null;        try{             tentImage = Image.createImage("/tank/tent.png");                      }catch(IOException e){            e.printStackTrace();        }        tentSprite = new TentSprite(tentImage,layerManager,this);        //1辆玩家坦克,1发玩家子弹;6辆敌人坦克,6发敌人子弹,4只Pet         Image bulletImage = null;          Image userImage = null;         Image enemyImageNomal=null;         Image enemyImageGreen=null;         Image enemyImageRed=null;         Image octImage = null;         Image dogImage = null;         Image catImage = null;         Image spookImage = null;         try{             bulletImage = Image.createImage("/tank/bullet.png");              userImage = Image.createImage("/tank/user.png");             enemyImageNomal = Image.createImage("/tank/enemyNomal.png");             enemyImageGreen = Image.createImage("/tank/enemyGreen.png");             enemyImageRed = Image.createImage("/tank/enemyRed.png");             octImage = Image.createImage("/tank/oct.png");             dogImage = Image.createImage("/tank/dog.png");             catImage = Image.createImage("/tank/cat.png");            spookImage = Image.createImage("/tank/spook.png");                }catch(IOException e){            e.printStackTrace();        }       userBulletSprite = new BulletSprite[UserBulletNum];       userSprite = new UserSprite[UserNum];       enemyBulletSprite = new BulletSprite[EnemyBulletNum];       enemySprite = new EnemySprite[EnemyNum];       petSprite = new PetSprite[PetNum];//玩家初始化        for(int i=0;i<UserNum;i++){            userBulletSprite[i] = new BulletSprite(bulletImage,layerManager,100,true,this,gameDesign,kingSprite,tentSprite);//true表示玩家子弹;              userSprite[i] = new UserSprite(userImage,layerManager,userBulletSprite[i],this,gameDesign,kingSprite,tentSprite);        }//敌人初始化        for(int i=0;i<EnemyNum;i++){            int t = i%4;             if(t==0||t==1){                enemyBulletSprite[i] = new BulletSprite(bulletImage,layerManager,100,false,this,gameDesign,kingSprite,tentSprite);//false表示敌人子弹;                  enemySprite[i] = new EnemySprite(enemyImageNomal,layerManager,enemyBulletSprite[i],1,this,gameDesign,kingSprite,tentSprite);            }else if(t == 2){                enemyBulletSprite[i] = new BulletSprite(bulletImage,layerManager,100,false,this,gameDesign,kingSprite,tentSprite);//false表示敌人子弹;                  enemySprite[i] = new EnemySprite(enemyImageGreen,layerManager,enemyBulletSprite[i],2,this,gameDesign,kingSprite,tentSprite);            }else{                enemyBulletSprite[i] = new BulletSprite(bulletImage,layerManager,100,false,this,gameDesign,kingSprite,tentSprite);//false表示敌人子弹;                  enemySprite[i] = new EnemySprite(enemyImageRed,layerManager,enemyBulletSprite[i],3,this,gameDesign,kingSprite,tentSprite);            }        } //pet初始化       petSprite[0] = new PetSprite(octImage,200,30,1,layerManager,this,gameDesign);       petSprite[1] = new PetSprite(dogImage,30,70,2,layerManager,this,gameDesign);       petSprite[2] = new PetSprite(catImage,15,50,3,layerManager,this,gameDesign);       petSprite[3] = new PetSprite(spookImage,15,90,4,layerManager,this,gameDesign);        //敌人坦克启动        new EnemyManager(this);            }    public void run(){        Graphics g = getGraphics();        while(!gameover){            input();            render(g);                        try {                 Thread.sleep(30);            } catch (InterruptedException ex) {                 ex.printStackTrace();            }        }    }    private void input(){//不断检测按键        int keyStates = getKeyStates();        if ((keyStates & UP_PRESSED) != 0) {            userSprite[0].setNextDirection(Canvas.UP);            userSprite[0].setIsPressed(true);        }        else if ((keyStates & RIGHT_PRESSED) != 0){            userSprite[0].setNextDirection(Canvas.RIGHT);            userSprite[0].setIsPressed(true);        }        else if ((keyStates & LEFT_PRESSED) != 0) {            userSprite[0].setNextDirection(Canvas.LEFT);            userSprite[0].setIsPressed(true);        }        else if ((keyStates & DOWN_PRESSED) != 0) {            userSprite[0].setNextDirection(Canvas.DOWN);            userSprite[0].setIsPressed(true);        }       if ((keyStates & FIRE_PRESSED) !=0) {           userSprite[0].fire();        }//        if((keyStates & KEY_NUM9) != 0) {//新生玩家坦克?????//            userSprite[0].restart();//        }//        if((keyStates & DOWN_PRESSED) != 0){//?????????????????//            BulletSprite.setInterrupt(true);//            EnemySprite.setInterrupt(true);//            UserSprite.setInterrupt(true);//        }else if((keyStates & UP_PRESSED) != 0){//?????????????????//            BulletSprite.setInterrupt(false);//            EnemySprite.setInterrupt(false);//            UserSprite.setInterrupt(false);//        }        }    private void render(Graphics g){        layerManager.paint(g, 0, 0);        //layerManager        //this.serviceRepaints();        flushGraphics(0, 0, this.getWidth(), this.getHeight());      }            public BulletSprite[] getEnemyBulletSprites() {        return enemyBulletSprite;    }    public EnemySprite[] getEnemySprites(){        return this.enemySprite;    }    public BulletSprite[] getUserBulletSprites(){        return this.userBulletSprite;    }    public UserSprite[] getUserSprites() {        return userSprite;    }    public PetSprite[] getPetSprites() {        return petSprite;    }            public void commandAction(Command c, Displayable d) {        if(c == pauseCommand){            this.removeCommand(c);            this.addCommand(resumeCommand);            Sound.instance.stopBack();            interrupt = true;            TentSprite.setInterrupt(true);            KingSprite.setInterrupt(true);            BulletSprite.setInterrupt(true);            EnemySprite.setInterrupt(true);            EnemyManager.setInterrupt(true);            UserSprite.setInterrupt(true);            TalismanSprite.setInterrupt(true);            PetSprite.setInterrupt(true);            pressStop = true;        }else if(c == resumeCommand){            this.removeCommand(c);            this.addCommand(pauseCommand);            Sound.instance.resumeBack();            interrupt = false;            TentSprite.setInterrupt(false);            KingSprite.setInterrupt(false);            BulletSprite.setInterrupt(false);            EnemySprite.setInterrupt(false);            EnemyManager.setInterrupt(false);            UserSprite.setInterrupt(false);            TalismanSprite.setInterrupt(false);            PetSprite.setInterrupt(false);            pressStop = false;        }else if(c == exitCommand){            this.gameOver();            //退出到游戏进入界面            this.gameMidlet.gameMenuCanvasBack();             }else if(c == listCommand){            Sound.instance.stopBack();            interrupt = true;            TentSprite.setInterrupt(true);            KingSprite.setInterrupt(true);            BulletSprite.setInterrupt(true);            EnemySprite.setInterrupt(true);            EnemyManager.setInterrupt(true);            UserSprite.setInterrupt(true);            TalismanSprite.setInterrupt(true);            PetSprite.setInterrupt(true);            this.gameMidlet.option.gaming = true;             this.gameMidlet.gameOption();        }else if(c == nextCommand){            this.gameMidlet.chooseLevel = 2;            this.gameMidlet.newGame();        }    }    public void gameOver(){            gameover = true;            BulletSprite.gameover = true;            UserSprite.gameover = true;            EnemySprite.gameover = true;            EnemyManager.gameover = true;            KingSprite.gameover = true;            TentSprite.gameover = true;            TalismanSprite.gameover = true;            PetSprite.gameover = true;             Sound.instance.stopBack();    }        public void win(){        if(lose)return;//已经lose        Sound.instance.stopBack();        Sound.instance.winPlayer();        win = true;        UserSprite.setInterrupt(true);        Image winImage = null;        try{             winImage = Image.createImage("/tank/win.png");                      }catch(IOException e){            e.printStackTrace();        }        Sprite winSprite = new Sprite(winImage);         winSprite.defineReferencePixel(winImage.getWidth()/2,winImage.getHeight()/2);        winSprite.setRefPixelPosition(this.getWidth()/2, this.getHeight()/2);        winSprite.setVisible(true);        layerManager.insert(winSprite,0);        //处理按键        this.removeCommand(pauseCommand);        this.removeCommand(resumeCommand);        this.removeCommand(listCommand);        if(BattleCanvas.level==1)this.addCommand(nextCommand);    }    public void lose(){//kingSprite userSprite调用        if(win)return;//已经win        Sound.instance.stopBack();        Sound.instance.gameoverPlayer();        lose = true;        UserSprite.setInterrupt(true);        Image loseImage = null;        try{             loseImage = Image.createImage("/tank/lose.png");                      }catch(IOException e){            e.printStackTrace();        }        Sprite loseSprite = new Sprite(loseImage);         loseSprite.defineReferencePixel(loseImage.getWidth()/2,loseImage.getHeight()/2);        loseSprite.setRefPixelPosition(this.getWidth()/2, this.getHeight()/2);        loseSprite.setVisible(true);        layerManager.insert(loseSprite,0);        //处理按键        this.removeCommand(pauseCommand);        this.removeCommand(resumeCommand);        this.removeCommand(listCommand);       //this.addCommand(exitCommand);    }}

⌨️ 快捷键说明

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