Bravo ! Vous avez gagné dans une boîte de céréales un voyage (aller simple) pour Mars. La NASA vous a même fourni un module d'excursion lunaire pour l'occasion, et c'est donc avec ce véhicule que vous voyagerez.
Avant le décollage, vous devez vous entraîner sur simulateur aux bases de l'alunissage. Si tout se passe comme prévu, vous ne devriez pas avoir à voler en mode manuel, mais mieux vaut prévenir que guérir, comme ils disent.
Votre mission est de poser le module avec une vitesse verticale inférieure à 10 m/s. Il y a deux façons d'influer sur la trajectoire du module : en modifiant son angle, ou en réglant la poussée de son moteur. Dans cette simulation, nous ne nous intéressons qu'à la poussée, exprimée en m/s².
Vous devez écrire le [!python]corps de la fonction step()
, qui
sera appelée[/!][!scala|java|c]code qui sera appellé[/!] tous les dixièmes
de seconde pendant la simulation. Il faut ajuster la poussée du moteur en
utilisant la fonction [!java]void [/!]setPousseeDesiree([!java]int
[/!]poussee[!scala]:Integer[/!])
où poussee
est un
entier entre 0 et 4 (représentant une poussée entre 0 m/s² et 4 m/s²). Vous
ne pouvez incrémenter ou décrémenter la poussée que de 1 entre deux pas de
la simulation. Ainsi, si la poussée du moteur est actuellement de 2 et que
vous demandez 4, vous n'aurez que 3 à la prochaine étape. Si vous demandez
une valeur inférieure à 0 (ou supérieure à 4), tout se passera comme si vous
aviez demandé 0 (ou 4).
Afin de prendre des décisions informées, vous pouvez demander des
informations sur l'état actuel du module. Dans cette simulation, vous ne
serez probablement intéressé que par sa position verticale (accessible grâce
à [!java]double [/!]getY()[!scala]:Double[/!]
) et sa vitesse
verticale (accessible grâce à [!java]double
[/!]getVitesseY()[!scala]:Double[/!]
). Vous pouvez également demander
la poussée actuelle du moteur (avec [!java]int
[/!]getPoussee()[!scala]:Integer[/!]
) si vous avez oublié ce que vous
avez demandé. Rappelez vous que la gravité martienne est de 3.711 m/s², cela
peut vous être utile.
Une dernière chose : le module est plutôt petit, et vous n'avez pas tant de
carburant que cela. À chaque pas de simulation, il consomme autant d'unité
de carburant que la poussée actuelle du moteur. Si vous tombez en panne
sèche, vous serez en chute libre alors attention ! Vous pouvez consulter le
niveau du réservoir avec [!java]int
[/!]getFuel()[!scala]:Integer[/!]
.
Bon courage !