Pessoal, estou iniciando em threads e tenho um exercício pra fazer que está tirando meu sono, gostaria da ajuda de quem puder, o exercício é o seguinte: Cinco lebres disputarão uma corrida. Cada lebre pode dar um salto que varia de 1 a 3 metros de distância. A distancia percorrida é de 20 metros. Na corrida, cada lebre dará um salto, informar quantos metros ela pulou a cada salto realizado. Em seguida, a lebre pára para descansar (yield()). Escreva um programa, utilizando threads (uma para cada lebre), que informe a lebre vencedora e a colocação de cada uma delas no final da corrida. Informar também quantos pulos cada uma delas deu.
Fiz somente com duas lebres, você pode usar essa logica e fazer com mais lebres. Ve se confere:
A seta >, significa os pulos. Você pode tambem fazer com metodos saparadamente, fiz somente dentro do run, o que acho mais difiicl. Você pode fazer com que o metodo run execute so os passos iniciais.
package corrida_lebres;
import java.util.Random;
import java.util.Scanner;
//Jonas Barros
public class Lebres implements Runnable{
private final String nome;
private static int opcao;
public Lebres (String nome){
this.nome = nome;
}
Random rand = new Random();
int pulos;
String p = " ";
private static int soma_pulos = 0;
int qtd_pulos = 0;
private static int verifica_vencedor = 1;
@Override
public void run() {
do {
pulos = rand.nextInt(3);
if((pulos >= 1 ) && (pulos <= 3)){
soma_pulos = soma_pulos + pulos;
qtd_pulos++;
p += " ► ";
System.out.println("Pulo em metro "+pulos+" - Distancia já percorrida - "+soma_pulos+" metros");
System.out.println(nome + p +"\n\n");
if ((soma_pulos >= 20) && (soma_pulos <= 23)){
System.out.println(nome+" ganhou com "+qtd_pulos+" pulos!");
verifica_aposta();
}
verifica_vencedor++;
try {
Thread.sleep(500);
} catch (InterruptedException ex) {
System.out.println("Ops!");
}
}
} while (soma_pulos < 21);
Thread.yield();
}
public void verifica_aposta() {
switch(opcao){
case 1:
if ((verifica_vencedor % 2 == 1)){
System.out.println("Você ganhou");
}else { System.out.println("Você perdeu!");
} System.exit(0);
case 2:
if ((verifica_vencedor % 2 == 0)){
System.out.println("Você ganhou!");
} else {System.out.println("Você perdeu!");
} System.exit(0);
}
System.exit(0);
}
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.println("----------------------");
System.out.println("FAÇA SUA APOSTA");
System.out.println("1 para apostar na Lebre 1");
System.out.println("2 para apostar na Lebre 2");
opcao = entrada.nextInt();
Lebres lebre1 = new Lebres("Lebre 1");
Thread t1 = new Thread(lebre1);
t1.start();
Lebres lebre2 = new Lebres("Lebre 2");
Thread t2 = new Thread(lebre2);
t2.start();
}
}
1 curtida