Ajuda com jogo

0 respostas
H

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
	}
//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());
	}
//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);
		}
	}
}

Obrigado;

Criado 10 de junho de 2011
Respostas 0
Participantes 1