Skip to main content

Triple-triad

Triple Triad Logo

PyPI version Python versions Tests status

A terminal-based Python implementation of the classic Triple Triad card game from Final Fantasy VIII, complete card collection with the clasical rules


✨ Features

  • 110 cards from FFVIII
  • Chiptune music — Retro-style background music generated with NumPy and played through pygame-ce
  • Interactive deck builder — Browse, filter, and sort all cards before picking your hand

🎮 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-ce (for audio playback — optional, game runs silently without it)

Installation from PyPI

Using pip:

pip install triple-triad-ff8

Using uv:

uv pip install triple-triad-ff8

Installation from Source

git clone https://github.com/fernando24164/triple-triad-ff8.git
cd triple-triad-ff8
uv sync --locked

Run the Game

python -m triple_triad

or

uv run triple-triad

or if installed via pip:

triple-triad

Help and Tutorial

To view the game tutorial and learn how to play:

triple-triad --help

or

triple-triad -h

This displays a comprehensive guide covering game rules, card mechanics, and gameplay tips.

🎵 Audio

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

  • Generated with NumPy — no audio files required
  • Played through pygame-ce — if pygame-ce 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 .

🌐 Multiplayer (P2P)

Triple Triad supports direct peer-to-peer multiplayer over TCP.

How it works

  1. Host starts a lobby on a chosen port (default 64000).
  2. Guest connects using the host's IP address and port.
  3. The game synchronises rules, board elements, and decks before starting.

⚠️ NAT / Firewall Limitations

The current P2P implementation uses direct TCP connections

Scenario Works?
Both players on the same local network
Host has a public IP or port forwarding configured

Workarounds:

  • Port forwarding — Configure your router to forward the chosen port (default 64000) to the host machine.
  • LAN play — Both players on the same local network work without any configuration.
  • VPN — Use a VPN (e.g. Tailscale, ZeroTier, Hamachi) to create a virtual LAN.

🤝 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.

Release files for triple-triad-ff8 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for triple-triad-ff8 0.1.6
File Size Uploaded
triple_triad_ff8-0.1.6.tar.gz 287.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for triple-triad-ff8 0.1.6
File Interpreter ABI Platform
triple_triad_ff8-0.1.6-py3-none-any.whl Python 3 none any Details

Total release size: 358.8 kB

Release files / triple_triad_ff8-0.1.6.tar.gz

Download URL triple_triad_ff8-0.1.6.tar.gz
Size 287.4 kB
Tags Source
SHA-256 checksum
How to use checksums
e0b3ee258bb03ae24e1ee9c0d22a8e9645941d9a54b27be9eafe731b179944be
BLAKE2b-256 checksum
How to use checksums
62986790f8a9d2bc3987047af93f14c131a4195d872d21f3957e529cab191524
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.8

Release files / triple_triad_ff8-0.1.6-py3-none-any.whl

Download URL triple_triad_ff8-0.1.6-py3-none-any.whl
Size 71.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e35dfb1a756b2fd9b7b3bb9a0b27287b5df2fb7418c7124264ad9e573ad0638c
BLAKE2b-256 checksum
How to use checksums
47d2f7bcc33e60e23a876460f41499e99e97b90b23a537f5f17693e6113cb227
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.8

Release history Release notifications | RSS feed

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

This release

0.1.6 This release

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page