Thread - simulação jogos

23/03/2013

1

Boa tarde Senhores !!

Implementei um codigo simples com threads para simular um jogo de tiros, desses que todo mundo já conhece. Tenho uma thread (jogador) que dispara alguns tiros e após completar o número de tiros disparados o jogador (thread) para pra recarregar a arma, ou de tempos em tempos esse jogador fica escondido. Gostaria de algumas dicas de como melhorar essa aplicacaozihha...

Por exemplo, colocar varios jogadores, onde se este for atingido por determinados numero de tiros seja eliminado !!

Abaixo segue código !!

CLASSE JOGADOR !!


public class Jogador implements Runnable{


private String jogador;
private int quantidadeTiros = 0;
int tirosDisparados =0;
int tiros=0;
static int colocacaoDoJogador =0;
final static int maximoTiros =10 ;
private final static Random r = new Random();

public Jogador(String jogador) {
this.jogador = jogador;

}


void atirar(){
tirosDisparados++;
quantidadeTiros = (int) (Math.random()*10);
tirosDisparados += quantidadeTiros;
if (tirosDisparados > 10) {
carregandoArma();

}

}

public void jogadorEscondendo () throws InterruptedException {

Thread.sleep(r.nextInt(3000)); //JOGADOR SE ESCONDE DURANTE 0 E 3 SEGUNDOS
System.out.println("O "+ jogador +" está escondido");

}
public void dadosJogador () {
System.out.println("O "+ jogador +" disparou "+ quantidadeTiros);
}


public void colocacaoJogador () {
colocacaoDoJogador++;
System.out.println(jogador +" foi o "+ colocacaoDoJogador +"º colocado com "+ quantidadeTiros +" tiros");
}

void carregandoArma(){
System.out.println("CARREGANDO ARMA");
}

@Override
public void run() {
while
(tirosDisparados < maximoTiros) {
atirar();
dadosJogador();
try {
jogadorEscondendo();
} catch (InterruptedException ex) {
Logger.getLogger(Jogador.class.getName()).log(Level.SEVERE, null, ex);
}

}
colocacaoJogador();
}
}

-----------

CLASSE JOGANDO

ublic class Jogando {

/**
* @param args the command line arguments
*/


public static void main(String[] args) {

//CRIA ExecutorService PARA GERENCIAR AS TAREFAS
ExecutorService executorService = Executors.newCachedThreadPool();

Jogador jogador1= new Jogador("lucas");
// Jogador jogador2= new Jogador("leo", numeroDisparos);

executorService.execute(jogador1);
// executorService.execute(jogador2);


}
}

Espero por algumas dicas e melhorias dos senhores !!
att,

Lucas
Responder