Enviado em 16/06/2010 - 19:34h
Boa noite,
1. public ListTAD<Point> geraPassos() {
2. //--> direction {0 - Esquerda 1 - Cima 2 - Direita 3 - Baixo}
3. int count = 0;
4. int nroIteracoes = getMaxPassos(); // máx passos passamos qdo criamos um novo robô...
5.
6. ListTAD<Point> lista = new ListArray<Point>();
7.
8. while (!ehSaida(pCorrente) && count < nroIteracoes) {
9. Point pAux = move(pCorrente, decisao());
10. if (pAux != null) {
11. pCorrente = pAux;
12. lista.add(pCorrente);
13. count++;
14. }
15. count++;
16. }
17. return (lista);
18. }
1. public int decisao() {
2. if (direction == 1){ // direção atual do robô
3. Point pAux = move(pontoCorrente, 0);
4. if (pAux != null)
5. return 0; //se ta subindo devo tentar ir pra esquerda
6. else pAux = move(pontoCorrente, 1);
7. if (pAux != null)
8. return 1;
9. else pAux = move(pontoCorrente, 2);
10. if (pAux != null)
11. return 2;
12. else return 3;
13. }
14. else if (direction == 2) {
15. Point pAux = move(pontoCorrente, 1);
16. if (pAux != null)
17. return 1;
18. else pAux = move(pontoCorrente, 2);
19. if (pAux != null)
20. return 2;
21. else pAux = move(pontoCorrente, 3);
22. if (pAux != null)
23. return 3;
24. else return 0;
25. }
26. else if (direction == 3){
27. Point pAux = move(pontoCorrente, 2);
28. if (pAux != null)
29. return 2;
30. else pAux = move(pontoCorrente, 3);
31. if (pAux != null)
32. return 3;
33. else pAux = move(pontoCorrente, 0);
34. if (pAux != null)
35. return 0;
36. else return 1;
37. }
38. else {
39. Point pAux = move(pontoCorrente, 3);
40. if (pAux != null)
41. return 3;
42. else pAux = move(pontoCorrente, 0);
43. if (pAux != null)
44. return 0;
45. else pAux = move(pontoCorrente, 1);
46. if (pAux != null)
47. return 1;
48. else return 2;
49.
50. }
51. }