Skip to main content

A terminal arcade collection: 18 games to play while you wait, including Wordplay and a virtual-chip casino

Project description

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

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

arcade_games-3.1.0.tar.gz (214.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

arcade_games-3.1.0-py3-none-any.whl (216.7 kB view details)

Uploaded Python 3

File details

Details for the file arcade_games-3.1.0.tar.gz.

File metadata

  • Download URL: arcade_games-3.1.0.tar.gz
  • Upload date:
  • Size: 214.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for arcade_games-3.1.0.tar.gz
Algorithm Hash digest
SHA256 1fd3a707090380b2f56ffd9cd0b8e883217125f707fa75974c6fd03f605ecd52
MD5 0dbfabb23f44eeccd37e233d9908b709
BLAKE2b-256 f40999295a5487c6ae7faf9363aadb6df63ab085eec90905165a9b29637f0bb9

See more details on using hashes here.

File details

Details for the file arcade_games-3.1.0-py3-none-any.whl.

File metadata

  • Download URL: arcade_games-3.1.0-py3-none-any.whl
  • Upload date:
  • Size: 216.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for arcade_games-3.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9bb39e2e198d6d71cce6a7c49a87e43ae259f073981d89bd3091022cb06b6644
MD5 7e2752a433819ebffefd5bf8523f6596
BLAKE2b-256 6eb2a287fd51c0ec952da780379c0434f5573b8447e8544aec3c6f33c867b998

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