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 classical 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)

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

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.8
File Size Uploaded
triple_triad_ff8-0.1.8.tar.gz 4.5 MB Details

Built distribution (wheel)

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

Total release size: 4.6 MB

Release files / triple_triad_ff8-0.1.8.tar.gz

Download URL triple_triad_ff8-0.1.8.tar.gz
Size 4.5 MB
Tags Source
SHA-256 checksum
How to use checksums
8c4a0b9975fba20e1ccc2fbd649732ced3c163d5d02e73759a7677a3c7699da1
BLAKE2b-256 checksum
How to use checksums
6ba99a051a053beaf878d6a442a55ae4a04e785ab386e9eee6fbfd3e1fa693d8
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.8-py3-none-any.whl

Download URL triple_triad_ff8-0.1.8-py3-none-any.whl
Size 89.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f71b88f3bcfbb57e87da98a74956d700b698b321f24582addcb5d46618590f92
BLAKE2b-256 checksum
How to use checksums
1fe648b04714f80ea9bae200ffbefdfe72f2fe01959aa93dd1fe8199a1693e89
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

This release

0.1.8 This release

2 release files

0.1.7

2 release files

0.1.6

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