Boa tarde pessoal.
Sou novo em Java, comecei a estudar esse ano, estava lendo o livro Big Java de Cay Horstmann e fazendo alguns exercícios até que me deparei com esse:
O exercício é fazer uma applet que simula o andar de um bêbado, eu consegui fazer a simulação mas duas coisas ficaram pendentes.
1 - Gostaria de inserir um timer ou um delay algo assim que mostrasse os passos do bebâdo de segundo em segundo e não todos de uma vez.
2 - Quando eu modifico o tamanho da applet na hora da execução são gerados novos números aleatórios, como me livrar disso? (Estou usando o "simulador de applets" do Eclipse e não uma página HTML)
Obrigado pela a ajuda, aí vai o código.
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import java.util.Random;
public class Exerc62 extends Applet {
public void paint(Graphics g) {
setSize(600, 600);
final Graphics2D g2 = (Graphics2D) g;
for (int i = 100; i < 420; i += 21) { // Desenha a grade
// Linhas horizontais
Point2D pt1 = new Point2D.Double(415, i);
Point2D pt2 = new Point2D.Double(100, i);
Line2D ln1 = new Line2D.Double(pt1, pt2);
g2.draw(ln1);
// Linhas verticais
Point2D pt3 = new Point2D.Double(i, 415);
Point2D pt4 = new Point2D.Double(i, 100);
Line2D ln2 = new Line2D.Double(pt3, pt4);
g2.draw(ln2);
g2.drawString("Simulação de um bebado", 100, 80);
}
this.andar(g2);// Chama o método andar que simula o bebado
}
public void andar(final Graphics2D g2) {
Ellipse2D pessoa = new Ellipse2D.Double(250, 230, 15, 15);
g2.draw(pessoa);
g2.fill(pessoa);
// ANDANDO
for (int i = 0; i < 100; i++) {
int rand = gerarRandom();
switch(rand) {
case 1:// Leste
pessoa.setFrame(pessoa.getX() + 21, pessoa.getY(), 15, 15);
g2.draw(pessoa);
break;
case 2:// Sul
pessoa.setFrame(pessoa.getX(), pessoa.getY() + 21, 15, 15);
g2.draw(pessoa);
break;
case 3:// Oeste
pessoa.setFrame(pessoa.getX() - 21, pessoa.getY(), 15, 15);
g2.draw(pessoa);
break;
case 4:// Norte
pessoa.setFrame(pessoa.getX(), pessoa.getY() - 21, 15, 15);
g2.draw(pessoa);
break;
}
}
}
public int gerarRandom() {
Random rd1 = new Random();
int rd = ((1 + rd1.nextInt(4)));// Gera um numero aleatorio entre 1 e 4,
// cada um é um ponto cardeal
return rd;
}
}
[IMG]http://i184.photobucket.com/albums/x262/Lufia_album/example.jpg[/IMG]