Пример #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;
  }
Пример #2
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);
    }
  }
Пример #3
0
  public boolean carregarNivel() {
    tempoNivel.setValor(0);
    LinkedList<ControlavelPorTeclado> lControlaveisPorTeclado =
        new LinkedList<ControlavelPorTeclado>();
    LinkedList<Pintavel> lPintaveis = new LinkedList<Pintavel>();

    emMov.setValor(false);
    BDTniveis bdtNiveis = new BDTniveis();
    DadosNivel dadosNivel = bdtNiveis.getNivel(numNivel);
    bdtNiveis.fecha();

    if (dadosNivel == null) {
      return false;
    }
    dadosNivel.num = numNivel;

    fundo = new Fundo(dadosNivel.fundo);

    mg.setX(dadosNivel.xPersonagem);

    mg.setX(dadosNivel.xPersonagem);
    mg.setY(dadosNivel.yPersonagem);

    personagem.iniciar();
    arpao.iniciar();

    bolas.clear();
    estrelas.clear();
    for (DadosBola dBola : dadosNivel.bolas) {
      // BolaMov bola = Bola.criaBola(dBola.tipo).criaBolaMovivel();
      BolaQJ bola = new BolaQJ(TipoBola.get(dBola.tipo));
      bola.setEmMov(emMov);
      bola.setEnquadramento(enquadramento);
      bola.setX(dBola.x);
      bola.setY(dBola.y);
      bola.setVx(dBola.vx);
      bola.setVy(dBola.vy);
      bolas.add(bola);
    }

    for (DadosEstrela dEstrela : dadosNivel.estrelas) {
      // BolaMov bola = Bola.criaBola(dBola.tipo).criaBolaMovivel();
      Estrela estrela = new Estrela(dEstrela.tamanho);
      estrela.setEmMov(emMov);
      estrela.setEnquadramento(enquadramento);
      estrela.setX(dEstrela.x);
      estrela.setY(dEstrela.y);
      estrelas.add(estrela);
    }

    lPintaveis.add(fundo);
    lPintaveis.addAll(obstaculos);
    lPintaveis.add(arpao);
    lPintaveis.add(personagem);
    lPintaveis.addAll(bolas);
    lPintaveis.addAll(estrelas);
    lPintaveis.add(txtVidas);
    lPintaveis.add(ampulheta);
    lPintaveis.add(txtPontos);

    for (Pintavel pintavel : lPintaveis) {
      pintavel.setEnquadramento(enquadramento);
    }

    lControlaveisPorTeclado.add(personagem);
    lControlaveisPorTeclado.add(arpao);
    lControlaveisPorTeclado.add(this);

    indicadorNivel = new TXTInicioNivel(numNivel);
    indicadorNivel.setEnquadramento(enquadramento);
    lPintaveis.add(indicadorNivel);
    temporizar(
        new Inteiro(3),
        new Runnable() {
          public void run() {
            emMov.setValor(true);
            @SuppressWarnings("unchecked")
            LinkedList<Pintavel> lPintaveis = (LinkedList<Pintavel>) pintaveis.clone();
            lPintaveis.remove(indicadorNivel);
            pintaveis = lPintaveis;
            iniciarTemporizadorNivel(60);
            ampulheta.iniciar(60);
          }
        });
    controlaveisPorTeclado = lControlaveisPorTeclado;
    pintaveis = lPintaveis;
    temporizador.start();
    return true;
  }