Pac-Man CLI 2024

Desenvolvimento de uma versão do clássico Pac-Man em linha de comando (CLI) em C++ nativo. O projeto explora algoritmos de busca de menor caminho (distância Manhattan) para a IA dos fantasmas, gerenciamento de máquina de estados (modo caça vs. modo fuga), suporte a teletransporte via túneis e game loop com I/O não-bloqueante.

Linguagem(ns)

C++ Nativo

Conceitos abordados

Algoritmos de Pathfinding, Máquina de Estados Finita (FSM), Game Loop Não-Bloqueante, Animação Procedural em CLI e Manipulação de Matrizes.

Tech Stack

C++Win32 APISTL (Vectors)Game LoopPathfinding IA

Sobre o projeto

/projects/pac-man/demo.mp4

Pac-Man CLI: Inteligência Artificial de Perseguição e Game Loop em C++ 🟡👻

Construir o Pac-Man em ambiente de terminal exige resolver desafios complexos de física de tempo real, sincronização de estados e algoritmos de inteligência artificial de movimentação sem o uso de motores de jogos gráficos. Nesta implementação em C++, foquei em resolver problemas de arquitetura de jogos e lógica algorítmica: - IA de Perseguição e Pathfinding (Distância Manhattan): desenvolvi a função distancia_fantasma_pacman que calcula iterativamente a menor distância geométrica entre os fantasmas e o Pac-Man. Cada fantasma analisa as casas adjacentes e toma decisões autônomas para cercar o jogador. - Máquina de Estados dos Fantasmas (Modo Caça vs. Modo Fuga): ao consumir uma pastilha especial ('o'), o estado global do jogo é alterado. A função fantasma_fugindo inverte a lógica da IA, fazendo os fantasmas escolherem as coordenadas com maior distância do Pac-Man e alterando sua cor para azul via API Win32. - Game Loop Determinístico e I/O Não-Bloqueante: utilizei a captura assíncrona de entradas com kbhit() e getch() do conio.h, permitindo que a física do jogo e a movimentação dos fantasmas continuem rodando continuamente sem pausar a execução esperando comandos do jogador. - Tunelamento e Mapeamento de Borda: implementei suporte a teletransporte espacial nas extremidades do mapa, permitindo que o Pac-Man atravesse as bordas do terminal e reapareça no lado oposto do grid.

contato

Gostou deste projeto? Vamos criar algo juntos

Estou disponível para projetos freelance e oportunidades presenciais, híbridas ou remotas. Vamos conversar sobre o que você quer construir.

← Ver outros projetos