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 — 100 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.2.tar.gz (44.9 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.2-py3-none-any.whl (30.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: triple_triad_ff8-0.1.2.tar.gz
  • Upload date:
  • Size: 44.9 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.2.tar.gz
Algorithm Hash digest
SHA256 99394b5782d98a7168b5f5aadeeb8412bc2f2c27231f8c632e3e458677416200
MD5 e1924659bdf42de6c9935a9a62738df3
BLAKE2b-256 e2560d780785c81d065e92c76522aba4d9f90ee30c5d3c568230008c7948d158

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for triple_triad_ff8-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 45a2421c765e5208870ee4dc9563dc820cec1692ab7eaf0bbc54a41e73cd7b86
MD5 79451920501350aa7c5eabcef0dadcb6
BLAKE2b-256 299f1a47b8e0a4d778e6ee4778bb9b696a6333b75aa57bbdfaaa78106a890929

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