import pygame import random # Инициализация Pygame pygame.init() # Параметры экрана SCREEN_WIDTH = 800 SCREEN_HEIGHT = 600 screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) # Цвета WHITE = (255, 255, 255) BLACK = (0, 0, 0) RED = (255, 0, 0) PLAYER =(0, 255, 0) # Параметры игрока и преследующего объекта player_size = 20 enemy_size = 20 player_speed = 5 enemy_speed = 3 # Генерация лабиринта def generate_maze(width, height): maze = [[random.choice([0, 1]) for _ in range(width)] for _ in range(height)] maze[0][0] = 0 maze[height - 1][width - 1] = 0 return maze # Отрисовка лабиринта def draw_maze(screen, maze): for y, row in enumerate(maze): for x, block in enumerate(row): rect = pygame.Rect(x * player_size, y * player_size, player_size, player_size) if block == 1: pygame.draw.rect(screen, BLACK, rect) else: pygame.draw.rect(screen, WHITE, rect) pygame.draw.rect(screen, BLACK, rect, 1) # Проверка столкновений def is_collision(player_pos, enemy_pos, maze): p_x, p_y = int(player_pos[0] // player_size), int(player_pos[1] // player_size) e_x, e_y = int(enemy_pos[0] // player_size), int(enemy_pos[1] // player_size) if maze[p_y][p_x] or maze[e_y][e_x]: return True return False # Игровой цикл game_over = False clock = pygame.time.Clock() maze = generate_maze(SCREEN_WIDTH // player_size, SCREEN_HEIGHT // player_size) player_pos = [player_size * 2, player_size * 2] # Начальная позиция игрока enemy_pos = [player_size * 18, player_size * 18] # Начальная позиция преследующего while not game_over: for event in pygame.event.get(): if event.type == pygame.QUIT: game_over = True keys = pygame.key.get_pressed() # Управление игроком if keys[pygame.K_LEFT] and not is_collision([player_pos[0] - player_speed, player_pos[1]], enemy_pos, maze): player_pos[0] -= player_speed if keys[pygame.K_RIGHT] and not is_collision([player_pos[0] + player_speed, player_pos[1]], enemy_pos, maze): player_pos[0] += player_speed if keys[pygame.K_UP] and not is_collision([player_pos[0], player_pos[1] - player_speed], enemy_pos, maze): player_pos[1] -= player_speed if keys[pygame.K_DOWN] and not is_collision([player_pos[0], player_pos[1] + player_speed], enemy_pos, maze): player_pos[1] += player_speed # Перемещение преследующего объекта x_diff = player_pos[0] - enemy_pos[0] y_diff = player_pos[1] - enemy_pos[1] distance = (x_diff ** 2 + y_diff ** 2) ** 0.5 if distance != 0: x_diff /= distance y_diff /= distance enemy_pos[0] += x_diff * enemy_speed enemy_pos[1] += y_diff * enemy_speed # Проверка столкновений def is_collision(player_pos, enemy_pos, maze): p_x, p_y = int(player_pos[0] // player_size), int(player_pos[1] // player_size) e_x, e_y = int(enemy_pos[0] // player_size), int(enemy_pos[1] // player_size) if maze[p_y][p_x] or maze[e_y][e_x]: return True return False screen.fill(WHITE) draw_maze(screen, maze) pygame.draw.rect(screen, PLAYER, (player_pos[0], player_pos[1], player_size, player_size)) pygame.draw.rect(screen, RED, (enemy_pos[0], enemy_pos[1], enemy_size, enemy_size)) pygame.display.update() clock.tick(30) pygame.quit()