|
|
|
@ -3,29 +3,15 @@ import settings
|
|
|
|
from player import Player
|
|
|
|
from player import Player
|
|
|
|
from obstacle import Obstacle
|
|
|
|
from obstacle import Obstacle
|
|
|
|
import random
|
|
|
|
import random
|
|
|
|
from item import Item
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class World:
|
|
|
|
class World:
|
|
|
|
def __init__(self, screen):
|
|
|
|
def __init__(self, screen):
|
|
|
|
# Hindernisse
|
|
|
|
# Hindernisse
|
|
|
|
self.obstacles = []
|
|
|
|
self.obstacles = []
|
|
|
|
|
|
|
|
obstacle_count = random.randint(2, 3)
|
|
|
|
while len(self.obstacles) < settings.world.obstacle.amount:
|
|
|
|
for _ in range(obstacle_count):
|
|
|
|
x = random.randint(500, 12500)
|
|
|
|
x = random.randint(500, 4000) # X-Position irgendwo in der Welt
|
|
|
|
# Prüfen, ob der neue x weit genug entfernt ist von bestehenden Hindernissen
|
|
|
|
self.obstacles.append(Obstacle(x, 520, settings.world.obstacle.box))
|
|
|
|
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 = []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
# Welt Generierung
|
|
|
|
self.screen = screen
|
|
|
|
self.screen = screen
|
|
|
|
@ -45,19 +31,12 @@ class World:
|
|
|
|
# Spieler
|
|
|
|
# Spieler
|
|
|
|
self.player = Player(200, 500) # Spieler
|
|
|
|
self.player = Player(200, 500) # Spieler
|
|
|
|
|
|
|
|
|
|
|
|
# SCORE
|
|
|
|
|
|
|
|
self.save_score = 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def draw(self):
|
|
|
|
def draw(self):
|
|
|
|
self.screen.fill((0, 0, 0)) # Bildschirm löschen, bevor gezeichnet wird
|
|
|
|
self.screen.fill((0, 0, 0)) # Bildschirm löschen, bevor gezeichnet wird
|
|
|
|
camera_offset = self.player.rect.centerx - settings.SCREEN_WIDTH // 2
|
|
|
|
camera_offset = self.player.rect.centerx - settings.SCREEN_WIDTH // 2
|
|
|
|
world_width = max(self.bg_width, max([obs.rect.right for obs in self.obstacles] + [self.ground_rect.right]))
|
|
|
|
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))
|
|
|
|
camera_offset = max(0, min(camera_offset, world_width - settings.SCREEN_WIDTH))
|
|
|
|
score = self.player.update(self.ground_rect.top, self.obstacles, self.items)
|
|
|
|
self.player.update(self.ground_rect.top, self.obstacles)
|
|
|
|
# print(score)
|
|
|
|
|
|
|
|
if score != 0:
|
|
|
|
|
|
|
|
self.save_score += 10
|
|
|
|
|
|
|
|
print(self.save_score) if settings.DEBUG else None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bg_offset = int(camera_offset * 0.3) # Parallax: langsamer bewegen
|
|
|
|
bg_offset = int(camera_offset * 0.3) # Parallax: langsamer bewegen
|
|
|
|
self.screen.blit(self.background, (-bg_offset, 0))
|
|
|
|
self.screen.blit(self.background, (-bg_offset, 0))
|
|
|
|
@ -73,9 +52,6 @@ class World:
|
|
|
|
for obs in self.obstacles:
|
|
|
|
for obs in self.obstacles:
|
|
|
|
obs.draw(self.screen, camera_offset)
|
|
|
|
obs.draw(self.screen, camera_offset)
|
|
|
|
|
|
|
|
|
|
|
|
for items in self.items:
|
|
|
|
|
|
|
|
items.draw(self.screen, camera_offset)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
player_screen_x = self.player.rect.x - camera_offset
|
|
|
|
player_screen_x = self.player.rect.x - camera_offset
|
|
|
|
self.screen.blit(self.player.image, (player_screen_x, self.player.rect.y))
|
|
|
|
self.screen.blit(self.player.image, (player_screen_x, self.player.rect.y))
|
|
|
|
|
|
|
|
|
|
|
|
|