Git Product home page Git Product logo

mnswpr's Introduction

๐Ÿšฉ A Minesweeper game for your terminal written with ReactJS & ink ๐Ÿ˜Ž

Run

npx mnswpr

Install globally

npm install -g mnswpr
mnswpr

Supported terminals

legacy mode

The interface works with emoji by default. If your terminal doesn't support it, you can either switch to legacy mode by pressing l button or update your terminal (For Windows I suggest Windows Terminal)

Options

Usage: mnswpr

Press h to show game controls.

Options:
  --legacy, -L  (or press l)
        Legacy mode. Use this if your terminal doesn't support emojis
      
  --quick [b|i|e|width,height,mines], -Q [b|i|e|width,height,mines] 
        Start game directly with one of the difficulties: [b|i|e]
	or a custom field: [width(5-50),height(5-25),mines(1-width*height*0.6)]
	
        Examples:
          mnswpr --quick b #start game with beginner difficulty
          mnswpr -Q 10,20,60 #start game with custom field width:10 height:20 mines:60

mnswpr's People

Contributors

dependabot[bot] avatar felixjulianheitmann avatar mordv avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

steverx

mnswpr's Issues

Feature Request: Keeping Score

I like the idea to keep score. Of course, this implies keeping track of the top times but also measuring the win/lose ratio. I think the minesweeper I used on WinXP when I had no other games would tell me, that I win about 2% of my games.
I would really like to relive that depressing feeling.

As an initial input, I would suggest logging wins, losses, cancelled games and the x top timings for any game. I usually play with custom width/height/mines. So I would hope to keep track of these stats not only for beginner, intermediate and expert but also for my customs games. Maybe store the field size as additional score key.

When I find the time, I will try to dig into how to do this and send a PR for you to refactor.

Keep up the good work!

@felixjulianheitmann
At first, I didn't think it would be possible, but I've found this comment. Turned out you can write commands to stdout to enter and exit fullscreen. I suppose tools like htop or nano use exactly this. Also turned out you can subscribe to stdout resize, so everything works like a charm, really like how it turned out.
Again, thanks for the ideas, for some reason I didn't think about clearing output at all. I have also found persistant library for npm packages, so we might try to track records, PR's are welcome :) Originally posted by @mordv in #3 (comment)

Feature request: Add flags to clear the console and align it vertically in the middle

Hi,

I would like to be able to clear my console before start, so I don't have the game at the very bottom of my screen. Also I would like the game to be vertically centered, when using the "fullscreen" option.

I tried implementing that myself, but as far as I could see, the Ink framework does not know about the terminal size. One could set the outermost Box size to the terminal height, but that would need to be updated dynamically when changing the terminal size.

Thank you for the gift to a slightly obsessed Minesweeper enthusiast.

Cheers

Support mouse event?

I would like to use mouse to play the game. It would be nice to support both keyboard or mourse interaction.

The terminal is blinking continuously

See the following screen recording. Maybe a partial re-render could fix this problems. I do not know whether it is a limit of ink or not.

Video_2022-04-08_100737-converted.mp4

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.