| ▲ | Show HN: Zsweep – Play Minesweeper using only Vim motions(zsweep.com) | ||||||||||||||||
| 43 points by oug-t 5 days ago | 16 comments | |||||||||||||||||
| ▲ | QuadmasterXLII an hour ago | parent | next [-] | ||||||||||||||||
For reference, here are the supported motions:
No macros or block select yet, still fun! probably for the best that /mine doesn't work yet | |||||||||||||||||
| ▲ | johnhamlin an hour ago | parent | prev | next [-] | ||||||||||||||||
Love games like this. I used Vim Snake to make the muscle memory for hjkl finally stick in my brain. (I wish you could disable the insert mode toggling -- it's cute but didn't help when I was trying to break the habit of moving my finger up to press W or Up Arrow and remember that everything is in a straight line.) | |||||||||||||||||
| ▲ | oug-t 5 days ago | parent | prev | next [-] | ||||||||||||||||
Hi HN, I’m the creator of zsweep. It’s a keyboard-centric Minesweeper clone where you play entirely using Vim motions (h, j, k, l to move; w/b to skip words; etc.). The Backstory: I wanted to build a project to get my hands dirty with Svelte 5 and the new Runes system. I also wanted a way to practice Vim muscle memory that wasn't just typing code. Tech Stack: Frontend: Svelte 5 (Runes) + SvelteKit Styling: Tailwind CSS State: Custom Finite State Machine (FSM) for the game logic The Challenge: One of the hardest parts was getting the "chording" logic right (where you clear multiple squares at once) while keeping the keyboard navigation feeling instant and "vim-like." It’s open source, so if you’re curious about how Svelte 5 handles game state, feel free to poke around the code: https://github.com/oug-t/zsweep I’d love to hear your feedback on the controls or any edge cases you find! | |||||||||||||||||
| |||||||||||||||||
| ▲ | TheGRS an hour ago | parent | prev | next [-] | ||||||||||||||||
Very nice, only feedback I have rn is you should keep the board state displayed after you hit a mine. I like to look around the board to see what I missed after making a mistake. | |||||||||||||||||
| ▲ | unformedelta 2 hours ago | parent | prev | next [-] | ||||||||||||||||
This was fun! It would feel a little more intuitive if w/b worked on groups of unrevealed tiles instead of just moving 1 space when you were already on an unrevealed tile. i.e. unrevealed = words, revealed = spaces. That way, you could also use them to meaningfully navigate around unrevealed groups better than using h/l. I also found myself missing "e" to go to the end of a word, apparently I use it more often than "w". I really appreciated the attention to detail though, I was delighted when I realized that gg/G/0/$ all worked as expected. | |||||||||||||||||
| ▲ | 1313ed01 2 hours ago | parent | prev | next [-] | ||||||||||||||||
It is common in traditional roguelikes to support vi keys as an alternative to arrow keys. I use that all the time when playing Brogue. Have a great vi keys muscle memory now thanks to that, but I use Emacs and only rarely vi, so it's not doing me much good. | |||||||||||||||||
| |||||||||||||||||
| ▲ | kej 3 hours ago | parent | prev | next [-] | ||||||||||||||||
This is a fun idea and the implementation works pretty well. The only complaint I have is that enter for clearing feels awkward in conjunction with hjkl movement; maybe add (d)elete and (f)lag as alternatives to enter and space to keep everything on the home row without requiring stretching? | |||||||||||||||||
| ▲ | alejoar an hour ago | parent | prev | next [-] | ||||||||||||||||
Remember to exclude vimium from the site! | |||||||||||||||||
| ▲ | zahrevsky an hour ago | parent | prev | next [-] | ||||||||||||||||
Too bad it doesn't display the keyboard on mobile :-( | |||||||||||||||||
| ▲ | sodacanner an hour ago | parent | prev | next [-] | ||||||||||||||||
Very useful as someone who's trying to use Vim motions more often, thanks! | |||||||||||||||||
| ▲ | lasgawe 2 hours ago | parent | prev | next [-] | ||||||||||||||||
This is nice! love this | |||||||||||||||||
| ▲ | oug-t 5 days ago | parent | prev [-] | ||||||||||||||||
Play at: https://zsweep.com | |||||||||||||||||
| |||||||||||||||||