Aggiungi la classe Point e implementa la gestione delle esplosioni nel gioco

This commit is contained in:
2024-12-17 00:14:02 +01:00
parent db4cff34b0
commit acbd943b27
10 changed files with 260 additions and 24 deletions
+4 -1
View File
@@ -6,4 +6,7 @@ class Map:
with open(maze_file, 'r') as file:
self.matrix = json.load(file)
self.height = len(self.matrix)
self.width = len(self.matrix[0])
self.width = len(self.matrix[0])
def is_wall(self, x, y):
return self.matrix[y][x]
+34 -3
View File
@@ -12,8 +12,10 @@ class GameWindow:
self.width = width * cell_size
self.height = height * cell_size
self.target_size = (640, 480)
self.w_offset = (self.target_size[0] - self.width) // 2
self.h_offset = (self.target_size[1] - self.height) // 2
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
print(f"Screen size: {self.width}x{self.height}")
self.delay = 30
sdl2.ext.init()
@@ -64,7 +66,13 @@ class GameWindow:
def draw_rectangle(self, x, y, width, height, tag, outline="red"):
x, y = x + self.w_offset, y + self.h_offset
self.renderer.draw_rect((x, y, width, height), color=sdl2.ext.Color(255, 0, 0))
def draw_pointer(self, x, y):
x=x+self.w_offset
y=y+self.h_offset
for i in range(3):
self.renderer.draw_rect((x + i,y+i, self.cell_size-2*i, self.cell_size-2*i), color=sdl2.ext.Color(255, 0, 0))
def delete_tag(self, tag):
pass
@@ -77,6 +85,9 @@ class GameWindow:
def new_cycle(self, delay, callback):
pass
def full_screen(self,flag):
sdl2.SDL_SetWindowFullscreen(self.window.window, flag)
def mainloop(self, **kwargs):
while self.running:
@@ -91,6 +102,26 @@ class GameWindow:
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)
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()
# Disegna qui gli sprite
self.renderer.present()
sdl2.SDL_Delay(self.delay)
def close(self):
self.running = False
sdl2.ext.quit()
def scroll_view(self, pointer):
x, y = pointer
x = -x * self.cell_size
y = -y * self.cell_size
self.w_offset = x //2
if -y < self.height-(self.height-self.target_size[1])-self.cell_size:
self.h_offset = y //2