home *** CD-ROM | disk | FTP | other *** search
/ Revista CD Expert 51 / PCGamer51_17Demos.iso / games / colobotdemo / colobotdemo10e.exe / help / tlaby1.txt < prev    next >
Text File  |  2001-06-10  |  3KB  |  66 lines

  1. \b;Exercice
  2. Programmez le \l;robot\u object\bottr; pour qu'il avance sans se cogner dans un labyrinthe. On part du principe que le labyrinthe n'est pas connu d'avance, et qu'il n'est constituΘ que d'un chemin, sans aucune bifurcation ni cul-de-sac. Les cases du labyrinthe sont des carrΘs mesurant 5 mΦtres de c⌠tΘ.
  3.  
  4. \b;L'instruction \c;radar\n;
  5. L'instruction \c;\l;radar\u cbot\radar;(Barrier, 0, 45, 0, 5);\n; teste la prΘsence d'une \l;barriΦre\u object\barrier; devant le robot. DΘtaillons les cinq paramΦtres utilisΘs :
  6.  
  7. \s;\c;Barrier\n;
  8. \l;CatΘgorie\u cbot\category; de l'objet cherchΘ. Il s'agit ici d'une barriΦre.
  9.  
  10. \s;\c;0\n;
  11. Direction dans laquelle est braquΘ le radar. \c;0\n; signifie que le radar est braquΘ droit devant.
  12.  
  13. \s;\c;45\n;
  14. Angle d'ouverture en degrΘs. On dΘtecte donc les barriΦres situΘes entre 22.5 degrΘs α gauche et 22.5 degrΘs α droite.
  15.  
  16. \s;\c;0\n;
  17. Distance minimale de dΘtection. \c;0\n; signifie que mΩme les objets trΦs proches sont dΘtectΘs.
  18.  
  19. \s;\c;5\n;
  20. Distance maximale de dΘtection. Au delα de \c;5\n; mΦtres, les barriΦres sont ignorΘes. Donc, une barriΦre situΘe une case plus loin dans le labyrinthe sera ignorΘe, ce qui est indispensable.
  21.  
  22. Par exemple, \c;\l;radar\u cbot\radar;(Barrier, 90, 45, 0, 5);\n; dirige le radar 90 degrΘs sur la gauche, pour tester si le chemin est libre α gauche.
  23.  
  24. \image tlaby1 10 10;
  25. \b;Principe
  26. Le programme doit rΘsoudre le dΘplacement d'une seule case. Il faudra exΘcuter le programme plusieurs fois, jusqu'α ce que le \l;robot\u object\bottr; arrivΘ α destination.
  27.  
  28.     o  Si rien devant, avancer
  29.     o  Si rien α gauche, quart de tour α gauche puis avancer
  30.     o  Si rien α droite, quart de tour α droite puis avancer
  31.  
  32. 1) On dΘclare trois \l;variables\u cbot\var; de type \c;\l;object\u cbot\object;\n;, appelΘes \c;front\n;, \c;left\n; et \c;right\n;. Ce type indique une variable qui dΘcrit l'objet trouvΘ.
  33. \s;\c;    object   front, left, right;\n;
  34.  
  35. 2) On teste la prΘsence des barriΦres dans les trois directions. Les objets trouvΘs seront contenus dans les trois variables dΘfinies au point 1). Si l'objet n'existe pas, la variable prend la valeur \c;\l;null\u cbot\null;\n;.
  36. \s;\c;    front = radar(Barrier,   0, 45, 0, 5);
  37. \s;    left  = radar(Barrier,  90, 45, 0, 5);
  38. \s;    right = radar(Barrier, -90, 45, 0, 5);
  39. \n;
  40. 3) On teste s'il est possible d'avancer avec \c;\l;move\u cbot\move;\n; α l'aide d'un branchement conditionnel \c;\l;if\u cbot\if;\n;. Si le test est vrai, les instructions entre les accolades \c;{ }\n; sont exΘcutΘes. Si le test est faux, les instructions entre \c;{ }\n; sont sautΘes.
  41. Le \c;return\n; quitte le programme, car le travail α effectuer est alors terminΘ.
  42. \s;\c;if ( front == null )
  43. \s;{
  44. \s;    move(5);
  45. \s;    return;
  46. \s;}
  47. \n;
  48. 4) On teste s'il est possible de tourner α gauche avec \c;\l;turn\u cbot\turn;\n;.
  49. \s;\c;if ( left == null )
  50. \s;{
  51. \s;    turn(90);
  52. \s;    move(5);
  53. \s;    return;
  54. \s;}
  55. \n;
  56. 5) On teste s'il est possible de tourner α droite.
  57.     ...
  58.  
  59. \b;Attention
  60. La ligne \c;if ( )\n; ne doit jamais Ωtre suivie d'un \l;point-virgule\u cbot\term;.
  61.  
  62. \key;\key help;\norm; permet de revoir ces instructions en tout temps !
  63.  
  64. \t;Voir aussi
  65. \l;Commandes\u command; et \l;programmation\u cbot;.
  66.