vent.VK_H:sH=false;break; case KeyEvent.VK_RIGHT:sRight=false;break; case KeyEvent.VK_LEFT:sLeft=false;break; case KeyEvent.VK_DOWN:sDown=false;break; case KeyEvent.VK_UP:sUp=false;break; case KeyEvent.VK_L:sL=false;break; } } }; this.requestFocus(); this.addKeyListener(l); } public void level(){//每5分增加一辆敌人的坦克 int length = score/5+5; if(length>enemyTank.length){ enemyTank=Arrays.copyOf(enemyTank,enemyTank.length+1);//坦克数组扩容 enemyTank[enemyTank.length-1]=nextTank();//初始化数组最后的一辆坦克 enemyTank[enemyTank.length-1].start();//启动这个坦克的线程 } } public void startGame(){ cleanShoot();//清空子弹 shootNum=5;//可以发射的子弹数为5 shootNum1=5; score=0; myTank[0]= new MyTank(550,370,4,1,-1,true);//初始化我的坦克 myTank[1]= new MyTank(100,100,4,1,0,true); for (int i = 0; i < enemyTank.length; i++) {//初始化敌人的坦克 if(gameOver){//游戏结束,关闭每个坦克的线程 enemyTank[i].s=false; } } enemyTank=new EnemyTanks[5]; for (int i = 0; i < enemyTank.length; i++) {//初始化敌人的坦克 enemyTank[i]=nextTank(); } gameOver=false;//游戏没有结束,表示开始 myTank[0].start();//启动我的坦克线程 myTank[1].start(); for (int i = 0; i < enemyTank.length; i++) {//启动敌人坦克线程 enemyTank[i].start(); } timer = new Timer();//匿名内部类Timer timer.schedule(new TimerTask(){ public void run(){//重写run()函数 repaint(); shootAndRun(); } }, 0,50);//50毫秒执行一次 } /**检查游戏是否结束*/ public void checkGameOver(){//模仿俄罗斯方块里面写的 if(myTank[0].isLive()||myTank[1].isLive()){ return; } gameOver = true; timer.cancel(); repaint(); } public void shootAndRun(){ if(sW){//如果开关sW=true就执行{}里面的代码 myTank[1].moveUp(); }else if(sD){ myTank[1].moveRight(); }else if(sS){ myTank[1].moveDown(); }else if(sA){ myTank[1].moveLeft(); }if(sH&&myTank[1].isLive()){//如果sL=true并且坦克是活的,就执行 if(shootNum1>=0){//如果允许的子弹数小于于0了,不执行 myTank[1].shoot(); shootNum1--;//控制子弹数量,射击一次,子弹减少,消失加1 } } if(sUp){ myTank[0].moveUp(); }else if(sRight){ myTank[0].moveRight(); }else if(sLeft){ myTank[0].moveLeft(); }else if(sDown){ myTank[0].moveDown(); }if(sL&&myTank[0].isLive()){ if(shootNum>=0){ myTank[0].shoot(); shootNum--;//控制子弹数量,射击一次,子弹减少,消失加1 } } } public void paint(Graphics g){ g.setColor(Color.white); g.fillRect(0, 0, this.getWidth(), this.getHeight());//画背景 paintWall(g);//画墙 //画我的坦克 paintTank(myTank[1].getX(),myTank[1].getY(),g,myTank[1].getDirect(),myTank[1].getWho(),myTank[1].isLive()); paintTank(myTank[0].getX(),myTank[0].getY(),g,myTank[0].getDirect(),myTank[0].getWho(),myTank[0].isLive()); for (int i = 0; i < enemyTank.length; i++) {//画敌人的坦克 paintTank(enemyTank[i].getX(),enemyTank[i].getY(),g,enemyTank[i].getDirect(),enemyTank[i].getWho(),enemyTank[i].isLive()); } paintShoot(g);//画我射击的子弹 paintEemyShoot(g);//画敌人发出的子弹 paintScore(g);//画分数,及字符 //paintMap(g); } /* public void paintMap(Graphics g){//这是个方法可以生成漂亮的东西 for (int j = 0; j < 3; j++) { Random color=new Random(); //通过Random生成随机颜色 int r = color.nextInt(256); int g1 = color.nextInt(256 |