skorotkiewicz/2049

2049 - a roguelike that fuses 2048 and Minesweeper

0

stars

19

commits

Python

primary language

Sep 16, 2026

updated

sekor.eu.org/2049

README

2049 - Mines of Merge

deploy status MIT license python 3.13+ managed with uv

▶ Play in the browser

2049 - Mines of Merge in a terminal

💻 also runs in the browser (uv run game-web)

2049 - Mines of Merge web version

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.

Run

uv run game

No dependencies beyond Python itself; everything is managed by uv.

Run in the browser

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.

How it works

  • 2048 half - every move slides all tiles (you included). Slide into an equal tile to merge: your power doubles, score goes up. Big merges (32+) heal you.
  • Minesweeper half - mines are invisible and act as walls for tiles (tiles piling up against nothing is itself a clue). Standing next to cells probes them: mines get flagged with !, safe cells show a clue number = how many mines touch them. Stepping on any mine explodes it for 1 + depth damage.
  • Roguelike half - find the stairs >> 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.

Controls

KeyAction
arrows / h j k lslide up / down / left / right
rnew run
qquit

Best score is saved locally - localStorage in the browser, ~/.config/2049/best.json in the terminal.

Layout

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

Contributors

skorotkiewicz

19 commits

skorotkiewicz/2049

2049 - a roguelike that fuses 2048 and Minesweeper

0

stars

19

commits

Python

primary language

Sep 16, 2026

updated

sekor.eu.org/2049

README

2049 - Mines of Merge

deploy status MIT license python 3.13+ managed with uv

▶ Play in the browser

2049 - Mines of Merge in a terminal

💻 also runs in the browser (uv run game-web)

2049 - Mines of Merge web version

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.

Run

uv run game

No dependencies beyond Python itself; everything is managed by uv.

Run in the browser

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.

How it works

  • 2048 half - every move slides all tiles (you included). Slide into an equal tile to merge: your power doubles, score goes up. Big merges (32+) heal you.
  • Minesweeper half - mines are invisible and act as walls for tiles (tiles piling up against nothing is itself a clue). Standing next to cells probes them: mines get flagged with !, safe cells show a clue number = how many mines touch them. Stepping on any mine explodes it for 1 + depth damage.
  • Roguelike half - find the stairs >> 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.

Controls

KeyAction
arrows / h j k lslide up / down / left / right
rnew run
qquit

Best score is saved locally - localStorage in the browser, ~/.config/2049/best.json in the terminal.

Layout

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

Contributors

skorotkiewicz

19 commits

Languages

Python

80.5%

HTML

19.5%