diff --git a/src/settings.py b/src/settings.py index 50241da..d7f57b0 100644 --- a/src/settings.py +++ b/src/settings.py @@ -3,7 +3,7 @@ SCREEN_WIDTH = 1280 SCREEN_HEIGHT = 720 FPS = 60 DEBUG = True -Mute = True +Mute = False START_POINT = "world" # world, menu BACKGROUND_IMG = "../assets/backgrounds/background.png" @@ -22,8 +22,17 @@ class player: olli = "../assets/images/player/fred_olli.png" left = "../assets/images/player/fred_back.png" -class obstacles: - box = "../assets/obstacles/box.png" +class world: + class ground: + img = "../assets/world/ground_II.png" + crop_top = 500 + crop_height = 300 + scale_height = 80 + scale_width = 300 + crop_scale_right = 1400 + + class obstacle: + box = "../assets/obstacles/box.png" # Farben class MyColors: diff --git a/src/world.py b/src/world.py index 381c0da..5bb2949 100644 --- a/src/world.py +++ b/src/world.py @@ -11,22 +11,43 @@ class World: obstacle_count = random.randint(2, 3) for _ in range(obstacle_count): x = random.randint(500, 4000) # X-Position irgendwo in der Welt - self.obstacles.append(Obstacle(x, 520, settings.obstacles.box)) + self.obstacles.append(Obstacle(x, 520, settings.world.obstacle.box)) # Welt Generierung self.screen = screen self.background = pygame.image.load(settings.BACKGROUND_IMG).convert() self.bg_width = self.background.get_width() - self.ground_rect = pygame.Rect(0, 740, 5000, 80) # Boden + + # Boden + self.ground_rect = pygame.Rect(0, 650, 5000, 80) # Boden + full_image = pygame.image.load(settings.world.ground.img).convert_alpha() + # --- Ausschneiden des Bereichs + cropped = pygame.Surface((settings.world.ground.crop_scale_right, settings.world.ground.crop_height), pygame.SRCALPHA) + cropped.blit(full_image, (0, 0), (0, settings.world.ground.crop_top, settings.world.ground.crop_scale_right, settings.world.ground.crop_height)) + # --- Skalieren für Anzeige + self.ground_image = pygame.transform.scale(cropped, (settings.world.ground.scale_width, settings.world.ground.scale_height)) + self.tile_width = self.ground_image.get_width() + + # Spieler self.player = Player(200, 500) # Spieler def draw(self): + self.screen.fill((0, 0, 0)) # Bildschirm löschen, bevor gezeichnet wird camera_offset = self.player.rect.centerx - settings.SCREEN_WIDTH // 2 - camera_offset = max(0, min(camera_offset, self.bg_width - settings.SCREEN_WIDTH)) + world_width = max(self.bg_width, max([obs.rect.right for obs in self.obstacles] + [self.ground_rect.right])) + camera_offset = max(0, min(camera_offset, world_width - settings.SCREEN_WIDTH)) self.player.update(self.ground_rect.top, self.obstacles) - self.screen.blit(self.background, (-camera_offset, 0)) - # pygame.draw.rect(self.screen, (124, 252, 0), self.ground_rect) + bg_offset = int(camera_offset * 0.5) # Parallax: langsamer bewegen + self.screen.blit(self.background, (-bg_offset, 0)) + # Boden kacheln ohne Parallax + start_tile = (camera_offset // self.tile_width) * self.tile_width + end_x = camera_offset + settings.SCREEN_WIDTH + x = start_tile + while x < end_x: + screen_x = x - camera_offset + self.screen.blit(self.ground_image, (screen_x, self.ground_rect.top)) + x += self.tile_width for obs in self.obstacles: obs.draw(self.screen, camera_offset)