vlws kras, deixa eu complementar minha dúvida
-eu to usando o Gel, já configurado as SDKs
-as classes estão todas em jogos/corrida, como tem que ser por estar usando como package, ou não???
- aqui segue todas as classes e métodos
[quote]//classe Corrida.java(super classe)
package jogos.corrida;
import java.awt.;
import javax.swing.;
public class Corrida {
private JTextField Tartaruga = new JTextField();
private JTextField Lebre = new JTextField();
public Corrida() {
JFrame frame = new JFrame("Corrida");
GridLayout grid = new GridLayout(4,2);
JPanel panel = new JPanel();
panel.setLayout(grid);
panel.add(new JLabel("Apaga-se a luz vermelha..."));
panel.add(new JLabel());
panel.add(new JLabel("Começa o Grande Prêmio do meio do mato!"));
panel.add(new JLabel());
panel.add(new JLabel("Tartaruga"));
panel.add(Tartaruga);
panel.add(new JLabel("Lebre"));
panel.add(Lebre);
Tartaruga.setPreferredSize(new Dimension(400, 20));
Lebre.setPreferredSize(new Dimension(400, 20));
Dimension ssize = Toolkit.getDefaultToolkit().getScreenSize();
frame.getContentPane().add(panel, BorderLayout.CENTER);
frame.setSize((int) ssize.getWidth(), 150);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public void run() throws InterruptedException {
Lebre lebre = new Lebre();
Tartaruga tartaruga = new Tartaruga();
while (true) {
tartaruga.run();
lebre.run();
if (terminou(tartaruga)) {
Tartaruga.setText("Tartaruga ganhou!");
break;
} else {
Tartaruga.setText(print(tartaruga));
}
if (terminou(lebre)) {
Tartaruga.setText("Lebre ganhou!");
break;
} else {
Lebre.setText(print(lebre));
}
Thread.sleep(1000);
}
}
public boolean terminou(Corredor (corredor)) {
return corredor.getPosicao() >= 70;
}
public static void main(String[] args) throws Exception {
Corrida corrida = new Corrida();
corrida.run();
}
public static String print(Corredor corredor) {
String ret = "";
for (int i = 0; i < corredor.getPosicao() - 1; i++) {
ret += ' ';
}
ret += corredor;
return ret;
}
}[/quote]
[quote]classe Corredor.java(a única que ta compilando certinho
package jogos.corrida;
public abstract class Corredor {
public abstract void run();
public abstract int getPosicao();
public abstract String getState();
public abstract String getNome();
public String toString() {
String ret = getNome();
ret += “[”;
ret += getPosicao();
ret += “,”;
ret += getState();
ret += “]”;
return ret;
}
}[/quote]
[quote]classe Lebre.java
package jogos.corrida;
public class Lebre extends Corredor {
private int posicao = 1;
private String state;
public void run() {
int num = (int) (Math.random() * 9) + 1;
if (num <= 2) {
state = "zzZZzz";
}
if (num > 2 && num <= 4) {
state = "Salto grande";
posicao += 9;
}
if (num > 4 && num <= 5) {
state = "Escorregão grande";
posicao -= 12;
}
if (num > 5 && num <= 8) {
state = "Salto pequeno";
posicao += 1;
}
if (num > 8) {
state = "Escorregão pequeno";
posicao -= 2;
}
}
public int getPosicao() {
if (posicao < 0) {
posicao = 1;
}
return posicao;
}
public String getState() {
return state;
}
public String getNome() {
return "Lebre";
}
}[/quote]
[quote]classe Tartaruga.java
package jogos.corrida;
public class Tartaruga extends Corredor {
private int posicao = 1;
private String state = “”;
public void run() {
int num = (int) (Math.random() * 9) + 1;
if (num <= 5) {
state = "Salto grande";
posicao += 3;
}
if (num > 5 && num <= 7 ) {
state = "Caminhada lenta";
posicao += 1;
}
if (num > 7) {
state = "Escorregão";
posicao -= 6;
}
}
public int getPosicao() {
if (posicao < 0) {
posicao = 1;
}
return posicao;
}
public String getState() {
return state;
}
public String getNome() {
return "Tartaruga";
}
}[/quote]
as classes tartaruga e lebre tem que acessar a classe corredor que acessa a classe corrida.
caso não encontre essa solução teria uma forma mais fácil de fazer esse código em console, tipo usando uma classe só e métodos?