Módulo lunar

Pilota um módulo lunar neste universo. A cada passo da simulação recebe a posição, velocidade, ângulo e potência do módulo e deve enviar um comando a ajustar o ângulo e a potência.

Funções fornecidas

[!java|c]double [/!]getX()[!scala]:Double[/!]
[!java|c]double [/!]getY()[!scala]:Double[/!]
Obter (Get) as posições X e Y do módulo.
[!java|c]double [/!]getSpeedX()[!scala]:Double[/!]
[!java|c]double [/!]getSpeedY()[!scala]:Double[/!]
Obter a velocidade horizontal e vertical do módulo.
[!java|c]double [/!]getAngle()[!scala]:Double[/!]
[!java|c]void [/!]setDesiredAngle([!java|c]double [/!]desiredAngle[!scala]:Double[/!])
Obter ou ajustar o ângulo do módulo.
Um ângulo de 0° denota uma posição vertical onde a "cabeça" do módulo aponta para cima. É o ângulo com que deve pousar. Um ângulo positivo denota a inclinação para a esquerda, um ângulo negativo denota inclinação para a direita. Não pode inclinar mais que ±90° e o ângulo pode sofrer uma variação de no máximo ±5° a cada passo.
[!java|c]int [/!]getThrust()[!scala]:Int[/!]
[!java|c]void [/!]setDesiredThrust([!java|c]int [/!]thrust[!scala]:Int[/!])
Obter ou ajustar a potência do módulo.
Só pode aumentar ou diminuir a potência de 1 a cada passo. pois se a potência atual é 2 e pede 4, ela vai mudar para 3 no próximo passo. Se pedir menos que 0 (ou, respetivamente, mais que 4), vai ser como se tivesse pedido 0 (ou, respetivamente, 4).
[!java|c]int [/!]getFuel()[!scala]:Int[/!]
Obter o combustível restante no módulo. A cada passo da simulação o módulo consome tantas unidades de combustível como a potência atual. Uma vez que fique sem combustível entra em queda livre. Portanto, cuidado!
[!java]List<Point> [/!]getGround() [!scala]:List[Point][/!]
Obter os vértices do perfil do solo da esquerda para a direita. [!java|scala]Pode recuperar as coordenadas X e Y de cada ponto com os métodos correspondentes do seu ponto: p.x() e p.y().[/!] [!python]Cada ponto é uma array de dois inteiros a denotar respetivamente as coordenadas X e Y de cada ponto.[/!]