Beispiel #1
0
  // 定义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();
  }
Beispiel #2
0
  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);
          }
        }
      }
    }
  }