@@ -77,7 +77,7 @@ def __init__(self, root):
7777
7878 self .instruction_label = tk .Label (
7979 root ,
80- text = "🎮 Controls: ← ↑ → ↓ | Merge same numbers | Goal: 2048 🎯" ,
80+ text = "🎮 Controls: WASD / ← ↑ → ↓ | Merge same numbers | Goal: 2048 🎯" ,
8181 font = ("Arial" , 10 ),
8282 fg = "#6a635b" ,
8383 )
@@ -262,29 +262,21 @@ def check_game_over(self):
262262 return True
263263
264264 def handle_keypress (self , event ):
265- key = event .keysym
266- moved = False
267-
268- if key == "Left" :
269- moved = self .move_left ()
270-
271- elif key == "Right" :
272- moved = self .move_right ()
273-
274- elif key == "Up" :
275- moved = self .move_up ()
276-
277- elif key == "Down" :
278- moved = self .move_down ()
279-
280- else :
265+ key = event .keysym .lower () if len (event .keysym ) == 1 else event .keysym
266+ move_map = {
267+ "Left" : self .move_left , "a" : self .move_left ,
268+ "Right" : self .move_right , "d" : self .move_right ,
269+ "Up" : self .move_up , "w" : self .move_up ,
270+ "Down" : self .move_down , "s" : self .move_down ,
271+ }
272+ if key not in move_map :
281273 return
282-
283-
274+
275+ moved = move_map [ key ]()
284276
285277 if moved :
286278 self .add_new_tile ()
287- self .moves_left -= 1
279+ self .moves_left -= 1
288280
289281 if self .score > self .high_score :
290282 self .high_score = self .score
@@ -294,9 +286,7 @@ def handle_keypress(self, event):
294286
295287 # FIXED BUG:
296288 # Game over is now checked even when no movement happens
297- if self .check_game_over ():
298- self .game_over ()
299- if self .moves_left <= 0 :
289+ if self .check_game_over () or self .moves_left <= 0 :
300290 self .game_over ()
301291
302292 def game_over (self ):
0 commit comments