{"id":22218286,"url":"https://github.com/coders-school/pacman-qt","last_synced_at":"2025-03-25T07:17:45.421Z","repository":{"id":218192100,"uuid":"745821750","full_name":"coders-school/pacman-qt","owner":"coders-school","description":null,"archived":false,"fork":false,"pushed_at":"2024-04-14T23:27:11.000Z","size":836,"stargazers_count":0,"open_issues_count":24,"forks_count":3,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-01-30T06:29:33.364Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/coders-school.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}},"created_at":"2024-01-20T08:42:25.000Z","updated_at":"2024-03-05T18:48:48.000Z","dependencies_parsed_at":"2024-01-26T00:25:46.799Z","dependency_job_id":"14d94272-4bd1-4a14-84e4-361a6688aaa3","html_url":"https://github.com/coders-school/pacman-qt","commit_stats":null,"previous_names":["coders-school/pacman-qt"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coders-school%2Fpacman-qt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coders-school%2Fpacman-qt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coders-school%2Fpacman-qt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coders-school%2Fpacman-qt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coders-school","download_url":"https://codeload.github.com/coders-school/pacman-qt/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245414550,"owners_count":20611367,"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":[],"created_at":"2024-12-02T22:20:09.161Z","updated_at":"2025-03-25T07:17:45.390Z","avatar_url":"https://github.com/coders-school.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pac-Man Game Project in Qt\n\n## Project Description\nThis project is focused on developing a Pac-Man game using the Qt framework. The goal is to create a fully functional game that replicates the classic Pac-Man experience with modern programming techniques.\n\n## Installation Instructions\nTo set up and run the game, follow these steps:\n1. Clone the repository.\n2. Install Qt and Qt Creator from [Qt's official website](https://www.qt.io/).\n3. Open the project in Qt Creator and build it.\n4. Run the executable to play the game.\n\n## Task Distribution\n- **Game Logic (Class `Game`)**: Managed by Person 1.\n- **Player Mechanics (Class `Player`)**: Managed by Person 2.\n- **Ghost Mechanics (Class `Ghost`)**: Managed by Person 3.\n- **Map Generation (Class `Maze`)**: Managed by Person 4.\n- **User Interface (Class `UIManager`)**: Managed by Person 5.\n- **Audio Management (Class `AudioManager`)**: Managed by Person 6.\n- **Score Management (Class `ScoreManager`)**: Managed by Person 7.\n- **Configuration Management (Class `ConfigManager`)**: Managed by Person 8.\n\n\n## Class Structure and TODOs\n### Class `Game`\n- Initialize and control the main game loop.\n- Manage game states (start, pause, end).\n- Integrate with the Qt event system.\n\n### Class `Player`\n- Implement movement and animations for Pac-Man.\n- Handle collisions with ghosts and collect points.\n- Implement special effects like power-ups.\n\n### Class `Ghost`\n- Implement movement and AI strategies for ghosts.\n- Animate and diversify ghost behaviors.\n- Handle collisions with Pac-Man.\n\n### Class `Maze`\n- Create and load the labyrinth structure.\n- Place points and power-ups.\n- Handle map collisions and boundaries.\n\n### Class `UIManager`\n- Create menus, pause, and end-game screens.\n- Display scores and statistics.\n- Integrate with the main game loop.\n\n### Class `AudioManager`\n- Add sound effects and music.\n- Control volume and audio settings.\n- Sync audio with in-game actions.\n\n### Class `ScoreManager`\n- Responsible for managing game scores, player rankings, and game progress.\n- **Integration with SQLite**:\n  - Create a SQLite database to store player scores and progress.\n  - Implement functions to add, retrieve, and update scores in the database.\n  - Ensure data integrity and handle potential database errors.\n  - Provide methods for loading and saving game progress.\n\n### Class `ConfigManager`\n- Responsible for managing all configuration settings of the game.\n- **Key Responsibilities**:\n  - Implement a system to store and retrieve game settings (e.g., difficulty level, sound settings, control preferences).\n  - Provide functionality to save settings to a file and load them at game startup.\n  - Enable in-game customization of settings through a settings menu.\n  - Adjust game mechanics and UI elements based on the user's configuration.\n  - Offer an API for other game components to access and modify settings.\n\n## Developer Instructions\n- Follow the coding style guidelines defined in the project documentation.\n- Regularly test your code and ensure it integrates smoothly with other components.\n- Document your code thoroughly.\n\n## Pre-commit\n\nPre-commit is a tool that helps maintain code quality by checking your code before each commit. To set up pre-commit in your project, follow these steps:\n\n1. Install pre-commit. You can do this using pip:\n\n```bash\npip install pre-commit\n```\n2. Add a .pre-commit-config.yaml file to the root directory of your project. You can configure various hooks in this file.\n\n3. Install the pre-commit hooks:\n```bash\npre-commit install\n```\n\n4. If you want to manually run all pre-commit hooks on all files, you can use the following command:\n```bash\npre-commit run --all-files\n```\n\n## Continuous Integration\nThis project uses Continuous Integration (CI) to automatically build and test the code in this repository. Whenever a commit is made, the CI process triggers and runs the build and test processes.\n\nTo see the results of the CI process, check the Actions tab in this github repository.\n\n## Docker\n\nThis application can be run using Docker. The Dockerfile in the root directory defines the Docker image.\n\n### Dockerfile\n\nThe Dockerfile specifies how to build the Docker image for this application. Here's a brief overview of what it does:\n\n1. `FROM`: This line specifies the base image that we're building from. This is usually an image that includes an operating system and some basic software.\n\n2. `WORKDIR`: This line sets the working directory inside the Docker container. All subsequent commands (like `RUN`, `CMD`, `ENTRYPOINT`, `COPY`, and `ADD`) will be run from this directory.\n\n3. `COPY`: This line copies files from the host machine to the Docker image.\n\n4. `RUN`: This line runs a command in the Docker image. This is usually used to install software.\n\n5. `CMD`: This line provides defaults for an executing container. This can include an executable, or they can omit the executable, in which case you must specify an `ENTRYPOINT` instruction.\n\n### Building the Docker Image\n\nTo build the Docker image, navigate to the directory containing the Dockerfile and run the following command:\n\n```bash\ndocker build -t my-application .\n```\n\n### Running the Docker Container\n\nTo run the application in a Docker container, use the following command:\n\n```bash\ndocker run -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --name my_app --rm my-application\n```\n\n## License and Credits\n- This project is licensed under [MIT License](https://opensource.org/licenses/MIT).\n- Developed by the Pac-Man Qt Project Team.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoders-school%2Fpacman-qt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoders-school%2Fpacman-qt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoders-school%2Fpacman-qt/lists"}