更新 menu

main
Vincents Xun 2024-04-26 07:11:44 +00:00
parent dd1fdeb21e
commit d3b7812236
1 changed files with 42 additions and 0 deletions

42
menu
View File

@ -98,6 +98,45 @@ class Cheese(pygame.sprite.Sprite):
self.rect = self.image.get_rect()
self.rect.topleft = (x, y)
class Villain(pygame.sprite.Sprite):
def __init__(self, x, y, player):
super().__init__()
self.image = pygame.image.load('villain.png').convert_alpha()
self.rect = self.image.get_rect()
self.rect.topleft = (x, y)
self.speed = 8
self.player = player
def move_towards_player(self, walls):
dx = self.player.rect.x - self.rect.x
dy = self.player.rect.y - self.rect.y
distance = max(abs(dx), abs(dy))
dx = dx / distance if distance != 0 else 0
dy = dy / distance if distance != 0 else 0
dx *= self.speed
dy *= self.speed
self.move(dx, dy, walls)
def move(self, dx, dy, walls):
old_rect = self.rect.copy()
self.rect.x += dx
self.rect.y += dy
for wall in walls:
if self.rect.colliderect(wall):
if dx > 0:
self.rect.right = wall.left
elif dx < 0:
self.rect.left = wall.right
elif dy > 0:
self.rect.bottom = wall.top
elif dy < 0:
self.rect.top = wall.bottom
if self.rect.collidelist(walls) != -1:
self.rect = old_rect
def draw(self, surface):
surface.blit(self.image, self.rect)
def draw_maze(maze):
walls = []
roads = [] # 存储道路的矩形列表
@ -111,6 +150,9 @@ def draw_maze(maze):
elif char == 'C': # Cheese
roads.append(pygame.Rect(x * 32, y * 32, 32, 32))
screen.blit(pygame.image.load('cheese.png'), (x * 32, y * 32))
elif char == 'V': # Villain
roads.append(pygame.Rect(x * 32, y * 32, 32, 32))
screen.blit(pygame.image.load('villain.png'), (x * 32, y * 32))
return walls, roads
def draw_menu():