Hnefatafl

Implementación en Java puro (sin frameworks) del Hnefatafl, un juego de tablero vikingo asimétrico anterior al ajedrez: un bando defiende al rey en el centro de un tablero 11x11 y debe sacarlo a una esquina, mientras el otro bando, con más piezas pero más débiles, intenta atraparlo antes de que escape.

Se juega por consola, con soporte para partidas humano contra humano, humano contra máquina o máquina contra máquina.

Funcionalidades clave

Tecnologías usadas

Lenguaje: Java

Testing: JUnit 5

Otros: Colores ANSI por consola, sin frameworks ni dependencias externas.

Demo en vídeo

Decisiones técnicas

IA por simulación, no por fuerza bruta total: en vez de explorar todo el árbol de jugadas, la máquina simula sus movimientos candidatos y, para cada uno, la mejor respuesta del rival usando la misma heurística - suficiente para jugar de forma razonable sin necesitar poda alfa-beta ni mayor profundidad.

Copia profunda del tablero para simulación segura: la IA nunca modifica el tablero real; cada candidato se evalúa sobre una copia independiente.

Legalidad silenciosa frente a legalidad explicada: un movimiento se puede comprobar de dos formas - en silencio, usada por la IA al explorar decenas de movimientos sin imprimir nada por consola, o con un mensaje explicativo, usada solo cuando un humano introduce una jugada inválida.

Jugador como abstracción única: la partida trata a los jugadores humanos y a la IA exactamente igual a través de un mismo método de decisión, sin ramas de código distintas según el tipo de jugador.