Simple minesweeper in Rust based on piston_window
To win the game - open all cells with numbers.
Controls:
R- restartH- field height setupW- field width setupM- mines quantity setupArrowsto choose cell (or change settings insetupmode)Spaceto open cellCtrlto mark cellEscto exitLMBclick on a cell to openRMBclick 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)
NOTE: you can see counter of marked cells at the right of the window
Defeat (red cells are missed mines)
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.
- Clone the project
$ git clone https://github.com/Vinatorul/minesweeper-rs && cd minesweeper-rs - Build the project
$ cargo build --release(NOTE: There is a large performance differnce when compiling without optimizations, so I recommend alwasy using--releaseto enable to them) - Once complete, the binary will be located at
target/release/minesweeper
Pass -h to arguments or look here:
USAGE:
minesweeper [FLAGS] [OPTIONS]
FLAGS:
-h, --help Prints help information
--oldOGL set OpenGL version to 2.1
-V, --version Prints version information
OPTIONS:
-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"
Contributions are always welcome! Please use the following guidelines when contributing to minesweeper
- Fork
minesweeper - Clone your fork (
git clone https://github.com/$YOUR_USERNAME/minesweeper-rs && cd minesweeper-rs) - Create new branch (
git checkout -b new-branch) - 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): MESSAGEwhereTYPEis one of the following:feat- A new featureimp- An improvement to an existing featureperf- A performance improvementtests- Changes to the testing framework or tests onlyfix- A bug fixrefactor- Code functionality doesn't change, but underlying structure maystyle- Stylistic changes only, no functionality changeswip- A work in progress commit (Should typically begit rebase'ed away)chore- Catch all or things that have to do with the build system, etcgr- Graphics changes
- The
COMPONENTis optional, and may be a single file, directory, or logical component. Can be omitted if commit applies globally
- Run the tests (
cargo test) git rebaseinto concise commits and remove--fixups (git rebase -i HEAD~NUMwhereNUMis number of commits back)- Push your changes back to your fork (
git push origin $your-branch) - 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.)