Skip to content

Latest commit

 

History

History
132 lines (103 loc) · 5.76 KB

File metadata and controls

132 lines (103 loc) · 5.76 KB

Reglas del juego implementadas

Referencia de las reglas oficiales de Exploding Kittens (edición base) y su estado de implementación en este proyecto.

Las reglas completas del juego original están en el manual oficial de explodingkittens.com.


Configuración inicial

Regla Implementada Archivo
2–5 jugadores GameConstants, DeckBuilder
Cada jugador recibe 7 cartas + 1 Defuse DeckBuilder.build()
Se insertan N-1 Exploding Kittens en el mazo DeckBuilder.build()
Los Defuse extra van al mazo barajado DeckBuilder.build()
El mazo se baraja antes de repartir DeckBuilder (Fisher-Yates)

Turno normal

Regla Implementada Archivo
Jugar 0 o más cartas, luego robar TurnModel, TurnPhase
Robar siempre termina el turno ActionProcessor._processDrawCard
Rotación de turno en sentido horario TurnRules.nextPlayerId

Cartas

Exploding Kitten

Regla Implementada
Al robarla sin Defuse → eliminado
Al robarla con Defuse → usar Defuse obligatoriamente
No se puede jugar desde la mano ✅ (isPlayable = false)

Defuse

Regla Implementada
Cancela la explosión
El jugador reinserta la bomba en cualquier posición del mazo
No se puede jugar proactivamente ✅ (isPlayable = false)

Nope

Regla Implementada
Cancela cualquier carta excepto Exploding Kitten y Defuse
Cualquier jugador puede jugar Nope durante la ventana de tiempo
Nope-a-Nope reactiva la acción (cadena impar/par)
Se puede encadenar indefinidamente
Ventana de tiempo configurable (GameConstants.nopeWindowMs)

Attack

Regla Implementada
Termina el turno sin robar
El siguiente jugador debe jugar 2 turnos ✅ (actionsLeft = 2)
Si el atacado también juega Attack, el siguiente juega 4 turnos ✅ (chain acumulativo)

Skip

Regla Implementada
Termina el turno sin robar
Si tienes 2 turnos por Attack, Skip solo cancela uno

Favor

Regla Implementada
Elige un jugador → ese jugador te da una carta (él elige cuál) ✅ El objetivo elige de verdad vía CardChoiceOverlay (TurnPhase.awaitingCardChoice + ChooseCardAction). Reportado por el usuario que antes el motor robaba una carta al azar sin preguntarle nada al objetivo (ActionProcessor._stealRandomCard) — la tabla ya decía "el objetivo elige" pero no era cierto hasta este fix
Requiere objetivo vivo distinto del jugador activo
Si el objetivo no tiene cartas, no ocurre nada

Shuffle

Regla Implementada
Baraja el mazo de robo
El orden del mazo se destruye (incluida la bomba)

See the Future

Regla Implementada
Mira las 3 cartas de arriba del mazo (privado)
No cambia el orden del mazo
El jugador activo es el único que ve las cartas GameState.seeTheFutureCards sigue viajando compartido en la red (no hay canal privado por jugador todavía), pero GameTableView ahora solo muestra el overlay si es el turno del jugador local — cerrado el hallazgo de Fase 5 en docs/VERIFICATION_LOG.md

Cartas Gato (Tacocat, Rainbow Ralphing Cat, Bearded Dragon, Cattermelon, Hairy Potato Cat)

Regla Implementada
Sin efecto jugadas solas ✅ (isCatCard sin handler específico)
Par del mismo tipo → robar carta aleatoria de otro jugador
Trío del mismo tipo → robar una carta concreta de la mano del objetivo ✅ El actor elige a ciegas por posición (CardChoiceOverlay con faceUp: false), no viendo el contenido real de la mano rival — nunca fue viable la redacción original "ver la mano y elegir" dado que el actor no puede ver esa mano; se resolvió con el mismo mecanismo que Favor (TurnPhase.awaitingCardChoice + ChooseCardAction, elige el actor en vez del objetivo)
Par/trío se pueden nopear

Eliminación y victoria

Regla Implementada
Jugador eliminado descarta toda su mano ✅ (PlayerStatus.eliminated)
Último jugador vivo gana ✅ (WinCondition.check)
GameResult registra orden de eliminación y total de turnos

Reglas pendientes de implementar

Fases 1 a 5 están completas (ver ROADMAP.md); lo que queda pendiente de reglas es exclusivamente Fase 6 (expansiones).

Regla Fase Notas
Ver 5 cartas (See the Future de Imploding Kittens) Fase 6 (expansión)
Barking Kittens (cooperativo 2 jugadores) Fase 6 (expansión)
Imploding Kitten (6 jugadores) Fase 6 (expansión)
Streaking Kittens Fase 6 (expansión)

Diferencias con el juego físico

Aspecto Juego físico Esta implementación
Favor — quién elige la carta El objetivo elige El objetivo elige, vía CardChoiceOverlay (FavorTargetOverlay es del que pide el Favor, para elegir a quién pedírselo — cosas distintas)
Ver el futuro — privacidad El jugador lo ve en secreto Filtrado por turno en el cliente; el dato en sí sigue viajando compartido en GameState (sin canal privado por jugador todavía)
Inserción de bomba El jugador físicamente la mete El jugador elige posición en InsertBombOverlay
Reconocimiento de cartas Visual directo Requiere trust en modo red (sin verificación criptográfica en MVP)