Este proyecto de la asignatura Juegos Inteligentes es una implementación del juego Reversi en terminal, junto con agentes de Búsqueda adversarial. El sistema incluye un menú interactivo y selección de jugadores.
- MiniMax-in-reversi-game
Reversi es un juego de mesa para dos jugadores. El objetivo del juego es capturar tantas piezas en forma de disco como sea posible del oponente, atrapándolas entre las tuyas.
Los jugadores se turnan para colocar un disco (pieza del juego) en el tablero, con su color designado hacia arriba.
El objetivo de cada movimiento es atrapar uno o más discos de tu oponente entre dos de los tuyos. Cuando atrapas discos, puedes voltearlos y así invertir su color para que sean tuyos.
El juego termina cuando ambos jugadores han colocado todos sus discos en el tablero, o cuando no hay más movimientos legales posibles para ninguno de los jugadores. El jugador con más discos en el tablero es el ganador.
MiniMax-in-reversi-game es una implementación de este popular juego en Python.
El documento a continuación proporciona instrucciones paso a paso para instalar, configurar y ejecutar el repositorio. Cubre la configuración inicial, las dependencias necesarias y cómo lanzar tu primera partida usando la interfaz de línea de comandos. El objetivo es poner el sistema en funcionamiento tanto para el juego interactivo como para pruebas de algoritmos.
El proyecto MiniMax-in-reversi-game está implementado en Python.
La única dependencia externa no estándar es el módulo keyboard, utilizado para capturar entradas del teclado en la interfaz de consola.
| Requisito | Versión | Propósito |
|---|---|---|
| Python | 3.7+ | Lenguaje base |
| keyboard (PyPI) | 0.13.5 | Captura de entrada por consola |
Todos las dependencias estan en el archivo requirements.txt
keyboard==0.13.5
El repositorio está organizado en los siguientes componentes principales:
| Ruta | Descripción |
|---|---|
main.py |
Punto de entrada de la aplicación |
game/ |
Lógica central del juego y utilidades |
players/ |
Implementaciones de jugadores humanos e IA |
output/ |
Archivos CSV de métricas de rendimiento |
requirements.txt |
Dependencias de Python |
| Archivo/Directorio | Rol en el proceso de inicio |
|---|---|
main.py |
Lanza el juego mediante ReversiGame.app() |
game/reversiGame.py |
Lógica principal de orquestación del juego |
game/menu.py |
Sistema de menús para selección de jugador y modo |
game/control.py |
Manejo de entrada de teclado |
players/ |
Contiene todas las clases de estrategias de jugadores |
- Clonar repositorio
git clone https://github.com/MrDeybby/MiniMax-in-reversi-game
cd MiniMax-in-reversi-game- Instalar dependencias
pip install -r requirements.txtPara iniciar el juego, ejecuta:
python main.pyEsto abrirá el menú principal, desde el cual podrás iniciar una partida, elegir tipos de jugadores o salir.
Secuencia de inicio:
main.pycrea una instancia deReversiGamey llama a su métodoapp().- Se muestra el sistema de menús para seleccionar modo y jugadores.
- El bucle de juego es administrado por
ReversiGame.play().
Al iniciar, el menú permite:
- Empezar una nueva partida
- Seleccionar tipos de jugadores (Humano, Minimax, Greedy, Aleatorio, Peor Jugador)
- Salir de la aplicación
La navegación se realiza con W / S / ENTER.
La selección de jugador se maneja mediante el método estático select_player en ReversiGame, el cual muestra las opciones y crea una instancia de la clase seleccionada.
| Opción | Clase | Descripción |
|---|---|---|
| Humano | HumanPlayer |
Jugador humano mediante entrada de consola |
| Minimax | MinimaxPlayer |
IA con Minimax + poda alfa-beta |
| Greedy | GreedyPlayer |
IA con evaluación a una profundidad |
| Aleatorio | RandomPlayer |
IA que juega movimientos al azar |
| Peor Jugador | BadPlayer |
Variante débil del Minimax - Selecciona la peor jugada |
El sistema soporta dos modos principales:
- Modo por defecto con interfaz de consola, retrasos y mensajes al usuario.
- Administrado por
ReversiGame.play().
- Modo rápido y no interactivo, diseñado para benchmarking de IA.
- Administrado por
ReversiGame.play_for_algorithms().
Para mantener un historial claro y consistente, se utilizarán los siguientes prefijos en los mensajes de commit:
- add → para agregar un archivo.
- feat → para una nueva funcionalidad.
- fix → para correcciones de errores.
- docs → cambios en documentación.
- style → cambios de formato, espacios, comas, nada que altere lógica.
- refactor → cambios en el código que no agregan funcionalidad ni arreglan bugs.
- perf → optimizaciones de rendimiento.
- test → agregar o corregir pruebas.
- chore → tareas de mantenimiento (configuración, build, dependencias, etc.).
- ci → cambios en integración continua.
- build → cambios que afectan compilación, dependencias, herramientas.
Este proyecto se distribuye bajo la licencia MIT.