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

📄 enemysprite.java

📁 j2me的坦克大战 元代码 单机版和蓝牙联网版
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            //this.bullet.alive = true;        }//发射导航弹    }        public void setLifes(int lifes){//初始化生命数,在EnemyManager类设置        this.lifes = lifes;    }    public boolean canRestart(){        return (lifes>0);    }    public void restart(int birthPlace){//重置位置,HP值,方向        if(HP >0 || !canRestart()) return;//生命数为0或还活着,就无法restart()        //出生前判断出生位置有没有坦克        //遍历所有玩家坦克       for(int i=0;i<us.length;i++){            if(us[i].getHP()>0){                switch(birthPlace){//坦克出生3个位置之一                    case(1):if(us[i].getRefPixelX()<X1+13 && us[i].getRefPixelY()<Y1+13 ){return;}                            else  setRefPixelPosition(X1,Y1);break;                    case(2):if(us[i].getRefPixelX()>X2-13 && us[i].getRefPixelX()<X2+13                              && us[i].getRefPixelY()<Y2+13 )return;                            else  setRefPixelPosition(X2,Y2);break;                    case(3):if(us[i].getRefPixelX()>X3-13 && us[i].getRefPixelY()<Y3+13 )return;                            else  setRefPixelPosition(X3,Y3);break;                                    }            }       }                 //遍历所有除自己以外的敌人坦克        for(int i=0;i<es.length;i++){            if(es[i].getHP()>0 && this != es[i])                switch(birthPlace){//坦克出生3个位置之一                    case(1):if(es[i].getRefPixelX()<X1+13 && es[i].getRefPixelY()<Y1+13 )return;                            else  setRefPixelPosition(X1,Y1);break;                    case(2):if(es[i].getRefPixelX()>X2-13 && es[i].getRefPixelX()<X2+13                              ||es[i].getRefPixelY()<Y2+13 )return;                            else  setRefPixelPosition(X2,Y2);break;                    case(3):if(es[i].getRefPixelX()>X3-13 && es[i].getRefPixelY()<Y3+13 )return;                            else  setRefPixelPosition(X3,Y3);break;                                    }        } //如:指定位置是3,判断,然后可以出生则出生,不可则return了       // System.out.println("2个for完了");       this.setTransform(Sprite.TRANS_NONE);       curDirection=Canvas.DOWN;       nextDirection=Canvas.DOWN;       //isNew = true;       lifes--;       //添加到画布管理器        setVisible(true);        layerManager.insert(this,0);        //HP>0,让run        if(type==1 || type==3)HP=100;//普通坦克 红色坦克 HP=100        else if(type==2)HP=200;//绿色坦克 HP=200    }    public void run(){        while(!gameover){            if(!interrupt){                if(HP>0) go();              }            int t;            if(type==1 || type==2) t=50;//普通 绿色            else t=35;//红色            try {                   Thread.sleep(t);            } catch (InterruptedException ex) {                   ex.printStackTrace();            }          }    }    private  void go(){//坦克自由行走,走一步,                      switch(nextDirection){                    case GameCanvas.DOWN:                        //如果跟现在方向一样,不转                        //如果跟现在方向不一样,转                        if(nextDirection != curDirection){                            this.setTransform(Sprite.TRANS_NONE);                            curDirection = GameCanvas.DOWN;                          }                        //行走一步                        this.move(0, SPEED);                             //若碰撞,改变nextDirection                            if (this.collides() == 2){//普通碰撞                                                                          this.move(0, -SPEED);                                     try{Thread.sleep(300);}                                     catch(InterruptedException e){e.printStackTrace();}                                     this.nextDirection = GameCanvas.LEFT;                            }                break;                    case GameCanvas.UP:                        //如果跟现在方向一样,不转                        //如果跟现在方向不一样,转                        if(nextDirection != curDirection){                            this.setTransform(Sprite.TRANS_ROT180);                            curDirection = GameCanvas.UP;                          }                        //行走一步                        this.move(0, -SPEED);{                              if (this.collides() == 2){//普通碰撞                                                                          this.move(0, SPEED);                                     try{Thread.sleep(400);}                                     catch(InterruptedException e){e.printStackTrace();}                                     this.nextDirection = GameCanvas.RIGHT;                            }                }break;                    case GameCanvas.LEFT:                        //如果跟现在方向一样,不转                        //如果跟现在方向不一样,转                        if(nextDirection != curDirection){                            this.setTransform(Sprite.TRANS_ROT90);                            curDirection = GameCanvas.LEFT;                          }                        //行走一步                        this.move(-SPEED, 0);{                              if (this.collides() == 2){//普通碰撞                                                                          this.move(SPEED,0);                                      try{Thread.sleep(500);}                                     catch(InterruptedException e){e.printStackTrace();}                                     this.nextDirection = GameCanvas.UP;                            }                }break;                    case GameCanvas.RIGHT:                        //如果跟现在方向一样,不转                        //如果跟现在方向不一样,转                        if(nextDirection != curDirection){                            this.setTransform(Sprite.TRANS_ROT270);                            curDirection = GameCanvas.RIGHT;                          }                        //行走一步                        this.move(SPEED, 0);{                              if (this.collides() == 2){//普通碰撞                                                                          this.move(-SPEED,0);                                     try{Thread.sleep(600);}                                     catch(InterruptedException e){e.printStackTrace();}                                     this.nextDirection = GameCanvas.DOWN;                            }                }break;                }//switch                          }//线程,偶尔改变一下坦克方向     private class ChangeDirectionThread extends Thread {        public ChangeDirectionThread() {        }        public void run() {           //修改nextDirection不可以跟curDirection相同(或者用同步)            while(!gameover){                 try {                         r.setSeed(System.currentTimeMillis());                         int n = Math.abs((int)(r.nextInt(1000)+this.hashCode()));                         Thread.sleep(n%3*2000+1000);//睡1至7秒                    } catch (InterruptedException  e) {                       //System.out.println("change线程睡眠中被打断,结束run");                    }                 if(!interrupt&&!gameover){                    if(HP>0){//如果HP>0 改变方向                            int newDirection=curDirection;                            int n = Math.abs((int)(r.nextInt(1000)+System.currentTimeMillis()));                            switch(n%4){                              case 0:newDirection=Canvas.UP;break;                              case 1:newDirection=Canvas.DOWN;break;                              case 2:newDirection=Canvas.LEFT;break;                              case 3:newDirection=Canvas.RIGHT;break;                            }//System.out.println(this.getName()+" r="+ n%4);                            EnemySprite.this.nextDirection=newDirection;                              }                }//if                            }//while                    }    }//线程,偶尔发射一下炸弹     private class ShootThread extends Thread {        public ShootThread() {        }        public void run() {            while(!gameover){                try {                        r.setSeed(System.currentTimeMillis());                        int n = Math.abs((int)(r.nextInt(1000)+this.hashCode()));                        //System.out.println(this.getName()+" r="+ n);                        Thread.sleep(n%3*2000+1000);//睡2至12秒                }catch (InterruptedException e) {                      e.printStackTrace();                }                  if(!interrupt&&!gameover){                    if(HP>0)fire();                }            }                    }    }    }

⌨️ 快捷键说明

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