Merge pull request #3032 from makermelissa/main
Minesweeper improvements
This commit is contained in:
commit
508815e216
3 changed files with 32 additions and 9 deletions
|
|
@ -197,13 +197,15 @@ def reset():
|
|||
def set_difficulty(diff):
|
||||
game_logic.difficulty = diff
|
||||
reset()
|
||||
difficulty_menu.select_item(DIFFICULTIES[diff]['label'].lower().replace(" ", "_"))
|
||||
|
||||
def hide_group(group):
|
||||
group.hidden = True
|
||||
|
||||
for i, difficulty in enumerate(DIFFICULTIES):
|
||||
# Create a button for each difficulty
|
||||
difficulty_menu.add_item((set_difficulty, i), difficulty['label'])
|
||||
selected = i == game_logic.difficulty
|
||||
difficulty_menu.add_item((set_difficulty, i), difficulty['label'], selected)
|
||||
|
||||
reset_menu.add_item(reset, "OK")
|
||||
|
||||
|
|
|
|||
|
|
@ -68,8 +68,12 @@ class GameLogic:
|
|||
if (self.grid_width * 16 > self._display.width or
|
||||
self.grid_height * 16 > self._display.height - INFO_BAR_HEIGHT):
|
||||
raise ValueError("Grid size exceeds display size")
|
||||
self._board_data = bytearray(self.grid_width * self.grid_height)
|
||||
self._mine_count = DIFFICULTIES[self._difficulty]['mines']
|
||||
if self._mine_count > (self.grid_width - 1) * (self.grid_height - 1):
|
||||
raise ValueError("Too many mines for grid size")
|
||||
if self._mine_count < 10:
|
||||
raise ValueError("There must be at least 10 mines")
|
||||
self._board_data = bytearray(self.grid_width * self.grid_height)
|
||||
self._status = STATUS_NEWGAME
|
||||
self._start_time = None
|
||||
self._end_time = None
|
||||
|
|
@ -241,7 +245,6 @@ class GameLogic:
|
|||
if self._start_time is None:
|
||||
return 0
|
||||
if self._end_time is None:
|
||||
print(ticks_ms() / 1000, self._start_time / 1000)
|
||||
return min(999, (ticks_ms() - self._start_time) // 1000)
|
||||
return min(999, (self._end_time - self._start_time) // 1000)
|
||||
|
||||
|
|
|
|||
|
|
@ -36,17 +36,28 @@ class SubMenu(Group):
|
|||
self._menu_items = []
|
||||
self._root_button = None
|
||||
|
||||
def add_item(self, function, label):
|
||||
def add_item(self, function, label, selected=False):
|
||||
key = label.lower().replace(" ", "_")
|
||||
self._menu_items.append(
|
||||
{
|
||||
"key": key,
|
||||
"function": function,
|
||||
"label": label,
|
||||
"selected": selected,
|
||||
}
|
||||
)
|
||||
self._render()
|
||||
|
||||
def select_item(self, key):
|
||||
for item in self._menu_items:
|
||||
if item["key"] == key:
|
||||
item["selected"] = True
|
||||
else:
|
||||
item["selected"] = False
|
||||
self._render()
|
||||
|
||||
@staticmethod
|
||||
def _create_button(callback, label, width, x, y=0, border=True):
|
||||
def _create_button(callback, label, width, x, y=0, border=True, selected=False):
|
||||
if border:
|
||||
outline_color = 0x000000
|
||||
selected_outline = 0x333333
|
||||
|
|
@ -54,6 +65,11 @@ class SubMenu(Group):
|
|||
outline_color = 0xEEEEEE
|
||||
selected_outline = 0xBBBBBB
|
||||
|
||||
if selected:
|
||||
selected_label = label_color = 0x008800
|
||||
else:
|
||||
selected_label = label_color = 0x333333
|
||||
|
||||
button = EventButton(
|
||||
callback,
|
||||
x=x,
|
||||
|
|
@ -64,13 +80,14 @@ class SubMenu(Group):
|
|||
style=EventButton.RECT,
|
||||
fill_color=0xEEEEEE,
|
||||
outline_color=outline_color,
|
||||
label_color=0x333333,
|
||||
label_color=label_color,
|
||||
selected_fill=0xBBBBBB,
|
||||
selected_label=0x333333,
|
||||
selected_label=selected_label,
|
||||
selected_outline=selected_outline,
|
||||
)
|
||||
return button
|
||||
|
||||
|
||||
def _toggle_submenu(self):
|
||||
self._menu_items_group.hidden = not self._menu_items_group.hidden
|
||||
|
||||
|
|
@ -87,7 +104,7 @@ class SubMenu(Group):
|
|||
self._button_width,
|
||||
self._xpos,
|
||||
self._ypos,
|
||||
border=True,
|
||||
True,
|
||||
)
|
||||
self.append(self._root_button)
|
||||
|
||||
|
|
@ -113,7 +130,8 @@ class SubMenu(Group):
|
|||
self._menu_width - 2,
|
||||
self._xpos + 1,
|
||||
self._ypos + index * MENU_ITEM_HEIGHT + self._root_button.height,
|
||||
border=False,
|
||||
False,
|
||||
item["selected"],
|
||||
)
|
||||
self._menu_items_group.append(button)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue