diff --git a/main.py b/main.py index 135fdd6..40b9dbd 100644 --- a/main.py +++ b/main.py @@ -1,87 +1,48 @@ # code import pygame -class Player(pygame.sprite.Sprite): - def __init__(self, color, size, pos, walls): - super().__init__() - self.image = pygame.Surface(size) - self.image.fill(color) - self.rect = self.image.get_rect(center=pos) - self.foot_size = 15 - self.dt = 0 - self.weight = 2500 - self.speed_x = 0 - self.max_speed_x = 700 - self.speed_y = 0 - self.max_speed_y = 1500 - self.is_jumping = False - self.jumping_time = 0 - self.walls = walls +def load_movement_sprites(prefix, num_sprites): + sprite_list = [] + for i in range(1, num_sprites + 1): + filename = f"{prefix}{i}.png" + sprite = pygame.image.load(filename) + sprite_list.append(sprite) + return sprite_list - def gravity(self, dt): - self.speed_y += self.weight * dt - if self.speed_y > self.max_speed_y: - self.speed_y = self.max_speed_y - self.rect.y += self.speed_y * dt +# Load player and movement sprites +player_image = pygame.image.load("player.png") +forward_sprites = load_movement_sprites("forward", 5) +backward_sprites = load_movement_sprites("backward", 5) +left_sprites = load_movement_sprites("left", 5) +right_sprites = load_movement_sprites("right", 5) - def jump(self): - if not self.is_jumping: - self.is_jumping = True - self.jumping_time = 0 - self.speed_y = -1500 +class Player: + def __init__(self, x, y): + self.x = x + self.y = y + self.image = player_image + self.movement_sprites = { + 'forward': forward_sprites, + 'backward': backward_sprites, + 'left': left_sprites, + 'right': right_sprites + } + self.current_sprite_index = 0 + self.current_movement = 'forward' - def move_x(self, dt): - if abs(self.speed_x) > self.max_speed_x: - self.speed_x = self.max_speed_x * (self.speed_x / abs(self.speed_x)) + def update_position(self, dx, dy): + self.x += dx + self.y += dy - self.rect.x += self.speed_x * dt + def change_movement(self, direction): + self.current_movement = direction - def collision(self): - collisions = pygame.sprite.spritecollide(self, self.walls, False) - if collisions: - for wall in collisions: - if abs(self.rect.bottom - wall.rect.top) < self.foot_size: - self.rect.bottom = wall.rect.top - self.speed_y = 0 - self.jumping_time = 0 - self.is_jumping = False + def draw(self): + # Draw the current movement sprite at the player's position + screen.blit(self.movement_sprites[self.current_movement][self.current_sprite_index], (self.x, self.y)) - elif abs(self.rect.top - wall.rect.bottom) < self.foot_size: - self.rect.top = wall.rect.bottom - self.speed_y = 0 - - elif abs(self.rect.right - wall.rect.left) < self.foot_size: - self.rect.right = wall.rect.left - self.speed_x = 0 - elif abs(self.rect.left - wall.rect.right) < self.foot_size: - self.rect.left = wall.rect.right - self.speed_x = 0 - - def player_input(self, dt): - keys = pygame.key.get_pressed() - move_direction = 0 - if keys[pygame.K_w]: - self.jump() - elif keys[pygame.K_SPACE]: - self.jump() - if keys[pygame.K_a]: - self.speed_x -= self.max_speed_x * 3 * dt - move_direction = -1 - if keys[pygame.K_d]: - self.speed_x += self.max_speed_x * 3 * dt - move_direction = 1 + move_direction - if (move_direction == 0 or (self.speed_x * move_direction < 0)) and not self.is_jumping: - self.speed_x -= self.speed_x * 5 * dt - elif self.is_jumping: - self.speed_x -= self.speed_x * dt - if abs(self.speed_x) < 5: - self.speed_x = 0 - - def update(self, dt): - self.player_input(dt) - self.gravity(dt) - self.move_x(dt) - self.collision() +# Create a Player instance +player = Player(20 // 2, 80 // 2) class Camera: @@ -130,18 +91,19 @@ class Button: self.image = self.up_image pygame.init() - +# Настройки FPS = 60 BACKGROUND_IMAGE = "background.png" FONT, SIZE = 'comicsansms', 14 +screen_info = pygame.display.Info() # Пока-что пусть будет +screen = pygame.display.set_mode((1920, 1080), pygame.FULLSCREEN) +pygame.display.set_caption('Hell Circus') programIcon = pygame.image.load('icon.png') pygame.display.set_icon(programIcon) -pygame.display.set_caption('Hell Circus') + font = pygame.font.SysFont(FONT, SIZE) -screen_info = pygame.display.Info() -screen = pygame.display.set_mode((1920, 1080), vsync=1) -pygame.display.set_caption("Simple platformer") + clock = pygame.time.Clock() deltatime = 0 running = True