From 880dc09610d46db6fc2f5afca73bdeaa101f2679 Mon Sep 17 00:00:00 2001 From: Timofejs Maksimovs Date: Mon, 5 Feb 2024 08:44:46 +0000 Subject: [PATCH] Upload files to "Game_1" --- Game_1/main.py | 126 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 Game_1/main.py diff --git a/Game_1/main.py b/Game_1/main.py new file mode 100644 index 0000000..dfbce8a --- /dev/null +++ b/Game_1/main.py @@ -0,0 +1,126 @@ +import pygame + +pygame.init() + + +class Wall(pygame.sprite.Sprite): + def __init__(self, size, pos) -> None: + super().__init__() + self.image = pygame.surface.Surface(size) + self.image.fill("red") + self.rect = self.image.get_rect(center=pos) + +def create_floor(file_name): + floor = [] + with open (file_name) as f: + lines = f.readlines() + for i, line in enumerate(lines[::2]): + if floor == "#": + floor.append(Floor((30,30), (30 + 30*i))) + return floor + + +def create_walls(file_name): + walls = [] + with open(file_name) as f: + lines = f.readlines() + for i, line in enumerate(lines[::2]): + for j, floor in enumerate(line[1::2]): + if floor == "|": + walls.append(Wall((5, 30), (15 + 30*j, 30*i))) + for i, line in enumerate(lines[1::2]): + for j, floor in enumerate(line[::2]): + if floor == "-": + walls.append(Wall((30, 5), (30*j, 15 + 30*i))) + + return walls + + + +screen = pygame.display.set_mode((1920, 1015)) +pygame.display.set_caption("Game_name") + +clock = pygame.time.Clock() +dt = 0 + +player_pos = pygame.Vector2(screen.get_width() / 2, screen.get_height() / 2) + +floor_image = pygame.transform.scale(pygame.image.load("Floor.png").convert_alpha(), (30, 30)) + +#class Player(pygame.sprite.Sprite): + #def __init__(self, size, pos, walls) + +player = pygame.transform.scale(pygame.image.load("Player.png").convert_alpha(), (25, 30)) + +running = True + +wall_list = create_walls("lvl.txt") +for wall in wall_list: + print(f'{wall.rect.size})x = {wall.rect.x}; y = {wall.rect.y}') +walls = pygame.sprite.Group(*wall_list) + +floor_list = create_floor("lvl.txt") +for floor in floor_list: + print(f'{floor.rect.size})x = {floor.rect.x}; y = {floor.rect.y}') +floor = pygame.sprite.Group(*floor_list) + +while running: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + + screen.fill("cyan") + for y in range(10,20): + for x in range(26,38): + screen.blit(floor_image, (30*x, 30*y)) + screen.blit(player, (player_pos.x, player_pos.y)) + + keys = pygame.key.get_pressed() + if keys[pygame.K_w]: + player_pos.y -= 200 * dt + if keys[pygame.K_s]: + player_pos.y += 200 * dt + if keys[pygame.K_a]: + player_pos.x -= 200 * dt + if keys[pygame.K_d]: + player_pos.x += 200 * dt + + walls.draw(screen) + pygame.display.flip() + + dt = clock.tick(60)/1000 + + floor.draw(screen) + + + + + class Camera: + def __init__(self, player, size=(400, 300)): + self.player = player + self.center = pygame.display.get_surface().get_rect().center + self.size = size + self.player_size = self.player.rect.size + self.speed_x = 0 + self.speed_y = 0 + + def update(self, dt, sprites): + x_move = abs(self.player.rect.centerx - self.center[0]) > self.size[0] // 2 + y_move = abs(self.player.rect.centery - self.center[1]) > self.size[1] // 2 + if x_move or y_move: + for sprite in sprites: + if x_move: + self.speed_x = (self.player.rect.centerx - self.center[0]) * 2 * dt + sprite.rect.x -= self.speed_x + if y_move: + self.speed_y = (self.player.rect.centery - self.center[1]) * 2 * dt + sprite.rect.y -= self.speed_y + + + + + + + + +pygame.quit()