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; }
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); }
@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); } }
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; }