2049 - a roguelike that fuses 2048 and Minesweeper
0
stars
19
commits
Python
primary language
Sep 16, 2026
updated
uv run game-web)
A tiny roguelike that fuses 2048 and Minesweeper. You are the tile: every move slides the whole dungeon with 2048 rules while hidden mines - Minesweeper style - wait in the dark. Descend 8 depths and escape.
uv run game
No dependencies beyond Python itself; everything is managed by uv.
uv run game-web
Serves web/ and opens your browser. The same core.py runs in the
browser via Pyodide (Python → WebAssembly, loaded
from CDN on first visit); the frontend is plain HTML/CSS/JS with the same
2048 palette. Works on touch screens too - just swipe.
!, safe cells show a clue number =
how many mines touch them. Stepping on any mine explodes it for
1 + depth damage.>> to descend. Each depth adds
mines. Run out of moves and the walls crush you. Die and your score is
all that remains. Reach depth 8 and climb out to win.| Key | Action |
|---|---|
arrows / h j k l | slide up / down / left / right |
r | new run |
q | quit |
Best score is saved locally - localStorage in the browser,
~/.config/2049/best.json in the terminal.
src/game/
├── core.py # game state, 2048 slide, mines, probing, descent
├── ui.py # ANSI board renderer (no deps)
├── input.py # raw keypress input (POSIX + Windows)
└── main.py # main loop
19 commits
Python
80.5%
HTML
19.5%
2049 - a roguelike that fuses 2048 and Minesweeper
0
stars
19
commits
Python
primary language
Sep 16, 2026
updated
uv run game-web)
A tiny roguelike that fuses 2048 and Minesweeper. You are the tile: every move slides the whole dungeon with 2048 rules while hidden mines - Minesweeper style - wait in the dark. Descend 8 depths and escape.
uv run game
No dependencies beyond Python itself; everything is managed by uv.
uv run game-web
Serves web/ and opens your browser. The same core.py runs in the
browser via Pyodide (Python → WebAssembly, loaded
from CDN on first visit); the frontend is plain HTML/CSS/JS with the same
2048 palette. Works on touch screens too - just swipe.
!, safe cells show a clue number =
how many mines touch them. Stepping on any mine explodes it for
1 + depth damage.>> to descend. Each depth adds
mines. Run out of moves and the walls crush you. Die and your score is
all that remains. Reach depth 8 and climb out to win.| Key | Action |
|---|---|
arrows / h j k l | slide up / down / left / right |
r | new run |
q | quit |
Best score is saved locally - localStorage in the browser,
~/.config/2049/best.json in the terminal.
src/game/
├── core.py # game state, 2048 slide, mines, probing, descent
├── ui.py # ANSI board renderer (no deps)
├── input.py # raw keypress input (POSIX + Windows)
└── main.py # main loop
19 commits
Python
80.5%
HTML
19.5%