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!