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\$
1
  • \$\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
    Commented Oct 9, 2016 at 11:27

1 Answer 1

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\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .