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!