{"id":19940811,"url":"https://github.com/sorgazb/ball_sort_puzzle","last_synced_at":"2026-06-15T09:31:30.416Z","repository":{"id":228837203,"uuid":"774395178","full_name":"sorgazb/Ball_Sort_Puzzle","owner":"sorgazb","description":"Game made in c++ (in development)","archived":false,"fork":false,"pushed_at":"2026-05-31T13:53:23.000Z","size":730,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-31T15:08:28.837Z","etag":null,"topics":["alegro","cpp","game","game-development"],"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/sorgazb.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}},"created_at":"2024-03-19T13:29:46.000Z","updated_at":"2026-05-31T13:53:27.000Z","dependencies_parsed_at":"2024-03-20T18:55:05.592Z","dependency_job_id":null,"html_url":"https://github.com/sorgazb/Ball_Sort_Puzzle","commit_stats":null,"previous_names":["sorgazb/ball_sort_puzzle"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sorgazb/Ball_Sort_Puzzle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sorgazb%2FBall_Sort_Puzzle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sorgazb%2FBall_Sort_Puzzle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sorgazb%2FBall_Sort_Puzzle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sorgazb%2FBall_Sort_Puzzle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sorgazb","download_url":"https://codeload.github.com/sorgazb/Ball_Sort_Puzzle/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sorgazb%2FBall_Sort_Puzzle/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34357281,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"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":["alegro","cpp","game","game-development"],"created_at":"2024-11-13T00:07:04.025Z","updated_at":"2026-06-15T09:31:30.385Z","avatar_url":"https://github.com/sorgazb.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ball Sort Puzzle\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/sorgazb/Ball_Sort_Puzzle/assets/150727714/f60a5cea-b49a-4551-bece-4300d0370884\" alt=\"Ball Sort Puzzle\" width=\"600\"/\u003e\n\u003c/p\u003e\n\n![C++](https://img.shields.io/badge/C++-TADs%20%26%20POO-00599c?style=for-the-badge\u0026logo=cplusplus)\u0026nbsp;![Allegro](https://img.shields.io/badge/Allegro-5-e8b800?style=for-the-badge)\u0026nbsp;![Pila](https://img.shields.io/badge/Estructura-Pila-orange?style=for-the-badge)\u0026nbsp;![Ficheros](https://img.shields.io/badge/Lectura-Ficheros%20.cnf-green?style=for-the-badge)\u0026nbsp;![Estado](https://img.shields.io/badge/Estado-En%20Desarrollo-red?style=for-the-badge)\n\n\u003e **Ball Sort Puzzle** es un videojuego de puzles desarrollado en C++ con la librería gráfica **Allegro 5**. El objetivo es ordenar las bolas de colores en los tubos usando estructuras de **Pila (TADPila)**, con niveles configurables desde ficheros `.cnf` e inicialización aleatoria o manual del tablero.\n\n---\n\n## 🎮 Descripción del Juego\n\n**Ball Sort Puzzle** recrea el clásico juego móvil de ordenar bolas por color. El jugador mueve la bola del tope de un tubo a otro, con la restricción de que solo puede depositar una bola sobre otra del mismo color o en un tubo vacío.\n\nLa lógica del juego se sustenta en los siguientes TADs:\n\n- **TADPila** — implementación de la pila que representa cada tubo del tablero.\n- **TADTablero** — gestiona el conjunto de tubos (pilas) que forman el nivel.\n- **TADJuego** — controla la lógica de partida, movimientos, puntuación y condición de victoria.\n- **entorno** — capa gráfica con **Allegro 5** que renderiza el tablero, las bolas y gestiona los eventos de ratón y teclado.\n- **Ficheros `.cnf`** — configuración de niveles: número de pilas, bolas por pila, puntuación inicial e inicialización aleatoria o desde fichero.\n\n---\n\n## 🏗️ Estructura del Proyecto\n\n```txt\nBall_Sort_Puzzle/\n├── BallSortPuzzleBase/\n│   ├── src/\n│   │   ├── BallSort.cpp         # Punto de entrada principal del juego\n│   │   ├── TADPila.h / .cpp     # TAD Pila: estructura de cada tubo\n│   │   ├── TADTablero.h / .cpp  # TAD Tablero: conjunto de tubos del nivel\n│   │   ├── TADJuego.h / .cpp    # TAD Juego: lógica, movimientos y puntuación\n│   │   ├── entorno.h / .cpp     # Renderizado gráfico con Allegro 5\n│   │   ├── prPila.h / .cpp      # Pruebas del TAD Pila\n│   │   └── prTablero.h / .cpp   # Pruebas del TAD Tablero\n│   ├── ballSort.cnf         # Nivel base (4 colores, 2 pilas vacías, 4 bolas/pila)\n│   ├── ballSort4.cnf        # Nivel 4 pilas\n│   ├── ballSort5.cnf        # Nivel 5 pilas\n│   ├── ballSort6.cnf        # Nivel 6 pilas\n│   ├── ballSort7.cnf        # Nivel 7 pilas\n│   ├── ballSort8.cnf        # Nivel 8 pilas\n│   ├── DroidSerif-Regular.ttf  # Fuente tipográfica usada por Allegro\n│   └── Debug/               # Binarios de depuración\n└── README.md                # Documentación del proyecto\n```\n\n---\n\n## 📄 Formato de los Ficheros de Configuración `.cnf`\n\nCada nivel se define mediante un fichero `.cnf` con el siguiente formato:\n\n```txt\n4        \u003c- Nº de pilas con bolas (= nº de colores diferentes)\n2        \u003c- Nº de pilas vacías (suma de pilas: entre 4 y 10)\n4        \u003c- Nº de bolas por cada pila (entre 3 y 6)\n0        \u003c- 0 = inicializar desde fichero | \u003c\u003e0 = inicialización aleatoria\n500      \u003c- Puntuación inicial de la partida\n1 4 3 4  \u003c- Contenido de cada pila (de abajo hacia arriba)\n...\n```\n\n---\n\n## ⚙️ Compilación y Ejecución\n\n\u003e ⚠️ Requiere tener instalada la librería **Allegro 5** en el sistema.\n\nClonar el repositorio:\n\n```bash\ngit clone https://github.com/sorgazb/Ball_Sort_Puzzle.git\ncd Ball_Sort_Puzzle/BallSortPuzzleBase/src\n```\n\nCompilar con g++ enlazando Allegro 5:\n\n```bash\ng++ -o BallSortPuzzle BallSort.cpp TADPila.cpp TADTablero.cpp TADJuego.cpp entorno.cpp \\\n    $(pkg-config --libs --cflags allegro-5 allegro_font-5 allegro_ttf-5 allegro_primitives-5)\n```\n\nEjecutar desde el directorio `BallSortPuzzleBase/` (para que encuentre los `.cnf` y la fuente):\n\n```bash\ncd ..\n./src/BallSortPuzzle\n```\n\n---\n\n## 🖥️ Ejemplo de Ejecución\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/sorgazb/Ball_Sort_Puzzle/assets/150727714/f60a5cea-b49a-4551-bece-4300d0370884\" alt=\"Ball Sort Puzzle en ejecución\" width=\"600\"/\u003e\n\u003c/p\u003e\n\n---\n\n## 🚀 Estado del Proyecto\n\nEste proyecto se encuentra actualmente **en desarrollo**. Funcionalidades previstas:\n\n- [ ] Sistema de niveles con selección desde menú.\n- [ ] Contador de movimientos y temporizador.\n- [ ] Guardado y carga de partida.\n- [ ] Mejoras visuales en las animaciones de las bolas.\n\n---\n\n## 🤝 Contribución\n\nHaz fork del repositorio.\n\nCrea una rama de trabajo:\n\n```bash\ngit checkout -b feature/mi-nueva-funcionalidad\n```\n\nRealiza tus cambios y haz commit.\n\nAbre un Pull Request describiendo tus mejoras.\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://upload.wikimedia.org/wikipedia/commons/c/cc/UNEX.png\" alt=\"Universidad de Extremadura\" height=\"80\"/\u003e\n  \u003cbr/\u003e\u003cbr/\u003e\n  \u003cstrong\u003eIntroducción a la Programación (IP)\u003c/strong\u003e · Grado en Ingeniería Informática · Universidad de Extremadura\n  \u003cbr/\u003e\n  Sergio Orgaz Bravo\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsorgazb%2Fball_sort_puzzle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsorgazb%2Fball_sort_puzzle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsorgazb%2Fball_sort_puzzle/lists"}