African games
# Village Nights
A small anthology of three Pygame mini-games, loosely inspired by communal West African traditions of drumming, strategy play, and weaving. One old village Storyteller — narrated live by a GenAI model — spins a single ongoing tale across whichever game you're playing, growing bolder when you're doing well and stumbling gently (never cruelly) when you slip.
## The three games
Pressing 1, 2, or 3 from the title screen doesn't just change the difficulty — it's a genuinely different game each time.
| Level | Game | Type |
| ---------- | ------------------------- | -------------------------------------------------------------------------------------------- |
| 1 (Easy) | **Rhythm of the Village** | Drum-and-beat rhythm game — hit SPACE in time with falling notes |
| 2 (Medium) | **Oware Trade Routes** | A simplified single-player _Oware_ (Mancala-family strategy game), played against a small AI |
| 3 (Hard) | **Kente Loom** | A Simon-Says-style memory game themed around Kente cloth weaving |
## Quick start
```bash
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\Activate.ps1
pip install -r requirements.txt
python3 main.py
```
## Requirements
- Python 3.9+
- `pygame`
- `numpy`
`openai` is optional — only needed if you want the Storyteller's lines generated live. Without it, the game automatically falls back to a set of pre-written narrator lines and is fully playable either way.
## Controls
**Title / end screen**
- `1` / `2` / `3` — choose a level
- `SPACE` — replay the same level (once one has ended)
- `ESC` — quit
**Level 1 — Rhythm of the Village**
- `SPACE` — hit a beat, timed to when it reaches the drum
**Level 2 — Oware Trade Routes**
- Click a pit on your (bottom) row to sow its seeds
**Level 3 — Kente Loom**
- `A` / …