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

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.5
File Size Uploaded
triple_triad_ff8-0.1.5.tar.gz 284.7 kB Details

Built distribution (wheel)

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

Total release size: 353.1 kB

Release files / triple_triad_ff8-0.1.5.tar.gz

Download URL triple_triad_ff8-0.1.5.tar.gz
Size 284.7 kB
Tags Source
SHA-256 checksum
How to use checksums
8d9891e53b1a3b8eaf4da4e29e9dd84e835f8a780c6c4c05504f4db17986d93b
BLAKE2b-256 checksum
How to use checksums
f84a8f9090ca1056be1f1c68e103674cc562ad5738cbed6a88b1c1264117218f
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.5-py3-none-any.whl

Download URL triple_triad_ff8-0.1.5-py3-none-any.whl
Size 68.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3902e9c36e4f391baaf5c112a971aaff85204e1fab90a3296b35ff8554032153
BLAKE2b-256 checksum
How to use checksums
59f3a90e5501156a8df73ece23c1194a60a77a66a54c37ce57e4a965c899e630
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

0.1.6

2 release files

This release

0.1.5 This release

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