1
\$\begingroup\$

I'm currently making a Minesweeper in C#. I've already done the basics (generating minefield, rules and ui) but I don't know how I should implement when the user clicks a cell and the cell has no mines nearby and clicks nearby cells with also no mines nearby, like this:

Minefield before click

And after click

Minefield after click

This is my current code on this:

if (MineField(x,y) == false) // If the clicked cell isn't a mine
{
    if (GetNeighbours(x,y) == 0) // GetNeighbours returns the amount of mines in the closest 8 cells
    {
        // To be honest, no idea...
    }
}
\$\endgroup\$
  • \$\begingroup\$ Simply the amount of mines in the neighbor tiles is not enough, you need to return an array of the tile references / coordinates, so you can call your Click() methods, or whatever you want to happen if the neighbor tiles are empty. \$\endgroup\$ – Zee Oct 9 '16 at 11:27
4
\$\begingroup\$

One way to do this, is to use recursive Flood Fill algorithm. Something like:

If cell(x,y) has no bomb: 1. If coordinates (x,y) didn't went beyond game board, and cell (x,y) wasn't marked as visited:

a) give cell (x,y) property visited to true (or mark it in any other way) b) if getNeighbours(x,y) > 0: print number of cell (x,y) c) if getNeighbours(x,y) == 0: reveal cell (x,y) and call whole function responsible for revealing field for coordinates (x-1,y-1),(x-1, y), (x-1, y+1), (x, y+1), (x+1, y+1), (x+1, y), (x+1, y-1), (x, y-1).

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.