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

  1. \b;Exercice
  2. DΘplacer le \l;robot\u object\bottr; le plus rapidement possible, α l'aide de l'instruction \c;motor( )\n;. Il faudra programmer une dΘcΘlΘration en bout de piste, pour ne pas percuter les \l;mines\u object\mine;.
  3.  
  4. Un programme avec \c;\l;move\u cbot\move;(25);\n; fonctionnerait parfaitement, mais le but est ici d'apprendre le fonctionnement de l'instruction \c;\l;motor\u cbot\motor;\n;.
  5.  
  6. Cette instruction reτoit deux valeurs :
  7. 1) La consigne pour le moteur gauche.
  8. 2) La consigne pour le moteur droite.
  9.  
  10. \s;\c;    motor( left, right );
  11. \n;
  12. Il s'agit de deux valeurs comprises entre -1 et 1 :
  13. -1 = marche arriΦre
  14.  0 = arrΩt
  15.  1 = marche avant
  16.  
  17. Par exemple, \c;motor(0.5, 0.5);\n; fait avancer le \l;robot\u object\bottr; α mi-vitesse, jusqu'α ce qu'une autre consigne soit donnΘe.
  18.  
  19. Avec l'instruction \c;motor(0.5, 0.6);\n;, le \l;robot\u object\bottr; avance α mi-vitesse en tournant lΘgΦrement α gauche, puisque le moteur de droite va un peu plus vite (\c;0.6\n;) que le moteur de gauche (\c;0.5\n;).
  20.  
  21. \b;Principe
  22. L'idΘe consiste α avancer α fond les 23 premiers mΦtres, puis α diminuer progressivement la vitesse les 2 derniers mΦtres.
  23. L'instruction \c;\l;distance\u cbot\dist;(p1, p2);\n; retourne la distance entre deux points. Il suffit donc de mΘmoriser la position de dΘpart, puis de calculer la distance parcourue avec \c;distance(position, start)\n;.
  24. La \l;variable\u cbot\object; \c;position\n; donne la position actuelle du \l;robot\u object\bottr;. Donc, \c;distance(position, start);\n; retourne la distance parcourue.
  25.  
  26. \b;Marche α suivre
  27. 1) MΘmoriser la position de dΘpart :
  28. \s;\c;    point start;
  29. \s;    start = position;
  30. \n;
  31. 2) DΘmarrer α donf :
  32. \s;\c;    motor(1, 1);
  33. \n;
  34. 3) Faire une boucle infinie \c;\l;while\u cbot\while;\n; :
  35. \s;\c;    while ( true )
  36. \s;    {
  37. \s;        float len = distance(position, start);
  38. \s;        if ( len > 25-2 )
  39. \s;        {
  40. \s;            motor( moins qu'avant ! );
  41. \s;        }
  42. \s;    }
  43. \n;
  44. Tant que la longueur est plus petite que 23 mΦtres, on n'effectue pas les instructions aprΦs le \c;\l;if\u cbot\if;\n;. Les moteurs conservent donc les consignes initiales \c;\l;motor\u cbot\motor;(1,1);\n;, vitesse maximale.
  45.  
  46. Pour ralentir progressivement, il faut donner une consigne de vitesse proportionnelle au reste de la distance α parcourir :
  47. o  S'il reste \c;2.0\n; mΦtres -> consigne = \c;1.00\n; (maximum)
  48. o  S'il reste \c;1.5\n; mΦtres -> consigne = \c;0.75\n;
  49. o  S'il reste \c;1.0\n; mΦtre  -> consigne = \c;0.50\n;
  50. o  S'il reste \c;0.5\n; mΦtre  -> consigne = \c;0.25\n;
  51. o  S'il reste \c;0.0\n; mΦtre  -> consigne = \c;0.00\n; (arrΩt)
  52.  
  53. \image tdragst1 12 6;
  54. L'\l;expression\u cbot\expr; \c;(25-len)/2\n; est donc parfaite pour cela.
  55. A vous de terminer le programme ...
  56.  
  57. \b;Remarque
  58. Si les consignes donnΘes sont des valeurs plus grandes que 1, le \l;robot\u object\bottr; n'avance pas plus vite.
  59.  
  60. \key;\key help;\norm; permet de revoir ces instructions en tout temps !
  61.  
  62. \t;Voir aussi
  63. \l;Commandes\u command; et \l;programmation\u cbot;.
  64.