Juego de cartas por turnos con baraja española (40 cartas), implementado en Python.
- Motor de juego desacoplado de la interfaz.
- Interfaz de consola totalmente funcional.
- Interfaz GUI básica con
tkinter. - Tests de reglas críticas con
pytest.
quinquis/models.py: modelos y constantes de cartas.quinquis/engine.py: reglas, estado y lógica del juego (sinprint/input).quinquis/console_ui.py: capa de consola.quinquis/gui.py: capa GUI.main.py: punto de entrada.tests/test_engine.py: tests del motor.
- Se usan 40 cartas:
Espadas,Bastos,Copas,Oros. - Empiezan 4 cartas por jugador.
- Objetivo: quedarse sin cartas antes que el rival.
- Cada baza:
- Sale quien tiene el turno.
- El otro responde.
- Al responder:
- Si tienes el palo de salida, debes jugarlo.
- Si no lo tienes, robas hasta encontrarlo.
- Si el mazo termina sin ese palo, tomas la carta que salió.
- Si ambos juegan el mismo palo, gana la carta más fuerte.
- Si los palos son distintos, mantiene la salida quien abrió la baza.
Espadas/Bastos:As < 2 < 3 < 4 < 5 < 6 < 7 < Sota < Caballo < ReyCopas/Oros:Rey < Caballo < Sota < 7 < 6 < 5 < 4 < 3 < 2 < As
- Si puede ganar, juega la carta más baja que todavía gana.
- Si no puede ganar, descarta la carta más baja de ese palo.
- En modo
abuelo, además simula la baza actual y la siguiente para elegir una respuesta favorable al corto plazo y mantener ventaja de mano/turno.
Requisitos: Python 3.10+.
python main.py --ui consolepython main.py --ui gui --mode normalpython main.py --ui gui_cards --mode normal--mode acepta: facil, normal, abuelo.
--ui acepta: ask, console, gui, gui_cards.
Sin parámetros (python main.py), el programa pregunta al inicio qué interfaz usar.
La interfaz gui_cards usa la baraja SVG ubicada en:
assets/spanish-playing-cards-svg
Renderizado en runtime:
resvg_pypara convertir SVG a PNGPillowpara mostrar imágenes en Tkinter
Instalación recomendada:
python -m pip install --user resvg_py pillowpytest -q