{"id":30190159,"url":"https://github.com/pin3dev/42_so_long","last_synced_at":"2025-08-12T19:36:28.658Z","repository":{"id":308910260,"uuid":"644125681","full_name":"pin3dev/42_So_Long","owner":"pin3dev","description":"2D tile-based game developed in C using MiniLibX. Features include map parsing from .ber files, flood fill path validation, sprite-based rendering, basic animations, and keyboard input handling. ","archived":false,"fork":false,"pushed_at":"2025-08-08T15:00:22.000Z","size":407,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-08T17:12:48.682Z","etag":null,"topics":["2d-game","2d-game-engine","2d-graphics","42","42-so-long","42school","common-core","flood-fill","so-long"],"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/pin3dev.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":"2023-05-22T21:52:44.000Z","updated_at":"2025-08-08T15:00:28.000Z","dependencies_parsed_at":"2025-08-08T17:12:51.295Z","dependency_job_id":"0710c40e-0c38-44f6-8d62-559b6146a800","html_url":"https://github.com/pin3dev/42_So_Long","commit_stats":null,"previous_names":["pin3dev/42_so_long"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/pin3dev/42_So_Long","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pin3dev%2F42_So_Long","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pin3dev%2F42_So_Long/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pin3dev%2F42_So_Long/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pin3dev%2F42_So_Long/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pin3dev","download_url":"https://codeload.github.com/pin3dev/42_So_Long/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pin3dev%2F42_So_Long/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270125599,"owners_count":24531757,"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","status":"online","status_checked_at":"2025-08-12T02:00:09.011Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["2d-game","2d-game-engine","2d-graphics","42","42-so-long","42school","common-core","flood-fill","so-long"],"created_at":"2025-08-12T19:36:23.441Z","updated_at":"2025-08-12T19:36:28.653Z","avatar_url":"https://github.com/pin3dev.png","language":"C","readme":"\u003ch1 align=\"center\"\u003eso_long\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/grade-100%2F100-green?style=for-the-badge\u0026logo=42\u0026labelColor=gray\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/pin3dev/42_Cursus/tree/main/so_long\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Game_Development-blue?style=for-the-badge\"/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Pathfinding-blue?style=for-the-badge\"/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Logic_Puzzles-blue?style=for-the-badge\"/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Pixel_Graphics-blue?style=for-the-badge\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/pin3dev/42_Cursus/blob/main/assets/So_Long/Rdm/solong_demo.gif\" width=\"600\" height=\"375\" /\u003e\n\u003c/p\u003e\n\n\u003ch3\u003e\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"#introduction\"\u003eIntroduction\u003c/a\u003e •\n    \u003ca href=\"#structure\"\u003eStructure\u003c/a\u003e •\n    \u003ca href=\"#docs\"\u003eDocs\u003c/a\u003e •\n    \u003ca href=\"#cloning\"\u003eCloning\u003c/a\u003e •\n    \u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e •\n    \u003ca href=\"#norms\"\u003eNorms\u003c/a\u003e •\n    \u003c!--\u003ca href=\"#tutorial\"\u003eTutorial\u003c/a\u003e •--\u003e\n    \u003ca href=\"#contributors\"\u003eContributors\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/h3\u003e\n\n## 🗣️ Introduction \u003ca id=\"introduction\"\u003e\u003c/a\u003e\n\nThe **so_long** project is a 2D game development challenge in which the player navigates a small map collecting collectibles and reaching an exit. The game integrates basic pathfinding logic, pixel graphics, and interactive gameplay using the **MiniLibX** graphical library.\n\nThis project aims to teach foundational game mechanics, graphics rendering, and algorithmic logic in a constrained environment, aligning with the [42 School](https://42.fr/en/homepage/) guidelines.\n\n## 🧬 Project Structure \u003ca id=\"structure\"\u003e\u003c/a\u003e\n\nThe **so_long** project has the following core components:\n\n- **Game Mechanics**: Player movement, collectible items, and an exit condition.\n- **Map Parsing**: The game loads a map from a `.ber` file, validating its format and structure.\n- **Graphics**: The game renders the map using MiniLibX, handling animations, sprites, and user inputs.\n- **Error Handling**: Proper error messages for invalid maps or gameplay interruptions.\n- **Pathfinding**: Ensures the player can always reach the exit.\n\nThe project is implemented with modular code for readability and maintainability.\n\n## 🗃️ Documentation \u003ca id=\"docs\"\u003e\u003c/a\u003e\n\nFor detailed documentation, including function breakdowns and implementation notes, visit the following link:  \n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/pin3dev/42_so_long/wiki\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/so_long_Docs-lightgreen?style=for-the-badge\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## 🫥 Cloning the Repository \u003ca id=\"cloning\"\u003e\u003c/a\u003e\n\nTo clone this repository and compile the project, use the following commands:\n\n```bash\ngit clone https://github.com/pin3dev/42_so_long.git\ncd 42_so_long/so_long\n```\n\nThis will download the project to your local machine. Once inside the `42_so_long` directory, you can compile and run the game using the provided `Makefile`.\n\n## 🕹️ Compilation and Usage \u003ca id=\"usage\"\u003e\u003c/a\u003e\n\n### Makefile\n\nA `Makefile` is provided to simplify the compilation process. The Makefile includes the following rules:\n\n- `all`: Compiles the project.\n- `clean`: Removes object files.\n- `fclean`: Removes object files and the executable.\n- `re`: Recompiles the entire project from scratch.\n\nTo compile the project, run:\n```bash\nmake\n```\nThis will generate the `so_long` executable.\n\n### Running the Game\n\nTo start the game, provide a valid `.ber` map file as an argument:\n```bash\n./so_long assets/maps/OK/m1.ber\n```\n\nThe player can move using **arrow keys**, collect all collectibles, and reach the exit to win the game.\n\n### Example Map File\n\nA valid `.ber` file looks like this:\n```\n1111111\n1P0C1E1\n1000001\n1111111\n```\nLegend:\n- `1`: Wall\n- `0`: Empty space\n- `P`: Player\n- `C`: Collectible\n- `E`: Exit\n\n## ⚠️ Norms and Guidelines Disclaimer \u003ca id=\"norms\"\u003e\u003c/a\u003e\n\nThis project adheres strictly to the [**42 Norm**](https://github.com/pin3dev/42_Cursus/blob/main/norme.en.pdf) coding guidelines. These guidelines enforce specific coding styles and practices, shaping the implementation of the project accordingly.\n\n\u003c!--## 🔬 Tutorial \u003ca id=\"tutorial\"\u003e\u003c/a\u003e\n\nA step-by-step tutorial on completing the **so_long** project is available here:\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/pin3dev\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/so_long_Tutorial-lightgreen?style=for-the-badge\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e --\u003e\n\n## 👥 Contributors \u003ca id=\"contributors\"\u003e\u003c/a\u003e\n\n\u003ca href=\"https://github.com/pin3dev\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Ivany_Pinheiro-%40pin3dev-purple?style=for-the-badge\"/\u003e  \n\u003c/a\u003e\n\u003cbr\u003e\n\u003ca href=\"https://github.com/clima-fr\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Clara_Franco-%40clima--fr-purple?style=for-the-badge\"/\u003e  \n\u003c/a\u003e\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpin3dev%2F42_so_long","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpin3dev%2F42_so_long","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpin3dev%2F42_so_long/lists"}