Create a basic game of Mine Sweeper with the UI technology of your choice. It may be fun to do this via Xamarin Forms and try to cross-platform it using .NET Core, or to use it to try out different web front-end frameworks.
Rules of Minesweeper
Minesweeper is a grid of tiles, each of which may or may not cover hidden mines. The goal is to click on every tile except those that have mines. When a user clicks a tile, one of two things happens. If the tile was covering a mine, the mine is revealed and the game ends in failure. If the tile was not covering a mine, it instead reveals the number of adjacent (including diagonals) tiles that are covering mines – and, if that number was 0, behaves as if the user has clicked on every cell around it. When the user is confident that all tiles not containing mines have been clicked, the user presses a Validate button (often portrayed as a smiley-face icon) that checks the clicked tiles: if the user is correct, the game ends in victory, if not, the game ends in failure.
Design constraints
The board should be an 8x8 grid and by default 10 hidden mines are randomly placed into the board. (Extra credit for making this configurable)
The interface should support these additional functions:
New Game: start a new, randomly generated game.
Validate: check that a user has correctly marked all the tiles and end the game in either victory or failure
Cheat: in any manner you deem appropriate, reveal the locations of the mines without ending the game.
Goals
Gain experience with some light graph algorithms in a fun setting that doesn't feel academic
Allow experimentation with different UI frameworks
Extension Points
Have a common back-end (possibly a service) that performs the logic and can be shared by different front end implementations.
Implement leaderboards that track the quickest times for solving the game across for all users.
Allow for an interactive hint that, instead of showing the location of the mines, instead suggests a move for the user to make. This suggestion may not be the ideal move, but it should be guaranteed to be a safe move (meaning that it should never suggest clicking on a bomb).
Summary
Create a basic game of Mine Sweeper with the UI technology of your choice. It may be fun to do this via Xamarin Forms and try to cross-platform it using .NET Core, or to use it to try out different web front-end frameworks.
Rules of Minesweeper
Minesweeper is a grid of tiles, each of which may or may not cover hidden mines. The goal is to click on every tile except those that have mines. When a user clicks a tile, one of two things happens. If the tile was covering a mine, the mine is revealed and the game ends in failure. If the tile was not covering a mine, it instead reveals the number of adjacent (including diagonals) tiles that are covering mines – and, if that number was 0, behaves as if the user has clicked on every cell around it. When the user is confident that all tiles not containing mines have been clicked, the user presses a Validate button (often portrayed as a smiley-face icon) that checks the clicked tiles: if the user is correct, the game ends in victory, if not, the game ends in failure.
Design constraints
The board should be an 8x8 grid and by default 10 hidden mines are randomly placed into the board. (Extra credit for making this configurable)
The interface should support these additional functions:
Goals
Extension Points
Have a common back-end (possibly a service) that performs the logic and can be shared by different front end implementations.
Implement leaderboards that track the quickest times for solving the game across for all users.
Allow for an interactive hint that, instead of showing the location of the mines, instead suggests a move for the user to make. This suggestion may not be the ideal move, but it should be guaranteed to be a safe move (meaning that it should never suggest clicking on a bomb).