Skip to content

AgustinGomila/Tarati

Repository files navigation

Tarati — Un Juego de Tablero por George Spencer-Brown

Logo

Kotlin Compose Room Android en

Una implementación nativa en Android del juego de estrategia Tarati

Google Play · Reglas · Tecnologías

El Juego

Tarati es un juego de mesa estratégico creado por George Spencer-Brown, autor de Laws of Form, que aplica su cálculo de distinciones al juego. La estructura es minimalista pero las consecuencias son profundas: los jugadores mueven piezas, voltean piezas enemigas y promueven las propias a través de un tablero de 23 vértices organizados en zonas concéntricas.

Board

Origen

Diseñado como aplicación práctica del cálculo de distinciones de Brown, Tarati encarna los principios matemáticos y filosóficos de Laws of Form — obra fundamental que explora la lógica a través del concepto de distinción.


Reglas

Objetivo

Capturar la última pieza enemiga en un solo movimiento (Mit) o dejar al oponente sin movimientos legales (Stalemit).

Estructura del Tablero

El tablero tiene 23 vértices distribuidos en cuatro zonas (no completamente disjuntas):

  • Centro absoluto: 1 vértice (A1)
  • Puente: 6 vértices que conectan el centro con la circunferencia
  • Circunferencia: 12 vértices que forman el anillo exterior
  • Bases domésticas: 4 vértices por jugador (8 en total); 2 son vértices D exclusivos y 2 son vértices C compartidos con la circunferencia

Cada jugador comienza con 4 Cobs colocados en su base doméstica.

Piezas

Cob — la pieza básica. Se mueve solo hacia adelante, por aristas en dirección a la base enemiga. No puede retroceder salvo que sea promovida.

Rok — un Cob promovido. Se mueve libremente en cualquier dirección a lo largo de cualquier arista. Un Cob se convierte en Rok al entrar en cualquier vértice de la base doméstica del oponente. Un Rok capturado conserva su estado de Rok: cambia de color, pero sigue siendo Rok.

Movimiento

Una pieza se mueve a un vértice adyacente libre. Al llegar, voltea todas las piezas enemigas elegibles conectadas directamente a ese vértice, convirtiéndolas al color del jugador activo.

Excepción: un Cob en su propia base doméstica puede moverse en cualquier dirección, pero solo si ese movimiento produce al menos una captura.

Regla de Pre-adyacencia

Solo se puede capturar una pieza enemiga si la pieza que se mueve no era adyacente a ella antes del movimiento. Es decir, únicamente las piezas enemigas que son nuevas vecinas del destino — y no lo eran del origen — quedan volteadas. Las piezas que ya eran adyacentes al origen quedan protegidas.

Esta es la regla táctica más importante del juego: hay que aproximarse desde afuera.

Piezas Muertas y Promoción Forzada

Un Cob puede quedar muerto — atrapado sin posibilidad de avanzar. La patente define dos situaciones en las que esto ocurre:

Muerte primaria. Un Cob que es capturado y volteado sobre uno de los dos vértices más exteriores de la base enemiga queda muerto de inmediato. Desde esos vértices no existe ningún camino hacia adelante: la pieza no puede moverse por sus propios medios.

Muerte por cadena. Un Cob también queda muerto si todos sus vértices adyacentes hacia adelante están ocupados por Cobs muertos del mismo color. Esta condición se propaga: una pieza puede morir porque la bloquea otra que murió por la misma razón, y así sucesivamente. La cadena siempre termina en un vértice de muerte primaria.

Qué no produce muerte. Una pieza no queda muerta por estar bloqueada por una pieza enemiga, por un Cob vivo del mismo color, ni por un Rok de cualquier color — porque cualquiera de esos bloqueadores puede moverse y liberar el camino. Solo los Cobs muertos del mismo color bloquean de forma permanente. Los Roks nunca están muertos.

Cuándo se puede promover una pieza muerta. La promoción de un Cob muerto a Rok no es automática. Solo ocurre cuando el jugador no puede realizar ningún movimiento normal. En ese caso, puede promover uno de sus Cobs muertos — pero únicamente si el Rok resultante tendría al menos un movimiento disponible. Si la promoción no resuelve la inmovilidad, esa pieza no puede promoverse.

Caso especial — última pieza. Si un Cob es la única pieza del jugador que queda en el tablero, debe promoverse a Rok de forma obligatoria, sin importar en qué vértice se encuentre y aunque el jugador todavía pueda mover otras piezas.

Condiciones de Fin de Partida

La partida termina cuando:

  • Mit: un jugador captura todas las piezas enemigas en un solo movimiento.
  • Stalemit: el jugador activo no tiene movimientos normales ni promociones forzadas disponibles. Gana el oponente.
  • Triple repetición: la misma posición de tablero aparece tres veces con el mismo jugador a mover. Pierde el jugador que provocó la tercera repetición.
  • Regla de 50 movimientos: si transcurren 100 semimovimientos consecutivos sin un movimiento de Cob ni ninguna promoción, el jugador activo puede reclamar tablas. Un jugador con un movimiento ganador disponible no puede reclamar.

Logros

¡Tarati tiene logros!

Empezando

Board

  • Bienvenido a Tarati — Termina el tutorial
  • Primera captura — Voltea tu primera pieza
  • Primera promoción — Sube un Cob a Rok
  • Primera victoria — Gana a la IA

El farmeo

Board

  • 10 partidas jugadas — Lo que dice
  • El volteador — 50 capturas total
  • Maestro Rok — 25 promociones en todas las partidas
  • Imparable — 10 victorias vs IA
  • Campeón — Gana en dificultad máxima

Y hay logros secretos escondidos. Descúbrelos tú mismo.


Capturas de Pantalla

Interfaz intuitiva construida con Jetpack Compose.


Descargar

Disponible en Google Play

Descargar APK

Requisitos:

  • Android 8.0 (API 26) o superior
  • 5–10 MB de espacio libre
  • Pantalla táctil

Tecnologías

Componente Librería / Versión
Lenguaje Kotlin 2.3.20
UI Jetpack Compose 1.13.0, Material Design 3
Inyección de dependencias Koin 4.2.0
Almacenamiento local Room 2.8.4, DataStore 1.2.1
Tests JUnit 4.13.2, MockK 1.14.9, Coroutines Test 1.10.2
Concurrencia Kotlin Coroutines 1.10.2
Arquitectura MVVM
IA Minimax con poda Alpha-Beta, profundización iterativa, tabla de transposición

Estructura del Proyecto

core/
├── data/
│   ├── database/          # Base de datos Room y DAOs
│   └── repositories/      # Implementaciones de repositorios
├── domain/
│   ├── ai/                # Motor, evaluador, estrategia minimax
│   ├── game/              # Tablero, estado de juego, lógica de movimientos
│   ├── repository/        # Interfaces de repositorio
│   └── tutorial/          # Definición de pasos del tutorial
└── utils/
    ├── helpers/            # Auxiliares de fecha/hora
    └── logging/            # Sistema de logging

features/
├── game/                  # Pantalla de juego principal y ViewModel
├── detail/                # Pantalla de detalle de partida
├── library/               # Biblioteca de partidas guardadas
├── settings/              # Pantalla de configuración
└── splash/                # Pantalla de inicio

services/
├── ai/                    # Servicio de IA y ViewModel
├── clipboard/             # Exportación de partidas por portapapeles
├── dialogs/               # Sistema de diálogos
├── localization/          # Gestión de idiomas
└── sound/                 # Sistema de sonido

ui/
├── components/
│   ├── board/             # Renderizado del tablero, highlights, animaciones
│   ├── editor/            # Editor de tablero
│   ├── navigation/        # Grafo de navegación
│   ├── sidebar/           # Panel lateral
│   ├── topbar/            # Barra superior
│   ├── turnIndicator/     # Indicador de turno
│   └── tutorial/          # Componentes de UI del tutorial
└── theme/                 # Sistema de diseño y temas

Más de 400 tests unitarios y previews de Compose.


Créditos

  • Concepto original: George Spencer-Brown — Laws of Form
  • Referencia de implementación React: Adam Blvck
  • Efectos de sonido: MattRuthSound

Para Profundizar

Tarati está fundamentado en Laws of Form de George Spencer-Brown, que introduce un cálculo matemáticamente completo construido íntegramente sobre el concepto de distinción.


"Enseñar el orgullo en el conocimiento es poner una barrera efectiva contra cualquier avance sobre lo que ya se conoce." — George Spencer-Brown


Este proyecto es una implementación educativa y no tiene fines comerciales. Todos los derechos del concepto original pertenecen a George Spencer-Brown.

About

Tarati: A boardgame designed by George Spencer-Brown, the Author of Laws of Form

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages