https://github.com/glanguage/mines2
A new mine-sweeping game.
https://github.com/glanguage/mines2
cpp makefile minesweeper-game
Last synced: 6 days ago
JSON representation
A new mine-sweeping game.
- Host: GitHub
- URL: https://github.com/glanguage/mines2
- Owner: GLanguage
- Created: 2020-02-19T00:57:41.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-07-31T09:51:01.000Z (almost 6 years ago)
- Last Synced: 2025-01-15T22:26:57.274Z (over 1 year ago)
- Topics: cpp, makefile, minesweeper-game
- Language: C++
- Homepage:
- Size: 40 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Mines2
A new mine-sweeping game.
## Dependencies
- `g++` (GNU)
- `make` (GNU) (optional)
## Usage
### Linux / Unix / Mac OS
After cloning the repo, `cd` into the `./src` directory, and run
```shell
$ g++ -c main.cpp
$ g++ -c game.cpp
$ g++ -c platform.cpp
$ g++ -o main main.o game.o platform.o
```
or (with GNU make)
```shell
$ make
```
Then, to start the game, run
```shell
$ ./main
```
*NOTE: The process will end automatically after the game is over (you win or lose) . To quit the game befor it is over, press **Ctrl+C**.*
To uninstall the game, run
```shell
$ rm main main.o game.o platform.o
```
or (with GNU make)
```shell
$ make clean
```
The executable file and the object files (`*.o`) will be removed.
### Windows
After cloning the repo, `cd` into the `./src` directory, and run
```shell
$ g++ -c main.cpp
$ g++ -c game.cpp
$ g++ -c platform.cpp
$ g++ -o main.exe main.obj game.obj platform.obj
```
Then, to start the game, run
```shell
$ main.exe
```
*NOTE: The process will end automatically after the game is over (you win or lose) . To quit the game befor it is over, press **Ctrl+C**.*
To uninstall the game, run
```shell
$ del main.exe main.obj game.obj platform.obj
```
The executable file and the object files (`*.obj`) will be removed.
If you want to build and/or uninstall the game through GNU make on a Windows OS, replace the commands inside the `./src/makefile` by
```make
objs = main.obj game.obj platform.obj
main.exe : $(objs)
g++ -o main.exe $(objs)
main.obj : main.cpp game.h
g++ -c main.cpp
game.obj : game.cpp game.h platform.h
g++ -c game.cpp
platform.obj : platform.cpp platform.h osplatformutil.h
g++ -c platform.cpp
.PHONY : clean
clean :
-del main.exe $(objs)
```
Then you can build the game by running
```shell
$ make
```
and uninstall it by running
```shell
$ make clean
```
### Colorful Mode
Colorful Mode, enabled by default, makes the game UI colorful.
To disable the Colorful Mode, run the game by
```shell
# Unix-like
$ ./main --no-color
# Windows
$ main.exe --no-color
```
## How to Play
### Beginning
The game begins with a 9 * 9 map, where the vertical axis is **x** while the horizontal axis is **y**:
```
1 2 3 4 5 6 7 8 9
1 N N N N N N N N N
2 N N N N N N N N N
3 N N N N N N N N N
4 N N N N N N N N N
5 N N N N N N N N N
6 N N N N N N N N N
7 N N N N N N N N N
8 N N N N N N N N N
9 N N N N N N N N N
```
The map is full of `N`. `N` means that it is *unknown* (aka *Hided*) . Later, `N` may be replaced by
- `#` if it is *marked* (as you think it is a mine)
- `X` if the mine here *exploded*
- `[0-9]f?l?` if the position is *shown* and there is/are `[0-9]` mines *around* here (`f` is shown as the *sweep-it-at-first mine* is *around* here; `l` is shown as the *sweep-it-at-last mine* is *around* here)
- `D` if the mine here has been *swept*
### Checking
For any *unknown* position P(x, y), if you *believe* it *is not* a mine, you can *check* it (make it *shown*) by entering
```
0 x y
```
0 means checking, and x, y show the position of P.
After entering, if P is *not* a mine, it will turn to `[0-9]f?l?`, showing the number of mines around P. *Otherwise*, it will turn to `X` and the game will be over (with `YOU LOST. ...` printed) .
### Marking
For any *unknown* position P(x, y), if you *believe* it *is* a mine, you can *mark* it (to be *swept* later) by entering
```
1 x y
```
1 means marking, and x, y show the position of P.
After entering, P will turn to `#`.
You can *unmark* P by entering `1 x y` again.
### Sweeping
You can *sweep* all the *marked* positions by entering
```
-1
```
After entering, for each one of the *marked* positions, if it *is* a mine, it will turn to `D`. *Otherwise*, it will turn to `[0-9]f?l?` (*shown*) .
If you swept all the mines, the game will be over (with `... YOU WON! ` printed) .
You may sweep *more than once* in *a* game in order to sweep all the mines.
*NOTE: After sweeping, the game may be over (you win or lose). For further information, see SIAF & SIAL.*
### SIAF & SIAL
The SIAF (sweep-it-at-first) mine and the SIAL (sweep-it-at-last) mine are the special mines in *Mines2*.
The SIAF mine *must* be swept at the *first* time you sweep. After each time you sweep, the game will check if the SIAF mine has been swept. If it has *not*, the game will be over (with `YOU LOST. ...` printed) .
The SIAL mine *must* be swept at the *last* time you sweep. After the SIAL mine is swept, the game will check if there are any mines that have *not* been swept yet. If there *are*, the game will be over (with `YOU LOST. ...` printed) .
As a result, the game will definitely be over after the SIAL mine is swept. If you sweep it at the last time, you will win. Otherwise, you will lose.
## Thanks
Thank [@itas109](https://github.com/itas109) for providing `./src/osplatformutil.h` ([LINK](https://github.com/itas109/OSPlatformUtil))
## Known Bugs
*NOTE: If you find any bugs, feel free to raise an issue.*
> NONE