Browse Source

Aggiorna la gestione della finestra di gioco, modifica la dimensione e il ritardo di rendering, e cambia il suono della bomba

master
Matteo Benedetto 1 year ago
parent
commit
0c47d52bbc
  1. 26
      engine/sdl2.py
  2. 2
      rats.py
  3. 2
      sdl2-demo.py

26
engine/sdl2.py

@ -11,14 +11,20 @@ class GameWindow:
self.cell_size = cell_size
self.width = width * cell_size
self.height = height * cell_size
self.target_size = (640, 480)
self.actual_screen_size = (640, 480)
if self.width > self.actual_screen_size[0] or self.height > self.actual_screen_size[1]:
self.target_size = self.actual_screen_size
else:
self.target_size = (self.width, self.height)
self.w_start_offset = (self.target_size[0] - self.width) // 2
self.h_start_offset = (self.target_size[1] - self.height) // 2
self.w_offset = self.w_start_offset
self.h_offset = self.h_start_offset
self.max_w_offset = self.target_size[0] - self.width
self.max_h_offset = self.target_size[1] - self.height
print(f"Screen size: {self.width}x{self.height}")
self.delay = 30
sdl2.ext.init()
sdl2.ext.init(joystick=True)
self.window = sdl2.ext.Window(title=title, size=self.target_size,)# flags=sdl2.SDL_WINDOW_FULLSCREEN)
self.window.show()
self.renderer = sdl2.ext.Renderer(self.window, flags=sdl2.SDL_RENDERER_ACCELERATED)
@ -105,8 +111,8 @@ class GameWindow:
elif event.type == sdl2.SDL_MOUSEMOTION:
self.scroll_view((event.motion.x//self.cell_size, event.motion.y//self.cell_size))
elif event.type == sdl2.SDL_JOYBUTTONDOWN:
if event.jbutton.button == 0:
self.close()
key = sdl2.SDL_JoystickGetButton(event.jbutton.which, event.jbutton.button)
self.key_callback(key)
# Disegna qui gli sprite
self.renderer.present()
@ -118,10 +124,16 @@ class GameWindow:
def scroll_view(self, pointer):
x, y = pointer
x = x//2
y = y//2
x = -x * self.cell_size
y = -y * self.cell_size
self.w_offset = x //2
if not x <= self.max_w_offset + self.cell_size:
self.w_offset = x
else:
self.w_offset = self.max_w_offset
if -y < self.height-(self.height-self.target_size[1])-self.cell_size:
self.h_offset = y //2
if not y < self.max_h_offset:
self.h_offset = y

2
rats.py

@ -99,7 +99,7 @@ class MiceMaze:
elif key == "Right":
self.scroll_cursor(x=1)
elif key == "Space":
self.play_sound("BOMB.wav")
self.play_sound("PUTDOWN.WAV")
self.spawn_bomb(self.pointer)
def scroll_cursor(self, x=0, y=0):

2
sdl2-demo.py

@ -8,7 +8,7 @@ import sdl2.ext
class Main:
def __init__(self):
sdl2.ext.init()
self.size = (640, 480)
self.size = (800, 600)
self.window = sdl2.ext.Window("PySDL2 Demo", size=self.size)
self.window.show()
self.renderer = sdl2.ext.Renderer(self.window)

Loading…
Cancel
Save