From fa969b92b1b8375ff4086acde698bb065531dc01 Mon Sep 17 00:00:00 2001 From: Timofejs Maksimovs Date: Sun, 3 Mar 2024 14:36:47 +0000 Subject: [PATCH] map addition Browsing map textures, character is yet static --- FD_Dungeon_Free.png | Bin 0 -> 31574 bytes FD_Dungeon_Free.tsx | 4 + level1.tmx | 17 +++ tiles.png | Bin 0 -> 17900 bytes try.py | 346 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 367 insertions(+) create mode 100644 FD_Dungeon_Free.png create mode 100644 FD_Dungeon_Free.tsx create mode 100644 level1.tmx create mode 100644 tiles.png create mode 100644 try.py diff --git a/FD_Dungeon_Free.png b/FD_Dungeon_Free.png new file mode 100644 index 0000000000000000000000000000000000000000..64705c3249dd40500e147afe68a25c7951f6e104 GIT binary patch literal 31574 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 z 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 JsfNw7{{x&i^UweQ literal 0 HcmV?d00001 diff --git a/FD_Dungeon_Free.tsx b/FD_Dungeon_Free.tsx new file mode 100644 index 0000000..f747c12 --- /dev/null +++ b/FD_Dungeon_Free.tsx @@ -0,0 +1,4 @@ + + + + diff --git a/level1.tmx b/level1.tmx new file mode 100644 index 0000000..7b0475e --- /dev/null +++ b/level1.tmx @@ -0,0 +1,17 @@ + + + + + + + + + eJzdlMlOAkEQhnv04pOg7waMskjCye0IKIIYPbkdBxLjC7g9iNvBx9BqqT8UZU9PE0AJf/JRQzumv1R1Y8zyJ/8He/SIruJcvVMk+sSAnYpcB+I5KxVmWzxLalx14HSiXGUa7GBpcS0oRyTN1e5dJerCp85rFX6up/idCa9Th1/fjPo2YF/4NZR/RbyL3mxEIz9ZXbj8JGvRkDw/V8XemGUinBMz3scW7wM/64bZoWfaqW6y54tzBz+L3aPH+3e5NrlfTSZhGlwxfx14yP7VzPh8XX5ytjiHrvkm3KNE9KnFa33h2nfsAT/XnYAX7o2O7F3a/cC9QO9aZtQr+KEWTVikE+5Gmh/uBHqpf19wD+DXCHTI8rOzXadzFBv/+cNM4ddzvIf+FGbgJv1idkQ/Fy0lM3ScR0J/w3xZZL+YKc1e7SfaKxY1Fw3PU6yQKbNb2fG3efhV2Avn3gLHXPR/fkcme76uOcbC0ee3Q+wSe8Q+cTChn6UT4KcdsJbVvwvikrgirombQD/kk/FF90/2LsvvnnggHokn4nlCvzZxF+AXq+9lMz7fzZT/fSFeiTfinfiY0O+W8aVkxvtXZp+QGX/ZD7pfEbFCrEaT+R2a4fnzBfPVPnItrX/TxLq1RfX5adDTkDsSmo7wkWCtI9Z8PdWus/LTbh3z21X6pgU+dqZyxtNG7+/zzOpfyVGnjfZwzVq+4wuctphZ+qV5HZuw+c4rvjPn8l7WfANTI/Ja + + + + + eJy1V71OG0EQvj3XIZKxcbo8AURCCUfBA6SARCJnSOEHoIFIgSh1JFK4SNIEUUdKCj8Ej8IDpDU/aTODb/Dcp53dxXd80iff3c7uffvt3sx6Jc+yqcuyK4PXxJVIjC/ex9QxnkG/LnHZYD8hBuOnhlZrjD2438zrfbnfT4Oib52YglcUV1Tv4esNxUKNsd3Jsp1Ove9W1f5evVf0hd6HYzOe0PyWiE9d/fmQ4vbz+fWe4j6MsQX3I3XfU/pC3gyNsVdJ1xrxhfP3S8Eo8N5eon8WdkjXG+LbBvpCSPXPwiHpOiJ+iOi7ofZ3+YyDKhbXVUPaUv3j8W+J/0DHN7r/TvwR0Md9S48PoXUdefSF/JO4QYLH8k3K70vIY7v53MuYnz7/Tin+q/PHWfr0+iFL0Idcd3XPLH3i32+K/wP6xAOeO6+xzlusLaX2WNwN7A3tPfpueYBxZR6uK72ANuZH1u/m6yxzvnVx71PJ+p5X45edGRn8jHN7zNsu/X5W+rhPzPeHkPdGCXVKMAx4e183Scu5q/eJ+f5QfYtA9A088xu26N8itQf1aYxdu/pC/vWdP9+JPv728dwxeQR9/C3gGvEzzM8F6JNvH/GJ4notaeScg/XPyhGoz7f3GGc8txY9xH3UN2IKyCN6bW9gjm3qw31k5bAC8og+U4qfjLs82kAf1jQ5zwvkbI/5WOtDoJ9N/MOahmdr8QdrXUgf+tnEP8l5vzy6BK9V299KH9fbY8VBQG9T/2I4gBjMNdY4Y6nlDfVpfy4Dei+qNl9NFX1j5ePEteMf+hODzz85U04869zG/mN8MXRO6flVPtt7ln+iUerfsaqHJw306Zqr87+c/5hd4rJq8/n3WAydtxf9L2LxP5gQxag= + + + diff --git a/tiles.png b/tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..c2c1a3f5b516fc12c3304106172c774d35988344 GIT binary patch literal 17900 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 0: + self.target_health -= amount + if self.target_health <= 0: + self.target_health = 0 + + def get_health(self, amount): + if self.target_health < self.maximum_health: + self.target_health += amount + if self.target_health >= self.maximum_health: + self.target_health = self.maximum_health + + def health_bar(self): + self.current_health += (self.target_health - self.current_health) / 10 + + # If self.current_health < self.target_health + transition_colour = (0, 255, 0) + health_bar_width = self.current_health / self.health_ratio + transition_bar_width = self.target_health / self.health_ratio + + if self.current_health > self.target_health: + health_bar_width = self.target_health / self.health_ratio + transition_bar_width = self.current_health / self.health_ratio + transition_colour = (255, 255, 0) + + health_bar_rect = pygame.Rect(10, 45, health_bar_width, 25) + transition_bar_rect = pygame.Rect(10, 45, transition_bar_width, 25) + + pygame.draw.rect(screen, transition_colour, transition_bar_rect) + pygame.draw.rect(screen, (255, 0, 0), health_bar_rect) + pygame.draw.rect(screen, (255, 255, 255), (10, 45, self.health_bar_length, 25), 4) + + def input(self): + keys = pygame.key.get_pressed() + speed_multiplier_x = 0 + speed_multiplier_y = 0 + + if self.direction.x > 0: + self.image_direction = 1 + elif self.direction.x < 0: + self.image_direction = -1 + + if keys[pygame.K_w]: + speed_multiplier_y = -1 + elif keys[pygame.K_s]: + speed_multiplier_y = 1 + + if keys[pygame.K_a]: + speed_multiplier_x = -1 + elif keys[pygame.K_d]: + speed_multiplier_x = 1 + + self.direction.y = (keys[pygame.K_s]) - (keys[pygame.K_w]) + self.direction.x = (keys[pygame.K_d]) - (keys[pygame.K_a]) + + if self.direction.x != 0 and self.direction.y != 0: + self.direction.normalize_ip() + + self.direction.x *= self.speed + self.direction.y *= self.speed + + if pygame.mouse.get_pressed()[0] and self.can_shoot: + direction = -(pygame.math.Vector2(self.rect.topleft) - pygame.mouse.get_pos() - camera_group.offset) + direction = pygame.math.Vector2.normalize(direction) + new_projectile = Projectile(self.rect.center, direction, camera_group) + self.can_shoot = False + self.shoot_cooldown = pygame.time.get_ticks() + + def update(self): + self.input() + self.health_bar() + self.rect.center += self.direction * self.speed + + now = pygame.time.get_ticks() + if now - self.shoot_cooldown > self.shoot_cooldown_time: + self.can_shoot = True + + if now - self.animation_timer > 50: + if pygame.Vector2.length(self.direction) == 0: + self.image = self.idle_image + self.current_sprite = 0 + else: + self.animation_timer = pygame.time.get_ticks() + self.current_sprite += 1 + if self.current_sprite > len(self.running_sprites) - 1: + self.current_sprite = 0 + self.image = self.running_sprites[self.current_sprite] + + +class Projectile(pygame.sprite.Sprite): + def __init__(self, pos, direction, group): + super().__init__(group) + self.image = pygame.image.load("Sprites/bullet.png").convert_alpha() + self.image_direction = 1 + + self.direction = direction + self.speed = 15 + angle = math.degrees(math.atan2(-self.direction.y, self.direction.x)) + + self.image = pygame.transform.rotate(self.image, angle) + self.rect = self.image.get_rect(center=pos) + self.rect.center += self.direction * 50 + + self.life_timer = 10000 # Milliseconds + self.spawned_time = pygame.time.get_ticks() + + def collision(self): + for enemy in enemies: + distance = pygame.math.Vector2.length(pygame.math.Vector2(enemy.rect.center) - self.rect.center) + if distance < 20: + enemy.damage(1) + self.kill() + break + + def update(self): + self.rect.center += self.direction * self.speed + self.collision() + + now = pygame.time.get_ticks() + if now - self.spawned_time > self.life_timer: + self.kill() + +class Arm(pygame.sprite.Sprite): + def __init__(self, pos, group): + super().__init__(group) + self.base_image = pygame.image.load("Sprites/minigun.png").convert_alpha() + self.base_image = pygame.transform.scale(self.base_image, (40, 15)) + + self.image_direction = 1 + + self.direction = pygame.Vector2(0, 0) + self.speed = 10 + angle = math.degrees(math.atan2(-self.direction.y, self.direction.x)) + self.image = pygame.transform.rotate(self.base_image, angle) + self.rect = self.image.get_rect(center = pos) + + def update(self): + self.rect.center = player.rect.center + self.direction = -(pygame.math.Vector2(self.rect.topleft) - pygame.mouse.get_pos() - camera_group.offset) + self.direction = pygame.math.Vector2.normalize(self.direction) + angle = math.degrees(math.atan2(-self.direction.y, self.direction.x)) + if(abs(angle)<90): + self.image_direction = 1 + else: + self.image_direction = -1 + self.rect.center -= pygame.Vector2(math.sin(math.radians(angle-90))*20, math.cos(math.radians(angle-90))*20) + if(abs(angle)>90): + angle = math.degrees(math.atan2(self.direction.y, self.direction.x))+180 + self.image = pygame.transform.rotate(self.base_image, angle) + + +class Enemy(pygame.sprite.Sprite): + def __init__(self, pos, group): + super().__init__(group) + self.image = pygame.surface.Surface((20, 20)) + self.image.fill("red") + self.rect = self.image.get_rect(center=pos) + self.pos = self.rect.center + self.direction = pygame.math.Vector2() + self.speed = 2 + self.health = 2 + + self.image_direction = 1 + + def damage(self, damage): + self.health -= 1 + if self.health <= 0: + enemies.remove(self) + self.kill() + + def update(self): + self.direction = pygame.math.Vector2(player.rect.center) - self.rect.center + if pygame.math.Vector2.length(self.direction) < 20: + player.get_damage(200) + self.kill() + enemies.remove(self) + player.time = 0 + self.pos += self.direction.normalize() * self.speed + self.rect.center = (round(self.pos.x), round(self.pos.y)) + + +class CameraGroup(pygame.sprite.Group): + def __init__(self): + super().__init__() + self.display_surface = pygame.display.get_surface() + + self.offset = pygame.math.Vector2(300, 100) + self.half_w = self.display_surface.get_size()[0] // 2 + self.half_h = self.display_surface.get_size()[1] // 2 + + def center_target_camera(self, target): + self.offset.x = target.rect.centerx - self.half_w + self.offset.y = target.rect.centery - self.half_h + + def custom_draw(self, player): + self.center_target_camera(player) + + for sprite in sorted(self.sprites(), key=lambda sprite: sprite.rect.centery): + offset_pos = sprite.rect.topleft - self.offset + if sprite.image_direction == -1: + self.display_surface.blit(pygame.transform.flip(sprite.image, True, False), offset_pos) + else: + self.display_surface.blit(sprite.image, offset_pos) + + +class Game: + def __init__(self): + self.overlay = pygame.image.load("overlay.png") + self.currentLevelNumber = 0 + self.levels = [] + self.levels.append(Level(fileName="level1.tmx")) + self.currentLevel = self.levels[self.currentLevelNumber] + + def draw(self, screen): + screen.fill(BACKGROUND) + self.currentLevel.draw(screen) + screen.blit(self.overlay, [0, 0]) + pygame.display.flip() + + +class Level: + def __init__(self, fileName): + self.mapObject = pytmx.load_pygame(fileName) + self.layers = [] + for layer in range(len(self.mapObject.layers)): + self.layers.append(Layer(index=layer, mapObject=self.mapObject)) + + def draw(self, screen): + for layer in self.layers: + layer.draw(screen) + + +class Layer: + def __init__(self, index, mapObject): + self.index = index + self.tiles = pygame.sprite.Group() + self.mapObject = mapObject + for x in range(self.mapObject.width): + for y in range(self.mapObject.height): + img = self.mapObject.get_tile_image(x, y, self.index) + if img: + self.tiles.add(Tile(image=img, x=(x * self.mapObject.tilewidth), y=(y * self.mapObject.tileheight))) + + def draw(self, screen): + self.tiles.draw(screen) + + +class Tile(pygame.sprite.Sprite): + def __init__(self, image, x, y): + pygame.sprite.Sprite.__init__(self) + self.image = image + self.rect = self.image.get_rect() + self.rect.x = x + self.rect.y = y + + +def spawn_enemy(): + if len(enemies) < 20: + random_x = randint(-1000, 1000) + random_y = randint(-1000, 1000) + enemies.append(Enemy((player.rect.centerx + random_x, player.rect.centery + random_y), camera_group)) + + +# Main game setup +game = Game() +camera_group = CameraGroup() +player = Player((500, 500), camera_group) +Arm((0, 0), camera_group) +enemies = [] # Define enemies list here +pygame.time.set_timer(pygame.USEREVENT + 1, 100) # Event for spawning enemies + + +# Main game loop +while running: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_UP: + player.get_health(200) + elif event.key == pygame.K_DOWN: + player.get_damage(200) + + if player.time > 3: + if player.current_health < 999: + player.get_health(200) + player.time -= 1.5 + + screen.fill(BACKGROUND) + game.draw(screen) + camera_group.update() + camera_group.custom_draw(player) + pygame.display.flip() + clock.tick(60) + player.time += 0.016