Skip to content

Commit 5fc0648

Browse files
authored
FIX: Only flag tiles that are not visible (#8)
Remove tiles from board.flags when they are toggled for the 2nd time.
1 parent a921fdc commit 5fc0648

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

board.py

+15-4
Original file line numberDiff line numberDiff line change
@@ -172,14 +172,24 @@ class Board:
172172
def rightclick(self, pos):
173173
realx, realy = _floor_pos(pos)
174174
if self._inside_board(realx, realy):
175-
if self.grid:
176-
self.grid[realx][realy].toggle_flag()
177-
self.flags.add((realx, realy))
175+
if self._grid_constructed:
176+
tile = self.grid[realx][realy]
177+
if not tile.visible:
178+
tile.toggle_flag()
179+
180+
# Tiles don't ever start as flagged
181+
# thus .remove will only ever be
182+
# called after .add
183+
if tile.flagged:
184+
self.flags.add((realx, realy))
185+
else:
186+
self.flags.remove((realx, realy))
178187

179188
def leftclick(self, pos) -> bool:
180189
"""The return value determines if the player survived."""
181190
realx, realy = _floor_pos(pos)
182-
if not self.grid:
191+
if not self._grid_constructed:
192+
self._grid_constructed = True
183193
self.grid = self._construct_grid(self.x, self.y, (realx, realy))
184194

185195
if self._inside_board(realx, realy):
@@ -236,6 +246,7 @@ def __init__(self, x, y, mines: int):
236246
self.n_mines = mines
237247
self.flags = set()
238248
self.grid = None
249+
self._grid_constructed = False
239250
self._revealed = False
240251

241252
x_blocks = x * BLOCK_SIZE

0 commit comments

Comments
 (0)