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!