#minesweeper #game

app minesweeper

Simple minesweeper in Rust

6 releases (stable)

Uses old Rust 2015

1.3.0 Jun 15, 2017
1.2.1 Jan 5, 2016
1.2.0 Oct 26, 2015
1.1.0 Sep 7, 2015
0.1.0 Aug 27, 2015

#150 in Games

MIT license


minesweeper-rs Build Status license Join the chat at https://gitter.im/Vinatorul/minesweeper-rs

Simple minesweeper in Rust based on piston_window

How to Play

To win the game - open all cells with numbers.


  • R - restart
  • H - field height setup
  • W - field width setup
  • M - mines quantity setup
  • Arrows to choose cell (or change settings in setup mode)
  • Space to open cell
  • Ctrl to mark cell
  • Esc to exit
  • LMB click on a cell to open
  • RMB click on a cell to mark

NOTE: marked cells disallow opennig them, until mark will be removed.

NOTE: pressing Space or LMB on opened cell will open it's neighbors (Thanks to waynenilsen and xilec!)


In game screenshot (green cells are marked) minesweeper ingame NOTE: you can see counter of marked cells at the right of the window

Defeat (red cells are missed mines) minesweeper defeat NOTE: with * marked mines which ended the game


minesweeper is licensed under the MIT license. Please read the LICENSE file in this repository for more information.


Follow these instructions to compile minesweeper-rs.

  1. Clone the project $ git clone https://github.com/Vinatorul/minesweeper-rs && cd minesweeper-rs
  2. Build the project $ cargo build --release (NOTE: There is a large performance differnce when compiling without optimizations, so I recommend alwasy using --release to enable to them)
  3. Once complete, the binary will be located at target/release/minesweeper


Pass -h to arguments or look here:

    minesweeper [FLAGS] [OPTIONS]

    -h, --help       Prints help information
        --oldOGL     set OpenGL version to 2.1
    -V, --version    Prints version information

    -f, --field <field>       field size "width"x"height"
        --maxFPS <max_fps>    set max fps
    -m, --mines <mines>       max mines
    -s, --size <size>         window size "width"x"height"

How to Contribute

Contributions are always welcome! Please use the following guidelines when contributing to minesweeper

  1. Fork minesweeper
  2. Clone your fork (git clone https://github.com/$YOUR_USERNAME/minesweeper-rs && cd minesweeper-rs)
  3. Create new branch (git checkout -b new-branch)
  4. Make your changes, and commit (git commit -am "your message")
  • I use a conventional changelog format so I can update my changelog using clog
  • In addition to the conventions defined above, I also use imp, wip, gr.
  • Format your commit subject line using the following format: TYPE(COMPONENT): MESSAGE where TYPE is one of the following:
    • feat - A new feature
    • imp - An improvement to an existing feature
    • perf - A performance improvement
    • tests - Changes to the testing framework or tests only
    • fix - A bug fix
    • refactor - Code functionality doesn't change, but underlying structure may
    • style - Stylistic changes only, no functionality changes
    • wip - A work in progress commit (Should typically be git rebase'ed away)
    • chore - Catch all or things that have to do with the build system, etc
    • gr - Graphics changes
  • The COMPONENT is optional, and may be a single file, directory, or logical component. Can be omitted if commit applies globally
  1. Run the tests (cargo test)
  2. git rebase into concise commits and remove --fixups (git rebase -i HEAD~NUM where NUM is number of commits back)
  3. Push your changes back to your fork (git push origin $your-branch)
  4. Create a pull request! (You can also create the pull request first, and we'll merge when ready. This a good way to discuss proposed changes.)


~210K SLoC