Trabalho final da cadeira de fundamentos de computação gráfica, onde será desenvolvido um jogo em C/C++ utilizando a biblioteca OpenGL
O jogo é baseado no clássico "Super Mario", porém feito em 3D e em uma versão (muito) mais enxuta do que a original.
Definições:
- O objetivo do jogo é atravessar o mapa, desviando de obstáculos, como buracos e inimigos ("Koopa" e "Goomba") no meio do caminho, até chegar ao tudo verde que leva para o próximo mapa.
- O jogo possui 3 mapas diferentes, e não há telas de carregamento entre os mapas.
- Caso o jogador caia em algum buraco ou encoste em algum inimigo, ele será mandado de volta para o início do mapa como uma penalização.
O trabalho foi realizado pelos alunos:
- Gustavo Lacroix
- Mateus Kienzle
Distruição das atividades:
- Malhas Poligonais Complexas [ Realizada por Gustavo ]
- Transformações Geométricas Controladas pelo Usuário [ Realizada por Gustavo e Mateus ]
- Modelos de Interpolação de Phong e Gouraud [ Realizada por Gustavo ]
- Movimentação com curva Bézier cúbica [ Realizada por Mateus ]
- Animações baseadas no tempo [ Realizada por Gustavo e Mateus ]
- Camera livre e camera look-at [ Realizada por Gustavo e Mateus ]
- Três tipos de testes de intersecção [ Realizada por Gustavo ]
- Modelos de Iluminação Difusa e Blinn-Phon [ Realizada por Gustavo ]
- Mapeamento de texturas em todos os objetos [ Realizada por Gustavo e Mateus ]
- Instâncias de objetos [ Realizada por Mateus ]
-
Durante a realização do trabalho foi utilizado o auxílio do CHAT GPT 3.5 . A ferramenta foi utilizada para consultas sobre a sintaxe da linguagem C++. Além disso, foi útil em auxiliar em alguns raciocínios para desenvolver porções de código.
-
Em alguma vezes a ferramenta se demonstrou acertiva com as respostas, contribuindo para a realização e facilitação do trabalho. Algumas vezes a ferramenta não foi capaz de ajudar plenamente, exigindo que outras fontes de conhecimento na internet fossem exploradas, como o StackOverflow.
- Cada fase está contida dentro de um laço for , onde é instanciado n objetos. Modifica-se a posição x, y e Z desses objetos a para criar padrões distintos entre as fases do jogo
O jogo disponibiliza interação com usuário em tempo real, para isso foi utilizada funções disponíveis pela biblioteca GLFW, como , por exemplo: * [ glfwSetKeyCallback ] * [ glfwSetMouseButtonCallback ] * [ glfwSetCursorPosCallback ] * [ glfwSetScrollCallback ] Cada uma dessas funções recebe como parametro uma outra função Callback - programadas para responder cada ação específica previstas pelos desenvolvedor. Podemos citar, a função KeyCallback , a qual sempre será chamada quando um usuário pressionar alguma tecla do teclado. Essa função ajusta variáveis de controle de movimentação , mudanças na transformação geométrica de objetos específicos da cena virtual, entre outras coisas.
Para o controle do mouse e suas derivações, as funções glfwSetScrollCallback , glfwSetMouseButtonCallback, glfwSetCursorPosCallback recebem funções Callback específicas para cada uma das suas aplicações:
-
A função glfwSetCursorPosCallback recebe a função Callback CursorPosCallback - função callback chamada sempre que o usuário movimentar o cursor do mouse em cima da janela OpenGL.
-
A função glfwSetScrollCallback recebe como Callback a função ScrollCallback, a qual sempre é chamada quando o usuário movimenta o scroll do mouse ( " rodinha " ).
-
A função glfwSetMouseButtonCallback recebe como função callback a função MouseButtonCallback, a qual sempre é chamada quando um dos botões do mouse é clicado.
- A função bezierCurve foi utilizada na movimentação do "Koopa", um dos inimigos do Mario.
- Foram utilizados esses modelos de iluminação em alguns objetos, como o "Cubo Amarelo" e o "Tubo verde".
- O jogo possui 3 tipos de colisões:
-
Colisão ponto cubo - Utilizada para detectar a colisão entre o Mario e os cubos flutuantes.
-
Colisão ponto plano - Utilizada para garantir que o Mario esteja em contato com a plataforma do chão do mapa, composta por cubos.
-
Colisão ponto esfera.
-
- W : para mover-se para frente
- A : para mover-se para a esquerda
- S : para mover-se para trás
- D : para mover-se para direita
- ESPAÇO : para pular
- F : para ativar camera free-cam
- L : para voltar para a camera look-at
-
- Faça donwload do zip pelo GitHub
-
- Extraia o arquivo compactado no seu diretório de preferência
-
- Acesse a pasta bin -> Acesse Debug -> Abra o arquivo main.exe
-
- Faça donwload do zip pelo GitHub
-
- Extraia o arquivo compactado no seu diretório de preferência
-
- Abra a IDE Codeblocks
-
- Vá na aba "File" ( No canto superior esquerdo da IDE )
-
- Clique em "Open"
-
- Entre na pasta que você extraiu -> Abra o arquivo Laboratorio_5.cbp
-
- Clique no ícone azul para buildar o programa novamente e logo em seguida clique no botão de Play.



