Skip to main content

arcade

Eighteen terminal games, and a friend to beat.

One command. No setup. Runs on Linux, macOS, WSL, and Windows.

Python 3.8+ 18 games LAN multiplayer MIT


Pac-Man Tetris

The hardest part of vibe coding is the waiting. Your agents are off doing their thing, you have nothing to do, and the office laptop is locked down. So run a game in the terminal you already have open, and pull in a coworker over the LAN.


Quick start

pip install arcade-games
arcade                 # open the menu
arcade snake           # jump straight into a game
arcade mp              # play a friend over the network
arcade list            # every game, with your high scores

That is the whole story. The games use Python's built-in curses; on Windows the install adds windows-curses for you. Nothing else to install.

play still works too, as an alias for arcade, kept around for anyone already used to it.


Play with a friend

Three games go two-player over a local network, one hosts and the other joins by IP. No account, no server, no configuration.

Networked Pong, host and guest views side by side
The same Pong rally, from each player's screen
arcade mp            # or press M in the menu

Pick Reversi, Connect Four, or Pong, then Host or Join. The host reads out an address like 192.168.1.5 : 8765; the other player types it in. Reversi and Connect Four are turn-based and rock-solid at any latency; Pong is real-time and best on the same Wi-Fi.


The games

Arcade

Snake
Snake  ·  arcade snake
Eat, grow, and don't bite your tail.
Pac-Man
Pac-Man  ·  arcade pacman
Clear the dots, dodge four hunting ghosts.
Dino Runner
Dino Runner  ·  arcade dino
Jump the cacti, run forever.
Breakout
Breakout  ·  arcade breakout
Bounce the ball, break every brick.
Space Shooter
Space Shooter  ·  arcade shooter
Waves, power-ups, and bosses.
Flappy Bird
Flappy Bird  ·  arcade flappy
Flap through the gaps.
Frogger
Frogger  ·  arcade frogger
Cross the traffic and the river to the home bays.

Puzzle

Tetris
Tetris  ·  arcade tetris
Stack, clear lines, level up. Ghost piece included.
2048
2048  ·  arcade 2048
Slide and merge to the big tile.
Minesweeper
Minesweeper  ·  arcade mines
Read the numbers, flag the mines. Three sizes.
Sokoban
Sokoban  ·  arcade sokoban
Push each box onto a target. Undo freely.

Head to head (vs AI or a friend)

Pong
Pong  ·  arcade pong
Reversi
Reversi  ·  arcade reversi
Connect Four
Connect Four  ·  arcade connect4

Word & casino

Wordplay  ·  arcade wordplay (also word, wp)
One 5-letter word a day. 6 guesses, a keyboard that remembers, and a streak to protect.
Blackjack  ·  arcade blackjack (also bj, 21)
6-deck shoe, dealer stands on soft 17, blackjack pays 3:2, split up to 3 times.
Roulette  ·  arcade roulette
The European wheel (single zero, 2.70% house edge). Straight up, splits, dozens, and every even-money bet.
Slots  ·  arcade slots (also slot)
3 reels, a real paytable, and a computed payout rate in the 92-96% band.

The chips are not real money. Blackjack, Roulette, and Slots share a virtual, in-app points balance (starts at 1000, with a small once-a-day top-up if you ever hit zero). There is no purchase, no deposit, no cash-out, and no way to turn a chip into anything of real-world value, anywhere in this codebase. It is a toy, on purpose.


Controls

 WASD / Arrows   Move, aim, navigate
 Space           Jump · Hard drop · Launch · Fire · Serve · Place · Reveal
 W               Rotate (Tetris)
 F               Flag a cell (Minesweeper)
 U               Undo (Sokoban)
 R               Reset level (Sokoban) · Retry after game over
 P               Pause
 ? / H           In-game controls
 M               Multiplayer (menu) · T  Theme (menu)
 ESC / Q         Quit (progress is saved)

Space Shooter, Pong, and Minesweeper ask for a difficulty. Snake, Dino, and Flappy speed up as you go; Tetris levels up. Quit any game and it resumes next time you open it.

Wordplay and the casino games are turn-based and use their own keys instead of WASD: type letters and press Enter in Wordplay; H)it, S)tand, D)ouble, and X)split in Blackjack; arrows to pick a bet and F to spin in Roulette; Left/ Right to set your bet and Space to pull the lever in Slots. Press ? in any game for the full list.


Turn-based mode

For playing a move at a time in a chat or an editor, arcade cli runs the games as plain text, no full-screen UI and no curses required.

Connect Four in the CLI mode
arcade cli start connect4    # also: snake, 2048, minesweeper
arcade 4                     # drop a disc in column 4
arcade show                  # reprint the board
arcade quit                  # end the game

Built honestly

A small shared core plus one file per game, with a dependency-free test suite you can run yourself:

arcade_games/
├── game.py         # the Game base class every game subclasses
├── config.py        # save files, high scores, config migration
├── currency.py        # the shared virtual chip balance (casino games only)
├── menu.py               # the curses main menu
├── cli.py                 # the plain-text `arcade cli` front-end
├── net.py                   # LAN multiplayer
├── render.py, theme.py, terminal.py    # drawing, color themes, terminal launch
└── games/
    ├── snake.py, tetris.py, g2048.py, dino.py, breakout.py,
    │   shooter.py, pong.py, flappy.py, minesweeper.py, pacman.py,
    │   sokoban.py, reversi.py, frogger.py, connect4.py,
    │   wordplay.py, blackjack.py, roulette.py, slots.py
python tests/test_games.py     # a headless fuzz, save/load, network, and a
                               # regression test behind every fix

Every GIF in this README is rendered straight from the game code, so what you see is what you get.


Contributing

Pull requests welcome. A new game is a subclass of Game in its own file under arcade_games/games/, added to _GAMES in arcade_games/registry.py; a new level or theme is a few lines. Please run the tests first.

License

MIT

Metadata

Release files for arcade-games 3.1.0

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

Source distribution (sdist)

Source distribution for arcade-games 3.1.0
File Size Uploaded
arcade_games-3.1.0.tar.gz 214.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for arcade-games 3.1.0
File Interpreter ABI Platform
arcade_games-3.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 430.8 kB

Release files / arcade_games-3.1.0.tar.gz

Download URL arcade_games-3.1.0.tar.gz
Size 214.0 kB
Tags Source
SHA-256 checksum
How to use checksums
1fd3a707090380b2f56ffd9cd0b8e883217125f707fa75974c6fd03f605ecd52
BLAKE2b-256 checksum
How to use checksums
f40999295a5487c6ae7faf9363aadb6df63ab085eec90905165a9b29637f0bb9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / arcade_games-3.1.0-py3-none-any.whl

Download URL arcade_games-3.1.0-py3-none-any.whl
Size 216.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9bb39e2e198d6d71cce6a7c49a87e43ae259f073981d89bd3091022cb06b6644
BLAKE2b-256 checksum
How to use checksums
6eb2a287fd51c0ec952da780379c0434f5573b8447e8544aec3c6f33c867b998
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release history Release notifications | RSS feed

This release

3.1.0 This release

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