Skip to main content

A fan-made tribute to the Triple Triad card game from Final Fantasy VIII

Project description

Triple-triad

A terminal-based Python implementation of the classic Triple Triad card game from Final Fantasy VIII, complete with chiptune background music, smart AI opponents, and support for official rules like Same, Plus, and Open.


✨ Features

  • Authentic gameplay — 110 cards from FFVIII
  • 3 difficulty levels — Easy, Medium, and Hard CPU opponents with distinct AI strategies
  • Optional rules — Open, Same, Plus, and Random capture mechanics
  • Chiptune music — Retro-style background music generated with NumPy and played through Pygame
  • Interactive deck builder — Browse, filter, and sort all cards before picking your hand
  • Deck presets — Themed decks (Fire Power, Ice Wall, Thunder Rush, and more)
  • Terminal rendering — ANSI-colored board with card ownership indicators

🎮 How to Play

Triple Triad is a 2-player card game played on a 3×3 grid. Each player has 5 cards. Players take turns placing one card on the board. When a card is placed adjacent to an opponent's card, the touching sides are compared — if the attacker's value is higher, the defender's card is captured. The player with the most cards on the board at the end wins.

 ┌──────────────────┬──────────────────┬──────────────────┐
 │                  │                  │                  │
 │     [ 1 ]        │     [ 2 ]        │     [ 3 ]        │
 │                  │                  │                  │
 ├──────────────────┼──────────────────┼──────────────────┤
 │ ■Ifrit           │                  │                  │
 │      ▲ 9         │     [ 5 ]        │     [ 6 ]        │
 │ ◀ 5   Ice   8 ▶  │                  │                  │
 │      ▼ 6         │                  │                  │
 ├──────────────────┼──────────────────┼──────────────────┤
 │ □Shiva           │                  │                  │
 │      ▲ 6         │     [ 8 ]        │     [ 9 ]        │
 │ ◀ 6   Ice   9 ▶  │                  │                  │
 │      ▼ 7         │                  │                  │
 └──────────────────┴──────────────────┴──────────────────┘
  • = Your card
  • = CPU's card
  • Numbers inside empty cells = board position (1–9)

🚀 Getting Started

Prerequisites

  • Python 3.13+
  • NumPy (for audio synthesis)
  • Pygame (for audio playback — optional, game runs silently without it)

Installation

uv sync --locked

Run the Game

python -m triple_triad.game

or

uv run triple-triad

🎵 Audio

The game includes a built-in chiptune soundtrack synthesized entirely in software:

  • 5 channels: melody, harmony, pad, bass, and percussion
  • Generated with NumPy — no audio files required
  • Played through Pygame — if Pygame is unavailable, the game runs silently

🧩 Rules

Rule Description
Open CPU's hand is visible to the player
Same If 2+ adjacent cards share equal values, all are captured
Plus If 2+ adjacent cards share equal value sums, all are captured
Random Cards are dealt randomly from the full pool

🛠 Development

Install Dev Dependencies

uv sync --locked

Run Tests

uv run pytest

Lint

uv run ruff check .

🤝 Contributing

Contributions are welcome! Here's how to get started:

  1. Fork the repository
  2. Create a feature branchgit checkout -b feature/my-feature
  3. Make your changes — follow the existing code style
  4. Run testspytest
  5. Submit a pull request

Please open an issue first for major changes to discuss the approach.


Build

uv build
twine upload dist/*

📄 License

This project is for educational and personal use. Triple Triad is a minigame from Final Fantasy VIII, © Square Enix. All card names and game mechanics are the property of their respective owners.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

triple_triad_ff8-0.1.3.tar.gz (45.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

triple_triad_ff8-0.1.3-py3-none-any.whl (31.6 kB view details)

Uploaded Python 3

File details

Details for the file triple_triad_ff8-0.1.3.tar.gz.

File metadata

  • Download URL: triple_triad_ff8-0.1.3.tar.gz
  • Upload date:
  • Size: 45.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.8

File hashes

Hashes for triple_triad_ff8-0.1.3.tar.gz
Algorithm Hash digest
SHA256 2f325e4cd5b30b0b3e494b8e2d22520d63749949b100dc97fe39e020baa5e344
MD5 8aec29a0d03e401c3d700e86c11807e2
BLAKE2b-256 8efdafc987ff069d15b078b5d37e1544cf17bf3d1f561896c201036774d00d70

See more details on using hashes here.

File details

Details for the file triple_triad_ff8-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for triple_triad_ff8-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0abfc73916a04f0d1a41d059963b44c5ba901339a0ba0c2a2a7486d38cfe529a
MD5 50bbddf02169af3fc8343acf26ffec46
BLAKE2b-256 770b2f06dabc8bb972bd49b0185d77c1d3b9feb602f7a570761abc318a90bbfb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page