pessoal estou tentado criar o arkanoid, só que chegeui numa parte que nao sei como implementar!!
criei uma classe Colisao para detectar as colisoes, nela o metodo run fica constantemente chamando pelos metodos que verificam se houve colisao. Tenho um List que possue todos os tijolos do jogo entao no metodo private void verificaSeBateuNosTijolos() , por exemplo, o retangulo da bola intersecta o retangulo de um dado tijolo, entao este tijolo deve ser eliminado da lista.
O problema é… como saber qual dos tijolos do List é que foi acertado pela bola???
Segue o codigo:
[code]
import java.awt.Rectangle;
import java.util.List;
import java.util.TimerTask;
import Tijolo.Tijolo;
public class GerenciadorDeColisoes extends TimerTask
{
Bola bola = new Bola();
Barra barra = new Barra();
List listaDeTijolos = Tijolo.listaDeTijolos;
@Override
public void run()
{
verificaSeBateuNosTijolos();
verificaSeBateuNaBarra();
//verificaSeBateuNaParede();
}
private void verificaSeBateuNosTijolos()
{
for (Tijolo tijolo : listaDeTijolos)
{
if (retanguloBola.intersects((Rectangle) listaDeTijolos))
{
tijolo.destrua(/*tijolo que foi acertado*/);
}
}
}
private void verificaSeBateuNaBarra()
{
if (retanguloBola.intersects(retanguloBarra))
{
// verificar de onde a bola veiu e lança-la para
// lado oposto!
}
}
}[/code]
La na classe Tijolo (parte dela)o metodo que remove este tijolo
public class Tijolo extends ComponentesDoCenario
{
public void destrua(Tijolo tijoloASerEliminado)
{
listaDeTijolos.remove(tijoloASerEliminado);
}
}[/code]
La na classe Bola(parte dela) o metodo construtor
[code]
public class Bola extends ComponentesDoCenario
{
public Integer velocidadeDaBolaEmX;
public Integer velocidadeDaBolaEmY;
private Integer tamanho;
private Rectangle retanguloBola;
public Bola()
{
retanguloBola = new Rectangle(10,10);
velocidadeDaBolaEmX = 200;
velocidadeDaBolaEmY = 150;
tamanho = 10;
Timer tempo = new Timer();
tempo.schedule(new DeslocamentoDaBola(), 0, 50);
coloqueNoCentroDaBarra();
}
}
[/code]
Aida tenho outros dois grandes problemas!!! A implementaçao do metodo[b] private void verificaSeBateuNaBarra()[/b], como fazer o lançamento da bola após ela colidir com a barra??
E o outro é sobre a Classe [b]DeslocamentoDaBola[/b] que representa o deslocamento da bola na tela do jogo!
[code]public class DeslocamentoDaBola extends TimerTask
{
Barra barra = new Barra();
Bola bola = new Bola();
@Override
public void run()
{
andarPara(bola.obetenhaCordenadaX() + bola.velocidadeDaBolaEmX, bola.obetenhaCordenadaY()
+ bola.velocidadeDaBolaEmY);
}
protected void andarPara(double posiçãoEmX, double posiçãoEmY)
{
// TODO Auto-generated method stub
}
no metodo andarPara a bola se deslocará em X e Y, mas como representar este deslocamento?
Obrigado!!!