Pilote o módulo!

Depois de 30 dias olhando rochas e comendo cereais você decide que é hora de explorar outras partes do planeta.

Você voa por um tempo e repentinamente repara que está quase sem combustível. Infelizmente, você está numa situação delicada e o piloto altomático é inútil. Você vai ter que pilotar o módulo você mesmo. Sua missão é pousar o módulo numa área plana com uma velocidade vertical menor que 10 m/s, uma velocidade horizontal menor que 5 m/s e um ângulo de 0°.

Você precisa definir duas funções: [!java]void [/!]initialize() e [!java]void [/!]step(). initialize() é chamada uma única vez depois de você apertar "Rodar". Você pode usar isto para escolher alguma área plana. Como antes, step() é chamado a cada 0.1 segundos e é usada para ajustar a potência e ângulo do módulo. Como no primeiro exercício, a potência do módulo é ajustada através de [!java]void [/!]setDesiredThrust([!java]int [/!]desiredThrust[!scala]:Integer[/!]). Mas você também pode controlar seu ângulo através de [!java]void [/!]setDesiredAngle([!java]double [/!]desiredAngle[!scala]:Double[/!]). Um ângulo de 0° denota uma posição vertical onde a "cabeça" do módulo aponta para cima. Este é o ângulo com o qual você deve pousar. Um ângulo positivo denota um módulo inclinado para a esquerda, um ângulo negativo um inclinado para a direita. Você não pode inclinar mais que ±90°, e o ângulo pode mudar por no máximo ±5° em cada passo.

Como no exercício anterior, [!java]List<Point> [/!]getGround()[!scala]:List[Point][/!] retorna os vértices do perfil do solo da esquerda para a direita. Favor consulte a documentação (Ajuda/Sobre este mundo) para um manual de referência do módulo lunar.

Como antes, seu programa deve pousar com segurança o módulo em todas as situações encontradas além desta nova.

Boa sorte, tente não cair!