// 定义a w s d为控制坦克移动的四个键 @Override public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_W) { // 设置我的坦克的方向 this.myTank.setDirect(0); myTank.moveUp(); } else if (e.getKeyCode() == KeyEvent.VK_D) { this.myTank.setDirect(1); myTank.moveRight(); } else if (e.getKeyCode() == KeyEvent.VK_S) { this.myTank.setDirect(2); myTank.moveDown(); } else if (e.getKeyCode() == KeyEvent.VK_A) { this.myTank.setDirect(3); myTank.moveLeft(); } // 开火 if (e.getKeyCode() == KeyEvent.VK_J) { // 只能发射5颗子弹限制 if (this.myTank.bb.size() < 5) { this.myTank.shoot(); } } this.repaint(); }
public void paint(Graphics g) { super.paint(g); // 画出我的坦克(到时再封装成函数) g.setColor(Color.darkGray); g.fillRect(0, 0, 400, 300); // 画出提示信息 this.showInfo(g); // 画出自己的坦克 if (myTank.alive) { this.drawTank(myTank.getX(), myTank.getY(), g, myTank.direct, 0); } // 绘制子弹 // 从bb中取出每一颗子弹并绘制(遍历) for (int i = 0; i < this.myTank.bb.size(); i++) { // 取出一颗子弹 Bullet myBullet = myTank.bb.get(i); // 下面是画出一颗子弹 if (myBullet != null && myBullet.alive == true) { g.draw3DRect(myBullet.x, myBullet.y, 2, 2, false); } // 判断子弹死亡之后从Vector移除 if (myBullet.alive == false) { myTank.bb.remove(myBullet); } } // 画出炸弹 for (int i = 0; i < bombs.size(); i++) { // System.out.println("bombs.size()="+bombs.size()); // 取出炸弹 Bomb bomb = bombs.get(i); // 不需要强转,因为用了泛型 // System.out.println("炸弹炸弹炸弹"+bomb); if (bomb.life > 6) { // 画出最大的效果 g.drawImage(image3, bomb.x, bomb.y, 30, 30, this); } else if (bomb.life > 3) { g.drawImage(image2, bomb.x, bomb.y, 30, 30, this); } else { g.drawImage(image1, bomb.x, bomb.y, 30, 30, this); } // 让bomb的生命值减小 bomb.lifeDown(); // 如果炸弹值生命值为零,就把炸弹从Vector中去掉 if (bomb.life == 0) { bombs.remove(bomb); } } // 画出敌人的坦克 for (int i = 0; i < enemySize; i++) { EnemyTank et = enemyTanks.get(i); if (et.alive) { this.drawTank(et.getX(), et.getY(), g, et.direct, 1); // 再画出敌人的子弹 for (int j = 0; j < et.bb.size(); j++) { // 取出一颗子弹 Bullet enemyBullet = et.bb.get(j); if (enemyBullet.alive) { g.draw3DRect(enemyBullet.x, enemyBullet.y, 1, 1, false); } else { // 如果敌人的坦克死亡就从Vector去掉 et.bb.remove(enemyBullet); } } } } }