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

📄 netbattlecanvas.java

📁 j2me的坦克大战 元代码 单机版和蓝牙联网版
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import javax.microedition.lcdui.*;import javax.microedition.lcdui.game.*;import java.io.*; public class NetBattleCanvas extends GameCanvas implements Runnable,CommandListener{    //网络    private boolean isServer;    //private boolean coned;//已连接    private boolean recieve=false;//接收到客户端(服务器要接收到,才能发送)    private Connection conn;    //基本属性    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) {        NetBattleCanvas.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 NetKingSprite kingSprite;    private  NetTentSprite tentSprite;    public NetTentSprite getTentSprite() {        return tentSprite;    }    private NetUserSprite userSprite[];    private NetEnemySprite enemySprite[];    private NetBulletSprite userBulletSprite[];    private NetBulletSprite enemyBulletSprite[];    private NetPetSprite petSprite[];        private  int UserNum=2;            private  int UserBulletNum=2;    private  int EnemyNum=6;      //total enemy number        private  int EnemyBulletNum=6;    private  int PetNum=4;      //实用引用    private GameMidlet gameMidlet;    //wait    Sprite waitSprite = null;        public NetBattleCanvas(GameMidlet gameMidlet,boolean isServer){        super(true);        //启动网络        this.isServer = isServer;        conn = new Connection(isServer);        conn.start();        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(NetBattleCanvas.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 NetKingSprite(kingImage,layerManager,this);        //帐篷        Image tentImage = null;        try{             tentImage = Image.createImage("/tank/tent.png");                      }catch(IOException e){            e.printStackTrace();        }        tentSprite = new NetTentSprite(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 NetBulletSprite[UserBulletNum];       userSprite = new NetUserSprite[UserNum];       enemyBulletSprite = new NetBulletSprite[EnemyBulletNum];       enemySprite = new NetEnemySprite[EnemyNum];       petSprite = new NetPetSprite[PetNum];//玩家初始化        for(int i=0;i<UserNum;i++){            userBulletSprite[i] = new NetBulletSprite(bulletImage,layerManager,100,true,this,gameDesign,kingSprite,tentSprite);//true表示玩家子弹;              userSprite[i] = new NetUserSprite(userImage,layerManager,userBulletSprite[i],this,gameDesign,kingSprite,tentSprite,i);        }       userBulletSprite[1].nextFrame();//蓝色子弹       //服务器先暂停,有连接再开始       if(isServer){           stop();           Image waitImage = null;          try{             waitImage = Image.createImage("/tank/wait.png");                        }catch(IOException e){             e.printStackTrace();          }          waitSprite = new Sprite(waitImage);           waitSprite.defineReferencePixel(waitImage.getWidth()/2,waitImage.getHeight()/2);          waitSprite.setRefPixelPosition(this.getWidth()/2, this.getHeight()/2);          waitSprite.setVisible(true);          layerManager.insert(waitSprite,0);          this.removeCommand(this.pauseCommand);          this.removeCommand(listCommand);       }else{          this.removeCommand(this.pauseCommand);          this.removeCommand(listCommand);       }//敌人初始化        for(int i=0;i<EnemyNum;i++){            int t = i%4;             if(t==0||t==1){                enemyBulletSprite[i] = new NetBulletSprite(bulletImage,layerManager,100,false,this,gameDesign,kingSprite,tentSprite);//false表示敌人子弹;                  enemySprite[i] = new NetEnemySprite(enemyImageNomal,layerManager,enemyBulletSprite[i],1,this,gameDesign,kingSprite,tentSprite);            }else if(t == 2){                enemyBulletSprite[i] = new NetBulletSprite(bulletImage,layerManager,100,false,this,gameDesign,kingSprite,tentSprite);//false表示敌人子弹;                  enemySprite[i] = new NetEnemySprite(enemyImageGreen,layerManager,enemyBulletSprite[i],2,this,gameDesign,kingSprite,tentSprite);            }else{                enemyBulletSprite[i] = new NetBulletSprite(bulletImage,layerManager,100,false,this,gameDesign,kingSprite,tentSprite);//false表示敌人子弹;                  enemySprite[i] = new NetEnemySprite(enemyImageRed,layerManager,enemyBulletSprite[i],3,this,gameDesign,kingSprite,tentSprite);            }        } //pet初始化       petSprite[0] = new NetPetSprite(octImage,200,30,1,layerManager,this,gameDesign);       petSprite[1] = new NetPetSprite(dogImage,30,70,2,layerManager,this,gameDesign);       petSprite[2] = new NetPetSprite(catImage,15,50,3,layerManager,this,gameDesign);       petSprite[3] = new NetPetSprite(spookImage,15,90,4,layerManager,this,gameDesign);        //敌人坦克启动        //new NetEnemyManager222(this);            }    public void run(){        Graphics g = getGraphics();        while(!gameover){            if(isServer){//收到,才发送给客户端                //(1)对本玩家操作(操作本机,发送对机)                int keyStates = this.getKeyStates();                if(recieve&&conn!=null){//如果有接收到客户,则发送                    if(this.interrupt){layerManager.remove(waitSprite);resume();}//有连接了才开始                    conn.sentMessage(String.valueOf(keyStates));                    input0(keyStates);//发送了才改变本机                    recieve=false;                }                //(2)对方玩家操作(接收对机,操作本机)                int keyStatesNet;                if(conn != null){                    keyStatesNet = conn.getMessage();//接收信息                    if(keyStatesNet!= -1){//收到信息                        recieve=true;                        input1(keyStatesNet);                        conn.setMessage(-1);//清除按键信息                    }                }                            }            else{//不断发送给服务器

⌨️ 快捷键说明

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