Beispiel #1
0
  public boolean processarJogo() {
    if (!continuarAnimacao.activo()) {
      return false;
    }

    /** Colisões */
    for (Estrela estrela : estrelas) {
      estrela.getColisao().reeniciar();
    }

    GestorIntercepcoes<Estrela> giEstrelas = new GestorIntercepcoes<Estrela>(estrelas);

    if (arpao.activo() && giEstrelas.interceptadoComCirculos(arpao)) {
      arpao.iniciar();
      rebentaEstrela((Estrela) giEstrelas.circuloInterceptado);
      pontos += 2;
    }

    if (!personagem.ressucitar() && giEstrelas.interceptadoComCirculos(personagem)) {
      morre();
      if (vidas.getValor() > 0) {
        rebentaEstrela((Estrela) giEstrelas.circuloInterceptado);
      }
    }
    for (BolaQJ bola : bolas) {
      bola.getColisao().reeniciar();
    }
    GestorIntercepcoes<BolaQJ> gi = new GestorIntercepcoes<BolaQJ>(bolas);

    gi.setRectangulos(obstaculos);
    if (!personagem.ressucitar() && gi.interceptadoComCirculos(personagem)) {
      morre();
      if (vidas.getValor() > 0) {
        rebentaBola((BolaQJ) gi.circuloInterceptado);
      }
    }

    if (arpao.activo() && gi.interceptadoComCirculos(arpao)) {
      arpao.iniciar();
      rebentaBola((BolaQJ) gi.circuloInterceptado);
      pontos += 2;
    }

    // reeniciar colisoes

    personagem.getColisao().reeniciar();
    for (Obstaculo obstaculo : obstaculos) {
      obstaculo.getColisao().reeniciar();
    }
    for (BolaQJ bola : bolas) {
      bola.getColisao().reeniciar();
    }
    return true;
  }
Beispiel #2
0
 public void paint(Graphics g) {
   Color c = new Color(1, 1, 1);
   g.setColor(c);
   g.fillRect(0, 0, 640, 480);
   c = new Color(255, 255, 255);
   g.setColor(c);
   g.fillRect(obstaculo1.getX(), obstaculo1.getY(), obstaculo1.getDimx(), obstaculo1.getDimy());
   c = new Color(247, 36, 94);
   g.setColor(c);
   g.fillOval(bolita.getX(), bolita.getY(), bolita.getDiametro(), bolita.getDiametro());
 }
Beispiel #3
0
  public JogoArpao() {
    continuarAnimacao = new Booleano(true);
    emMov = new Booleano(false);
    enquadramento = new Dimension(800, 600);
    mg = new MovimentoGravitico();
    mg.setXmin(0);
    mg.setYmax(0);
    mg.setXmax(enquadramento.width);
    mg.setYmax(enquadramento.height);
    vidas = new Inteiro(3);
    tempoNivel = new Inteiro(0);
    pontos = 0;

    ampulheta = new Ampulheta();

    personagem = new Personagem();
    personagem.setMg(mg);
    personagem.setMovivel(emMov);

    arpao = new Arpao(emMov);
    arpao.setMG(mg);

    bolas = new LinkedList<BolaQJ>();
    estrelas = new LinkedList<>();

    obstaculos = new LinkedList<Obstaculo>();

    obstaculos.add(Obstaculo.padrao());

    txtVidas =
        new TXTPaint(
            criaFonte(Font.PLAIN, 18),
            new CadeiaCaracteres() {
              public String getCadeia() {
                return "Vidas " + vidas.getValor();
              }
            });
    txtVidas.setX(10);
    txtVidas.setY(30);
    txtVidas.setVisivel(true);

    txtPontos =
        new TXTPaint(
            criaFonte(Font.PLAIN, 15),
            new CadeiaCaracteres() {
              public String getCadeia() {
                return "Pontos:" + pontos;
              }
            });
    txtPontos.setX(700);
    txtPontos.setY(30);
    txtPontos.setVisivel(true);
  }
Beispiel #4
0
  @Override
  public void preProcessarJogo() {
    /** Limites */
    for (Obstaculo obstaculo : obstaculos) {
      GestorIntercepcoes.atualizaColisao(personagem, obstaculo);
      if (personagem.getColisao().base && personagem.mg.getVy() >= 0) {
        personagem.mg.setY(obstaculo.getY() - personagem.getAltura());
        personagem.mg.setVy(0);
        personagem.setEmSalto(false);
      }
      if (personagem.getColisao().topo) {
        personagem.mg.setY(obstaculo.getY() + obstaculo.getAltura());
        personagem.mg.setVy(1);
      }
      if (personagem.getColisao().esquerda) {
        personagem.mg.setX(obstaculo.getX() + obstaculo.getLargura());
      }
      if (personagem.getColisao().direita) {
        personagem.mg.setX(obstaculo.getX() - personagem.getLargura());
      }
      personagem.getColisao().reeniciar();

      for (BolaQJ bola : bolas) {
        GestorIntercepcoes.atualizaColisao(bola, obstaculo);
        if (bola.getColisao().topo) {
          bola.setVy(-bola.getVy());
          bola.setY(obstaculo.getY() + obstaculo.getAltura());
          bola.getColisao().reeniciar();
        }
        if (bola.getColisao().base) {
          bola.setVy(-bola.getVy());
          bola.setY(obstaculo.getY() - bola.getDiametro());
          bola.getColisao().reeniciar();
        }
      }
    }

    criaLimitesDeColisao(personagem);

    for (BolaQJ bola : bolas) {
      criaLimitesDeColisao(bola);
      if (bola.getColisao().base) {
        bola.decvyAC();
      }
    }

    for (Obstaculo obstaculo : obstaculos) {
      for (Estrela estrela : estrelas) {
        GestorIntercepcoes.atualizaColisao(estrela, obstaculo);
      }
      if (arpao.activo()) {
        GestorIntercepcoes.atualizaColisao(arpao, obstaculo);

        // ignorar colisao na base do arpao em contacto com um obctaculo
        arpao.getColisao().base = false;
        if (arpao.getColisao().tem()) {
          arpao.iniciar();
          arpao.getColisao().reeniciar();
        }
      }
    }

    for (Estrela estrela : estrelas) {
      criaLimitesDeColisao(estrela);
    }
  }
Beispiel #5
0
 public Colisao criaLimitesDeColisao(Obstaculo o) {
   return criaLimitesDeColisao(o.getX(), o.getY(), o.getLargura(), o.getAltura(), o.getColisao());
 }