Numbers show how many mines are adjacent to that square.
It's the perfect way to play on a Mac How to play: Click in the minefield to expose a free space. If all neighbor hasFlag=true cells are hasMine=true (every flag is put on correct cell), call Left Click on a Cell for all neighbor cells, which hasFlag=false and isOpened=false. Play Free Online Minesweeper in JavaScript Play the classic game in Beginner, Intermediate, and Expert modes.If all neighbor hasFlag=true cells are not hasMine=true, game over.If cell neighborMineCount = "neighbor hasFlag=true cell count":.If cell neighborMineCount != "neighbor hasFlag=true cell count", do nothing.If cell neighborMineCount = 0, no nothing.Multi Click (both Left and Right Click) on a Cell: Note: The last step may be implemented with a recursive call or by using a stacked data structure. If cell has neighborMineCount = 0, set isOpened=true, call Left Click on a Cell for all neighbor cells, which hasFlag=false and isOpened=false.If all cells which hasMine=false are opened, end game with SUCCESS. If cell has neighborMineCount > 0, set isOpened=true, show neighborMineCount on the cell.If cell isOpened=false, set cell hasFlag=true and show a flag on the cell.Note 2: It's recommended to handle mouse clicks with "mouse release" actions instead of "mouse pressed/click" actions, otherwise a left or right click may be understood as a multi-click or vice versa.
Note 1: Neighbor cells should be accessed with the coordinates:Īnd don't forget that neighbor cell counts may be 3 (for corner cells), 5 (for edge cells) or 8 (for middle cells). (This step may be done for each clicked cell while game continues but it may be inefficient.) Calculate neighborMineCount values for each cell, which have hasMine=false.Assign mines to cells randomly (set hasMine=true).So, we have a two-dimensional "Button cells" data structure to handle game actions. neighborMineCount 0 to 8 (default 0, total count of mines on neighbor cells).isOpened = true / false (default false).button), which has the following attributes: We may think of each cell as a UI structure (e.g. If all cells (without mines) are opened using left clicks and/or multi-clicks, game ends with SUCCESS.If neighbor cells' total flag count equals to this multi-clicked cell's count and at least one predicted mine location is wrong, game ends with FAIL.If neighbor cells' total flag count equals to this multi-clicked cell's count and predicted mine locations are true, all closed and unflagged neighbor cells are opened automatically.If you multi-click (both right and left click) on a cell which is opened and has at least one mine on its neighbors:.If you right-click on a closed cell, you put a flag which shows that "I know this cell has a mine".If neighbor cells have no mines, all neighbor cells are opened automatically.If neighbor cell(s) have mine(s), this opened cell shows neighbor mine count.Cells have two states, opened and closed.
The board is a two-dimensional space, which has a predetermined number of mines.
This blog post explains the essential algorithms for the well-known Windows game "Minesweeper." Game Rules