From 284e58e28eaa9d30909b3de4feed6e4037b614ca Mon Sep 17 00:00:00 2001 From: Samuel Zielke Date: Sat, 26 Apr 2025 09:36:37 +0200 Subject: [PATCH] Add items with min_destination and connect to settings --- src/item.py | 6 ++---- src/settings.py | 5 ++++- src/world.py | 19 +++++++++++-------- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/item.py b/src/item.py index cba2145..6c0e8fa 100644 --- a/src/item.py +++ b/src/item.py @@ -3,13 +3,11 @@ import random import settings class Item(pygame.sprite.Sprite): - def __init__(self): + def __init__(self, x, y): super().__init__() self.image = pygame.image.load(settings.world.items.beer.img).convert_alpha() self.image = pygame.transform.scale(self.image, settings.world.items.beer.size) - self.rect = self.image.get_rect() - self.rect.x = random.randint(200, 12800) - self.rect.y = random.randint(100, 500) + self.rect = self.image.get_rect(topleft=(x, y)) print(f'create item {self.rect}') if settings.DEBUG else None def draw(self, screen, camera_offset): diff --git a/src/settings.py b/src/settings.py index 193f36c..7d73381 100644 --- a/src/settings.py +++ b/src/settings.py @@ -1,8 +1,10 @@ +import random + # Einstellungen SCREEN_WIDTH = 1280 SCREEN_HEIGHT = 720 FPS = 60 -DEBUG = True +DEBUG = False Mute = True START_POINT = "world" # world, menu BACKGROUND_IMG = "../assets/backgrounds/background_III.png" @@ -32,6 +34,7 @@ class world: crop_scale_right = 1400 class obstacle: + amount = random.randint(4, 8) box = "../assets/obstacles/box.png" class items: diff --git a/src/world.py b/src/world.py index af20d39..75dff63 100644 --- a/src/world.py +++ b/src/world.py @@ -9,20 +9,23 @@ class World: def __init__(self, screen): # Hindernisse self.obstacles = [] - obstacle_count = random.randint(4, 8) - min_distance = 800 # Mindestabstand zwischen Hindernissen - while len(self.obstacles) < obstacle_count: + while len(self.obstacles) < settings.world.obstacle.amount: x = random.randint(500, 12500) # Prüfen, ob der neue x weit genug entfernt ist von bestehenden Hindernissen - if all(abs(x - obs.rect.x) > min_distance for obs in self.obstacles): + if all(abs(x - obs.rect.x) > 800 for obs in self.obstacles): self.obstacles.append(Obstacle(x, 500, settings.world.obstacle.box)) + # ITEMS self.items = [] - for _ in range(settings.world.items.amount): # Erzeuge 5 Items - item = Item() - self.items.append(item) + + while len(self.items) < settings.world.items.amount: + x = random.randint(200, 12800) + y = random.randint(100, 500) + # Prüfen, ob der neue x weit genug entfernt ist von bestehenden Hindernissen + if all(abs(x - item.rect.x) > 200 for item in self.items): + self.items.append(Item(x, y)) # Welt Generierung self.screen = screen @@ -54,7 +57,7 @@ class World: # print(score) if score != 0: self.save_score += 10 - print(self.save_score) + print(self.save_score) if settings.DEBUG else None bg_offset = int(camera_offset * 0.3) # Parallax: langsamer bewegen self.screen.blit(self.background, (-bg_offset, 0))