PACMAN

 

Requisitos funcionais (Dinâmica do jogo)

O objetivo do jogo é comer todas as pastilhas do labirinto sem ser atingido pelos fantasmas. Ao colidir com uma pastilha o PACMAN a engole e a mesma deve desaparecer do labirinto. Caso o jogador coma todas as pastilhas de um labirinto, o jogador passa de fase. Caso o jogador coma todas as pastilhas de todos os labirintos disponíveis o mesmo vence o jogo.


Os únicos movimentos do PACMAN controlados pelo usuário são deslocamentos usando as teclas direcionais para frente, para trás, para esquerda e para direita, com o objetivo de desviar dos fantasmas e comer as pastilhas espalhadas pelo labirinto.


Quando um fantasma colide com o PACMAN o mesmo morre, perdendo assim uma vida. O jogador possui 2 vidas extras, sendo mostradas na barra inferior da tela (ver imagem abaixo). Ao perder uma vida e usar uma vida extra, a quantidade de pastilhas (e super-pastilhas) restantes na fase se mantém inalteradas em relação ao momento da morte do PACMAN, mas os fantasmas e o PACMAN voltam para a posição inicial da fase. Neste caso, para concluir a fase (ou o jogo) o jogador precisará apenas se preocupar com as pastilhas (super-pastlhas) restantes. Quando o jogador perde todas as suas vidas colidindo com fantasmas, o mesmo perde o jogo.


A velocidade dos fantasmas e do PACMAN são iguais, mas, como no jogo original, as super-pastilhas diminuem a velocidade dos fantasmas em um fator percentual e também permitem que o PACMAN devore os fantasmas. Ao serem devorados, sobram apenas os “olhos do fantasma” que devem voltar ao centro do labirinto, onde os restos do fantasma se transformam novamente em um fantasma que voltará a perseguir o PACMAN. Em cada fase existem 4 super-pastilhas. A duração do efeito das super-pastilhas é determinada pelo desenvolvedor.


Cada pastilha devorada vale dez pontos, cada super-pastilha devorada vale 100 pontos e cada fantasma devorado vale 200 pontos. O jogo deve durar pelo menos duas fases.


Requisitos Técnicos

Ao pressionar a tecla H no teclado, o programa deve emitir uma mensagem de help, indicando como utilizar o programa (função das teclas e mouse). Ao executar o programa, o jogo não deve começar automaticamente. Deve-se esperar que o jogador pressione alguma tecla determinada (que deve ser incluída no help) para que se tenha início o jogo.


Deve-se informar ao jogador o número de pastilhas que ainda não foram devoradas, juntamente com a pontuação e o número de vidas extras. Essa informação deve ser colocada na tela do jogo em uma viewport separada juntamente com o número de vidas restantes e sua respectiva pontuação. Quando o jogo termina, seja por morte pelos fantasmas ou por ter comido todas as pastilhas deve-se informar ao jogador se ele venceu ou perdeu e sua pontuação.


Ao contrário do original, o jogo deve ser desenvolvido em 3D !!!. A câmera deve ser posicionada de maneira a se obter uma visão parecida com a da figura acima. Deve-se implementar uma segunda câmera com a “visão do pacman”, ou seja, em primeira pessoa. Deve ser prevista uma tecla para trocar de câmera durante o jogo.


Para os fantasmas e cenário (muros, pastilhas, plano de fundo e outros), pode-se utilizar modelos feitos em alguma ferramenta de modelagem externa (como Blender, 3DS, etc.) ou pode-se modelá-los com as primitivas de OpenGL e GLUT. Podem ser acrescentados outros objetos ao cenário como prédios, árvores, etc. Use sua criatividade. Obs: Vários sites na web disponibilizam maneiras de carregar modelos 3D, por exemplo: http://donkerdump.nl/node/207

Texturas devem ser utilizadas nas paredes, fundo, piso, e se necessário nos fantasmas e no próprio PACMAN. Sugestão: utilize diferentes texturas para o céu e teto do labirinto conforme o tipo de visão da câmera (labirinto ou em primeira pessoa).


Devem ser utilizados recursos de iluminação da OpenGL de forma que se obtenha diferentes fontes de iluminação: spot, pontual, etc. Use a sua imaginação de acordo com o cenário, labirinto escuro, céu aberto, etc.


Para que a dinâmica do jogo seja criada será necessário implementar alguns métodos de detecção de colisão: (1) teste de colisão entre o PACMAN e as paredes do labirinto; (2) teste de colisão entre os fantasmas e as paredes do labirinto; (3) teste de colisão entre o PACMAN e as pastilhas; (4) além do teste de colisão entre o PACMAN e os fantasmas. Observe que a colisão entre os fantasmas não precisa ser detectada.

Sugestão: pode-se utilizar colisão simples, representando cada personagem do jogo através de uma esfera utilizando a distância entre os centros das esferas juntamente com os seus raios para saber se houve colisão.


A "inteligência" dos fantasmas se restringe a movimentos na direção do PACMAN na horizontal ou na vertical, se houver mais de uma possibilidade, deve-se selecionar de forma pseudo-aleatória para onde ir. O número de fantasmas deve estar entre 4-6 para tornar o jogo interessante.

Sugestões de Desafios e extras

  1. 1. Inclusão de efeitos sonoros;

  2. 2. Inclusão em um viewport separada do mapa em 2D em miniatura quando a visão estiver em primeira pessoa;

  3. 3. Crie efeitos diferentes para a super-pastilha, possibilitando matar fantasmas à distância ou algum outro tipo de efeito especial, de criação do prórpio programador (armas, saltar, magias, etc.)