Objetivo
Criar um robô que
seja controlável por teclas e que permita a movimentação de objetos em um
cenário 2D.
O controle do robô pode ser feito com o teclado.
O programa deverá exibir, EM OPENGL, um cenário que represente a vista lateral de uma cena, semelhante ao da figura abaixo, onde encontram-se um "robô de braço articulado", e um conjunto de "caixas" que devem ser transportadas para "prateleiras".
O transporte das "caixas" deve ser feito pelo robô. Para "pegar" uma caixa deve-se tocá-la com a ponta do braço do robô e teclar "barra de espaço" para prendê-la ao braço.
Só deve ser permitido "pegar" caixas que não tenham
outras caixas sobre ela.
Para poder pegar uma
caixa, ela deve estar próxima da extremidade do braço. Para calcular a
distância entre a caixa e um ponto do braço, utilize a func'ão CalculaPonto, disponível neste link.
Quando uma caixa estiver presa ao braço, qualquer movimento deste deve mover a caixa.
Para soltar a caixa tecla-se barra de espaço. Ao soltar uma caixa, este deve começar a "cair" e parar quando tocar em um obstáculo como a prateleira, o chão ou outras caixas.
A - Move junta 1 para esquerda | a - Move junta 1 para direita |
B - Move junta 2 para esquerda | b - Move junta 1 para direita |
....... | ....... |
O giro de cada junta do braço do robô deve ser feito a cada 15 graus.
Modelos de Objetos
Os modelos das caixas e objetos do cenário são de livre escolha, desde que sejam formados por objetos compostos por um conjunto de quadrados coloridos. A descrição destes objetos deve ser feita por meio de arquivos texto, conforme o formato a seguir.
#CORES
4
1 0 0 0 (definição da cor 1 - PRETO)
2 255 0 0 (definição da cor 2 - VERMELHO)
3 0 255 0 (definição da cor 3 - VERDE)
4 255 255 255 (definição da cor 4 - BRANCO)
#OBJETO
5 4 (número de linhas e colunas do objeto)
1 1 1 1
1 3 3 1
1 3 3 1
2 2 2 2
1 1 1 1