Skip to content

Commit 9d762f4

Browse files
committed
python: Add game of life to tkinter gui
Signed-off-by: Daniel Schaefer <[email protected]>
1 parent 2e66c8b commit 9d762f4

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

python/inputmodule/gui/__init__.py

+23-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
get_brightness,
1313
bootloader,
1414
CommandVals,
15+
Game,
16+
GameControlVal
1517
)
1618
from inputmodule.gui.games import snake
1719
from inputmodule.gui.games import ledris
@@ -107,10 +109,23 @@ def run_gui(devices):
107109
percentage_scale.pack(fill="x", padx=5, pady=5)
108110

109111
# Games tab
110-
games_frame = ttk.LabelFrame(tab_games, text="Games", style="TLabelframe")
112+
games_frame = ttk.LabelFrame(tab_games, text="Interactive", style="TLabelframe")
111113
games_frame.pack(fill="x", padx=10, pady=5)
112114
ttk.Button(games_frame, text="Snake", command=lambda: perform_action(devices, 'game_snake'), style="TButton").pack(side="left", padx=5, pady=5)
113115
ttk.Button(games_frame, text="Ledris", command=lambda: perform_action(devices, 'game_ledris'), style="TButton").pack(side="left", padx=5, pady=5)
116+
gol_frame = ttk.LabelFrame(tab_games, text="Game of Life", style="TLabelframe")
117+
gol_frame.pack(fill="x", padx=10, pady=5)
118+
animation_buttons = {
119+
"Current Matrix": "gol_current",
120+
"Pattern 1": "gol_pattern1",
121+
"Blinker": "gol_blinker",
122+
"Toad": "gol_toad",
123+
"Beacon": "gol_beacon",
124+
"Glider": "gol_glider",
125+
"Stop": "game_stop",
126+
}
127+
for text, action in animation_buttons.items():
128+
ttk.Button(gol_frame, text=text, command=lambda a=action: perform_action(devices, a), style="TButton").pack(side="left", padx=5, pady=5)
114129

115130
# Countdown Timer
116131
countdown_frame = ttk.LabelFrame(tab2, text="Countdown Timer", style="TLabelframe")
@@ -187,6 +202,13 @@ def perform_action(devices, action):
187202
"stop_animation": lambda dev: animate(dev, False),
188203
"start_time": lambda dev: threading.Thread(target=clock, args=(dev,), daemon=True).start(),
189204
"start_eq": lambda dev: threading.Thread(target=random_eq, args=(dev,), daemon=True).start(),
205+
"gol_current": lambda dev: send_command(dev, CommandVals.StartGame, [Game.GameOfLife, 0]),
206+
"gol_pattern1": lambda dev: send_command(dev, CommandVals.StartGame, [Game.GameOfLife, 1]),
207+
"gol_blinker": lambda dev: send_command(dev, CommandVals.StartGame, [Game.GameOfLife, 2]),
208+
"gol_toad": lambda dev: send_command(dev, CommandVals.StartGame, [Game.GameOfLife, 3]),
209+
"gol_beacon": lambda dev: send_command(dev, CommandVals.StartGame, [Game.GameOfLife, 4]),
210+
"gol_glider": lambda dev: send_command(dev, CommandVals.StartGame, [Game.GameOfLife, 5]),
211+
"game_stop": lambda dev: send_command(dev, CommandVals.GameControl, [GameControlVal.Quit]),
190212
}
191213
selected_devices = get_selected_devices(devices)
192214
for dev in selected_devices:

0 commit comments

Comments
 (0)