Browse Source

Aggiungi gestione dei tasti per il controllo del gioco e modifica il metodo di chiusura della finestra

master
Matteo Benedetto 1 year ago
parent
commit
939e81ca82
  1. 4
      engine/sdl2.py
  2. 15
      rats.py

4
engine/sdl2.py

@ -23,6 +23,7 @@ class GameWindow:
self.factory = sdl2.ext.SpriteFactory(renderer=self.renderer) self.factory = sdl2.ext.SpriteFactory(renderer=self.renderer)
self.fonts = self.generate_fonts("assets/AmaticSC-Regular.ttf") self.fonts = self.generate_fonts("assets/AmaticSC-Regular.ttf")
self.running = True self.running = True
self.key_callback = key_callback
def generate_fonts(self,font_file): def generate_fonts(self,font_file):
fonts = {} fonts = {}
@ -87,6 +88,9 @@ class GameWindow:
for event in events: for event in events:
if event.type == sdl2.SDL_QUIT: if event.type == sdl2.SDL_QUIT:
self.running = False self.running = False
elif event.type == sdl2.SDL_KEYDOWN and self.key_callback:
key = sdl2.SDL_GetKeyName(event.key.keysym.sym).decode('utf-8')
self.key_callback(key)
# Disegna qui gli sprite # Disegna qui gli sprite
self.renderer.present() self.renderer.present()
sdl2.SDL_Delay(self.delay) sdl2.SDL_Delay(self.delay)

15
rats.py

@ -62,17 +62,18 @@ class MiceMaze:
self.draw_maze() self.draw_maze()
self.engine.mainloop(update=self.update_maze, bg_update=self.draw_maze) self.engine.mainloop(update=self.update_maze, bg_update=self.draw_maze)
def key_pressed(self, event): def key_pressed(self, key):
if event.keysym == "q": print(key)
self.engine.window.destroy() if key == "Q":
elif event.keysym == "r": self.engine.window.close()
elif key == "R":
self.new_rat() self.new_rat()
elif event.keysym == "d": elif key == "D":
if self.units: if self.units:
self.units[random.choice(list(self.units.keys()))].die() self.units[random.choice(list(self.units.keys()))].die()
elif event.keysym == "m": elif key == "M":
self.audio = not self.audio self.audio = not self.audio
elif event.keysym == "s": elif key == "S":
profiler.disable() profiler.disable()
stats = pstats.Stats(profiler).sort_stats('cumtime') stats = pstats.Stats(profiler).sort_stats('cumtime')
stats.print_stats() stats.print_stats()

Loading…
Cancel
Save