Aggiungi la classe Point e implementa la gestione delle esplosioni nel gioco
This commit is contained in:
+4
-1
@@ -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
@@ -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
|
||||
Reference in New Issue
Block a user