# Aux commandes du module

Après 30 jours à regarder des cailloux en mangeant des céréales, vous décidez qu'il est temps d'aller explorer d'autres coins de cette planète.

Vous volez un moment, avant de réaliser soudain que vous êtes presque à court d'essence. Le pilote automatique est malheureusement inutile dans ce genre de situation périlleuse, et vous allez devoir vous poser en mode manuel. Votre mission et de vous poser sur une zone plate, avec une vitesse verticale inférieure à 10 m/s, une vitesse horizontale inférieure à 5 m/s et un angle de 0°.

Vous devez définir deux fonctions : `[!java]void [/!]initialize()` et `[!java]void [/!]step()`. `initialize()` est appelée au moment où l'on appuie sur le bouton «Exécuter». Vous pouvez l'utiliser pour choisir une zone plate. Comme avant, `step()` est appelée tous les dixièmes de seconde pour vous permettre d'ajuster la poussée (avec la fonction `[!java]void [/!]setPousseedesiree([!java]int [/!]poussee[!scala]:Integer[/!])`). Vous pouvez également contrôler l'angle du module avec la fonction `[!java]void [/!]setAngleDesire([!java]double [/!]angle[!scala]:Double[/!])`. Un angle de O° dénote une position verticale, avec le sommet du module dirigé vers le haut. C'est l'angle avec lequel vous devez vous poser. Un angle positif indique que le module penche vers la gauche tandis qu'un angle négatif indique au contraire qu'il penche à droite. Il est impossible de se pencher à plus de ±90°, et on ne peut pas pencher le module de plus de ±5° en une fois.

Comme dans les exercices précédents, `[!java]List<Point> [/!]getSol()[!scala]:List[Point][/!]` retourne les points qui composent l'horizon. Le manuel de référence de votre module est disponible dans la documentation (Aide/À propos de ce monde).

Comme d'habitude, votre programme doit se poser sans heurt dans toutes les situations que nous avons rencontré jusqu'à présent, ainsi que dans ce nouveau cas.

Bonne chance. Essayez de ne pas vous scratcher ;)