更新 menu
							parent
							
								
									dd1fdeb21e
								
							
						
					
					
						commit
						d3b7812236
					
				
							
								
								
									
										42
									
								
								menu
								
								
								
								
							
							
						
						
									
										42
									
								
								menu
								
								
								
								
							| 
						 | 
				
			
			@ -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():
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue