Upload files to "25.02.2024."
parent
f95634f349
commit
8f12c5a1af
|
@ -0,0 +1,94 @@
|
||||||
|
import pygame
|
||||||
|
import random
|
||||||
|
|
||||||
|
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 = 15
|
||||||
|
enemy_size = 15
|
||||||
|
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()
|
|
@ -0,0 +1,44 @@
|
||||||
|
import pygame
|
||||||
|
import sys
|
||||||
|
|
||||||
|
pygame.init()
|
||||||
|
|
||||||
|
width, height = 1900, 1000
|
||||||
|
screen = pygame.display.set_mode((width, height))
|
||||||
|
pygame.display.set_caption('Labirints')
|
||||||
|
|
||||||
|
BLACK = (0, 0, 0)
|
||||||
|
BLUE = (0, 0, 255)
|
||||||
|
|
||||||
|
maze = [
|
||||||
|
"############################################################",
|
||||||
|
"#.....###########.....###########........#####.............#",
|
||||||
|
"#.###..#####.......##############.........##......###......#",
|
||||||
|
"#........####..............................##.#####.......##",
|
||||||
|
"######.####.##.############################...##############",
|
||||||
|
"#......#...........###..........#######................#...#",
|
||||||
|
"#.##########.........................................##.##.#",
|
||||||
|
"#.......########################################.....#.....#",
|
||||||
|
"####..........##..........###..................#########..##",
|
||||||
|
"#....###........................................###......###",
|
||||||
|
"############################################################"
|
||||||
|
]
|
||||||
|
|
||||||
|
def draw_maze(maze):
|
||||||
|
for y, row in enumerate(maze):
|
||||||
|
for x, char in enumerate(row):
|
||||||
|
if char == '#':
|
||||||
|
pygame.draw.rect(screen, BLUE, (x*32, y*32, 32, 32))
|
||||||
|
|
||||||
|
running = True
|
||||||
|
while running:
|
||||||
|
for event in pygame.event.get():
|
||||||
|
if event.type == pygame.QUIT:
|
||||||
|
running = False
|
||||||
|
|
||||||
|
screen.fill(BLACK)
|
||||||
|
draw_maze(maze)
|
||||||
|
pygame.display.flip()
|
||||||
|
|
||||||
|
pygame.quit()
|
||||||
|
sys.exit()
|
Loading…
Reference in New Issue