public void paint(Graphics g) {
    Graphics2D graficos = (Graphics2D) g;
    graficos.drawImage(fundo, 0, 0, null);

    if (emJogo) {
      graficos.drawImage(nave.getImagem(), nave.getX(), nave.getY(), this);

      List<Missel> misseis = nave.getMisseis();

      for (int i = 0; i < misseis.size(); i++) {
        Missel m = (Missel) misseis.get(i);
        graficos.drawImage(m.getImagem(), m.getX(), m.getY(), this);
      }

      for (int i = 0; i < inimigos.size(); i++) {
        Inimigo in = inimigos.get(i);
        graficos.drawImage(in.getImagem(), in.getX(), in.getY(), this);
      }

      graficos.setColor(Color.white);
      graficos.drawString("Inimigos: " + inimigos.size(), 5, 15);

    } else {
      ImageIcon fimJogo = new ImageIcon(Main.class.getResource("/res/game_over.jpg"));

      graficos.drawImage(fimJogo.getImage(), 0, 0, null);
    }
    g.dispose();
  }
  @Override
  public void actionPerformed(ActionEvent e) {
    if (inimigos.size() == 0) {
      emJogo = false;
    }

    List<Missel> misseis = nave.getMisseis();

    for (int i = 0; i < misseis.size(); i++) {
      Missel m = (Missel) misseis.get(i);

      if (m.isVisible()) {
        m.mexer();
      } else {
        misseis.remove(i);
      }
    }

    for (int i = 0; i < inimigos.size(); i++) {
      Inimigo in = inimigos.get(i);

      if (in.isVisible()) {
        in.mexer();
      } else {
        inimigos.remove(i);
      }
    }

    nave.mexer();
    checarColisoes();
    repaint();
  }
  public void checarColisoes() {
    Rectangle formaNave = nave.getBounds();
    Rectangle formaInimigo;
    Rectangle formaMissel;

    for (int i = 0; i < inimigos.size(); i++) {

      Inimigo tempInimigo = inimigos.get(i);
      formaInimigo = tempInimigo.getBounds();

      if (formaNave.intersects(formaInimigo)) {
        nave.setVisivel(false);
        tempInimigo.setVisible(false);
        emJogo = false;
      }
    }

    List<Missel> misseis = nave.getMisseis();

    for (int i = 0; i < misseis.size(); i++) {
      Missel tempMissel = misseis.get(i);
      formaMissel = tempMissel.getBounds();

      for (int j = 0; j < inimigos.size(); j++) {
        Inimigo tempInimigo = inimigos.get(j);
        formaInimigo = tempInimigo.getBounds();

        if (formaMissel.intersects(formaInimigo)) {
          tempInimigo.setVisible(false);
          tempMissel.setVisible(false);
        }
      }
    }
  }
示例#4
0
  public boolean canAtravessar(Jogador jogador) {
    if (cor != Cor.MARROM) {
      Chave c = jogador.getChave();
      if (c != null) return c.getCor() == cor;
      else return false;
    }

    if (inimigo != null) {
      if (!(inimigo instanceof Armadilha)) return !inimigo.isAlive();
    }

    return true;
  }