Skip to content

NickyDeviley/PongRayLibCPP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏓 Pong C++ & Raylib (Modular Engine)

Este repositório contém uma implementação do jogo Pong focada em Desacoplamento de Responsabilidades e Lógica de Colisão. Diferente de implementações simples em arquivo único, este projeto utiliza uma arquitetura baseada em classes especializadas para gerenciar o estado global, entradas de usuário, física e interface.

🚀 Tecnologias e Ferramentas

Linguagem: C++

Biblioteca Gráfica: Raylib (v5.0)

Ambiente de Desenvolvimento: VS Code (Template Starter V2)

Sistema de Build: Makefile

🏗️ Arquitetura do Projeto

O projeto foi dividido em componentes lógicos para seguir os princípios de Responsabilidade Única (SRP):

LacoJogo (Game Engine): Centraliza o Game Loop, instanciando as entidades e coordenando as atualizações de física e renderização.

CollisionManager: Uma classe dedicada exclusivamente à lógica de física, gerenciando colisões entre bola, raquetes e bordas da janela.

KeyHandler: Abstração de entrada de hardware, separando os comandos do Player 1 (WASD) e Player 2 (Setas).

Bola & Retangulo: Entidades com seus próprios atributos de estado (posição, velocidade, hitbox).

Placar: Gerencia a persistência da pontuação e a renderização de texto na tela.

🛠️ Implementações Técnicas em Destaque

  1. Sistema de Colisão e Física

A lógica de colisão utiliza o conceito de Hitbox Dinâmica. A classe Bola atualiza suas bordas (superior, inferior, esquerda e direita) a cada frame, permitindo que o CollisionManager realize verificações precisas.

Inversão de Vetores: Ao colidir com as bordas superior/inferior ou com os jogadores, a bola inverte seus componentes de velocidade (velocidadeX ou velocidadeY).
  1. Gerenciamento de Memória e Referências

Para garantir que o CollisionManager pudesse manipular as entidades sem criar cópias desnecessárias na memória, utilizei a passagem de objetos por referência no construtor, garantindo performance e integridade dos dados durante o tempo de execução. 3. Sistema de Pontuação (Score Logic)

Quando a bola ultrapassa os limites laterais da janela:

O CollisionManager detecta qual lado foi atingido.

O Placar é incrementado.

A bola é reiniciada no centro da tela (640x360), invertendo a direção inicial para o próximo round.

🎮 Como Compilar e Rodar

Este projeto utiliza um Makefile para simplificar o processo de build.

Certifique-se de ter o compilador G++ e a Raylib configurados.

Abra a pasta do projeto no VS Code.

Utilize o atalho F5 (conforme configurado no template) ou execute o comando make no terminal para compilar.

O binário será gerado e executado automaticamente.

Controles:

Jogador 1 (Vermelho): Teclas W (Sobe) e S (Desce).

Jogador 2 (Azul): Teclas Seta para Cima e Seta para Baixo.

About

Jogo clássico Pong programado utilizando o Framework Raylib e a linguagem de programação C++.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages