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 setupArrows
to choose cell (or change settings insetup
mode)Space
to open cellCtrl
to mark cellEsc
to exitLMB
click on a cell to openRMB
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) 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--release
to 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): MESSAGE
whereTYPE
is 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
COMPONENT
is optional, and may be a single file, directory, or logical component. Can be omitted if commit applies globally
- Run the tests (
cargo test
) git rebase
into concise commits and remove--fixup
s (git rebase -i HEAD~NUM
whereNUM
is 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.)