Pilote o módulo!

Depois de 30 dias a olhar a rochas e a comer cereais decide que é hora de explorar outras partes do planeta.

Voa por um tempo e repentinamente repara que está quase sem combustível. Infelizmente, está numa situação delicada e o piloto automático é inútil. Você mesmo terá que pilotar o módulo. A 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°.

Precisa definir duas funções: [!java]void [/!]initialize() e [!java]void[/!]step(). initialize() é chamada uma única vez depois de apertar "Executar". Pode usá-lo para escolher uma á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 também pode controlar o ângulo dele 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 deve pousar. Um ângulo positivo denota um módulo inclinado para a esquerda, um ângulo negativo um inclinado para a direita. 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, o seu programa deve pousar o módulo com segurança em todas as situações encontradas além desta nova.

Boa sorte, tente não cair!