Eu estou fazendo um jogo em que um personagem atira no outro (não atira diretamente, atira pra cima e depois o tiro desce, parecido com worms), mas estou com um problema, o tiro não é desenhado na tela. Se alguem puder me ajudar, aí vai o código: (o código completo está anexado)
//CALCULAR A TRAJETORIA
public void atirar() {
System.out.println("Atirou");
xTiro = x;
yTiro = y;
int cont = anguloTiro;
while(cont > 0 && dentroDaTela(xTiro, yTiro)){
cont--;
xTiro+=2;
yTiro-=2;
System.out.println("X = " + xTiro + " Y = " + yTiro);
try {
Thread.sleep(5);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
while(dentroDaTela(xTiro, yTiro)){
xTiro+=2;
yTiro+=2;
try {
Thread.sleep(5);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
xTiro = 800; //Deixa fora da tela
yTiro = 600; //Deixa fora da tela
}
[code]
//Desenha os graficos
protected void paintComponent(Graphics g) {
g.drawImage(background, 0, 0, this);
desenhaPersonagens(g);
desenhaTiro(g);
}
private void desenhaTiro(Graphics g) {
//System.out.println("XTiro = "+ xTiro+" YTiro = " + yTiro);
g.setColor(Color.BLACK);
Personagem personagem = personagens.get(cont);
g.fillOval(personagem.getXTiro(), personagem.getYTiro(), TAM_TIRO, TAM_TIRO);
System.out.println(personagem.getXTiro()+ " " + personagem.getYTiro());
}[/code]
[code]
//Thread para pintar a tela
import javax.swing.JPanel;
public class PintorDeTela implements Runnable{
JPanel tela;
int tempoDormindo = 50;
@Override
public void run(){
try {
this.pintar();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public PintorDeTela(TelaDeJogo tela){
super();
setTela(tela);
}
public void setTela(TelaDeJogo t) {
tela = t;
}
public JPanel getTela() {
return tela;
}
public void setTempoDormindo(int tempo){
if(tempo > 0){
tempoDormindo = tempo;
}
}
public void pintar() throws InterruptedException {
while(true){
tela.repaint();
Thread.sleep(tempoDormindo);
}
}
}[/code]
Obrigado;