{"id":25328482,"url":"https://github.com/skhalifa05/raylib-pong","last_synced_at":"2026-05-05T20:33:30.643Z","repository":{"id":276138599,"uuid":"928332071","full_name":"skhalifa05/RayLib-Pong","owner":"skhalifa05","description":"Pong Game is a simple engaging game built with Raylib, where players control a paddle to keep a bouncing ball in play. The game features dynamic ball physics, a scoring system, and a limited number of lives. Players move the paddle using arrow keys to prevent the ball from falling off the screen.","archived":false,"fork":false,"pushed_at":"2025-05-05T09:31:40.000Z","size":9372,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-05T09:52:04.502Z","etag":null,"topics":["ball","bounce","cpp","engine","game","opengl","paddle","pong","raylib"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/skhalifa05.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-02-06T13:13:43.000Z","updated_at":"2025-05-05T09:31:44.000Z","dependencies_parsed_at":"2025-05-05T09:49:45.740Z","dependency_job_id":"14da16ee-9aa8-4681-a268-be5c9b21b64a","html_url":"https://github.com/skhalifa05/RayLib-Pong","commit_stats":null,"previous_names":["skhalifa05/arkanoidbouncingball","skhalifa05/paddlebouncegame","skhalifa05/raylib-pong"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skhalifa05%2FRayLib-Pong","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skhalifa05%2FRayLib-Pong/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skhalifa05%2FRayLib-Pong/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skhalifa05%2FRayLib-Pong/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/skhalifa05","download_url":"https://codeload.github.com/skhalifa05/RayLib-Pong/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skhalifa05%2FRayLib-Pong/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259093135,"owners_count":22804127,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ball","bounce","cpp","engine","game","opengl","paddle","pong","raylib"],"created_at":"2025-02-14T02:33:52.644Z","updated_at":"2026-05-05T20:33:30.598Z","avatar_url":"https://github.com/skhalifa05.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Raylib Pong Game 🎮\n\nA simple **pong game** built using **C++** and **Raylib**. The game features a paddle controlled by the player, a bouncing ball, and a lives system. The goal is to keep the ball from falling off the screen while increasing your score.\n![ss.png](ss.png)\n## Game Concept\n**Paddle Bounce** challenges players to control a paddle at the bottom of the screen, bouncing a ball to keep it in play. The goal is to maintain control, avoid missing the ball, and rack up points by bouncing it off the paddle. Players have a limited number of lives, and the game ends when all lives are lost.\n\n## Gameplay\n* \tUse the left (←) and right (→) arrow keys to move the paddle.\n* \tThe ball bounces off the paddle and walls, but if it falls below the screen, you lose a life.\n* \tThe game tracks your score and lives, displaying them in real time.\n* \tThe ball changes color when it bounces off the paddle.\n* \tThe game ends when you run out of lives.\n\n## Features\n\n* **Paddle Control**: Move left and right to hit the ball.\n* **Dynamic Ball Physics**: Ball bounces off walls, ceiling, and paddle.\n* **Score System**: Gain points for successful paddle hits.\n* **Life System**: Lose a life when the ball touches the bottom.\n* **Color Switching**: Paddle hits change the background color.\n* **Screen Wrapping**: Paddle re-enters from the opposite side if it moves beyond the screen boundaries.\n* **Power-Up System**: Collect power-ups that spawn randomly to enhance gameplay. Power-ups can provide effects such as:\n     * **Larger Paddle**:  increases the paddle’s width for easier ball control.\n     * **Extra Life**: Grants an additional life to extend gameplay.\n\n## Code Structure\n\nThe game follows an object-oriented design and includes the following classes:\n\n\nClass | Responsibility \n--- | --- | \nGameManager | Controls game logic, updates, and rendering (Singleton Pattern).\nBall | Handles movement, bouncing, and resets.\nPaddle | Controls user input and movement.\nLivesManager | Tracks player lives and updates the UI.\nPowerUpManager | Spawns, tracks, and executes power-ups.\nPowerUp | Base class for all power-ups, defining common behavior.\nLargerPaddle | Inherits from PowerUp, increases paddle size when activated.\nExtraLife | Inherits from PowerUp, grants an additional life.\n\n## 📂 Project Structure\n\n    📦 PaddleBounce\n    ├── include/\n    ├── lib/\n    ├── src/\n    │   ├── PowerUps/\n    │   │   ├── ExtraLife.h        # Header for Extra Life\n    │   │   ├── ExtraLife.cpp        # PowerUp for Larger Paddle Powerup\n    │   │   ├── LargePaddle.h        # Header for Larger Paddle Powerup\n    │   │   ├── LargePaddle.cpp        # PowerUp for Larger Paddle Powerup\n    │   │   └── PowerUp.h        # Powerup Interface\n    │   ├── main.cpp        # Game loop and initialization\n    │   ├── GameManager.cpp # Singleton managing game logic\n    │   ├── Ball.cpp        # Ball physics and movement\n    │   ├── Paddle.cpp      # Paddle control\n    │   ├── LivesManager.cpp # Lives tracking\n    │   ├── GameManager.h   # Header for GameManager\n    │   ├── Ball.h          # Header for Ball class\n    │   ├── Paddle.h        # Header for Paddle class\n    │   ├── LivesManager.h  # Header for LivesManager class\n    ├── README.md           # Project documentation\n    └── Makefile            # Build instructions\n## Prerequisites\n* \tC++ Compiler (GCC, Clang, MSVC)\n* \tRaylib installed (https://github.com/raysan5/raylib/releases)\n\n\n\n## Possible Improvements 🚀\n\n* \tAdd difficulty levels (ball speed increases over time).\n* \tImplement a pause menu and restart option.\n* \tAdd sound effects for collisions.\n* \tIntroduce power-ups (e.g., bigger paddle, slow-motion).\n\n## License\n\nThis project is open-source under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskhalifa05%2Fraylib-pong","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskhalifa05%2Fraylib-pong","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskhalifa05%2Fraylib-pong/lists"}