Metadata-Version: 2.4
Name: bandido-game
Version: 0.1.0
Summary: Representação do jogo de tabuleiro Bandido — core puro + visualização opcional com pygame
Project-URL: Homepage, https://github.com/JEdmario16/bandido-game
Project-URL: Documentation, https://github.com/JEdmario16/bandido-game/blob/master/docs/API.md
Project-URL: Issues, https://github.com/JEdmario16/bandido-game/issues
Project-URL: Releases, https://github.com/JEdmario16/bandido-game/releases
License: MIT
License-File: LICENSE
Keywords: bandido,board-game,grid,pygame
Requires-Python: >=3.14
Provides-Extra: dev
Requires-Dist: pygame-ce>=2.5.7; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Provides-Extra: pygame
Requires-Dist: pygame-ce>=2.5.7; extra == 'pygame'
Provides-Extra: ui
Requires-Dist: pygame-ce>=2.5.7; extra == 'ui'
Description-Content-Type: text/markdown

# Bandido Game

Representação em Python do jogo de tabuleiro [Bandido](https://helvetiq.com/) — core puro para algoritmos/treino e UI opcional com pygame.

**Versão:** 0.1.0  
**Documentação da API:** [docs/API.md](docs/API.md)

## Instalação

```bash
# core apenas (zero dependências)
pip install bandido-game

# com visualização
pip install 'bandido-game[ui]'
```

Desenvolvimento local:

```bash
uv sync --extra ui --extra dev
uv run pytest
uv build    # artefatos em dist/
```

## Quick start

```python
from bandido import GameState

game = GameState.new(seed=42)
game.place_starter((0, 0), 0)

print(len(game.deck), len(game.hand), game.open_paths)

for move in game.legal_moves():
    nxt = game.clone()
    nxt.place_from_hand(move.hand_index, move.origin, move.rotation)
    print(nxt.outcome, nxt.open_paths)
    break
```

## UI

```bash
uv run bandido-ui           # jogo: starter → mão 3 → deck
uv run bandido-ui --random  # mapa gerado puxando do Deck
```

Controles: `R` rotaciona · `Tab` troca carta · `D` descarta mão · `L` legal moves · `C` nova partida · setas pan.

## Arquitetura

```
bandido/
├── core/   # Cell, Card, Board, Deck, GameState — zero deps
└── ui/     # pygame (extra [ui])
```

| Peça | Papel |
|---|---|
| `Card` | Matriz 3×6 WALL/PATH, rotações 0/90/180/270 pré-carregadas |
| `Board` | Grid esparso + placement + frontier / legal_placements |
| `Deck` | 69 cartas (24×2 + 7×3); peek / draw / count |
| `GameState` | Partida: mão, outcome WIN/LOSS, `legal_moves()`, `clone()` |

Detalhes e assinaturas: **[docs/API.md](docs/API.md)**.

## Releases / PyPI

Cada [GitHub Release](https://github.com/JEdmario16/bandido-game/releases) dispara build + publish no PyPI e anexa wheel/sdist à release.

Setup (Trusted Publisher) e checklist de versão: **[docs/PUBLISH.md](docs/PUBLISH.md)**.
