# Schritt 3: Rohre hinzufügen import pygame import sys import random # Pygame initialisieren pygame.init() # Bildschirmgröße festlegen BREITE = 400 HOEHE = 600 # Farben definieren HIMMEL_BLAU = (135, 206, 250) GELB = (255, 255, 0) ORANGE = (255, 165, 0) GRUEN = (0, 200, 0) DUNKELGRUEN = (0, 150, 0) # Fenster erstellen bildschirm = pygame.display.set_mode((BREITE, HOEHE)) pygame.display.set_caption("Flappy Bird") # Spieluhr für FPS-Kontrolle uhr = pygame.time.Clock() # Vogel-Klasse class Vogel: def __init__(self): self.x = 50 self.y = HOEHE // 2 self.radius = 20 self.geschwindigkeit_y = 0 self.schwerkraft = 0.5 self.sprungkraft = -8 def springen(self): self.geschwindigkeit_y = self.sprungkraft def bewegen(self): self.geschwindigkeit_y += self.schwerkraft self.y += self.geschwindigkeit_y if self.y < self.radius: self.y = self.radius self.geschwindigkeit_y = 0 elif self.y > HOEHE - self.radius: self.y = HOEHE - self.radius self.geschwindigkeit_y = 0 def zeichnen(self): pygame.draw.circle(bildschirm, GELB, (int(self.x), int(self.y)), self.radius) schnabel = [ (self.x + 15, self.y), (self.x + 25, self.y - 5), (self.x + 25, self.y + 5), ] pygame.draw.polygon(bildschirm, ORANGE, schnabel) pygame.draw.circle(bildschirm, (0, 0, 0), (int(self.x + 5), int(self.y - 5)), 3) # Rohr-Klasse class Rohr: def __init__(self, x): self.x = x self.breite = 60 self.luecke = 150 # Lücke zwischen oberen und unteren Rohr self.luecke_y = random.randint(150, HOEHE - 150) self.geschwindigkeit = 3 self.vorbei = False def bewegen(self): self.x -= self.geschwindigkeit def zeichnen(self): # Oberes Rohr pygame.draw.rect( bildschirm, GRUEN, (self.x, 0, self.breite, self.luecke_y - self.luecke // 2), ) pygame.draw.rect( bildschirm, DUNKELGRUEN, (self.x - 5, self.luecke_y - self.luecke // 2 - 30, self.breite + 10, 30), ) # Unteres Rohr pygame.draw.rect( bildschirm, GRUEN, (self.x, self.luecke_y + self.luecke // 2, self.breite, HOEHE), ) pygame.draw.rect( bildschirm, DUNKELGRUEN, (self.x - 5, self.luecke_y + self.luecke // 2, self.breite + 10, 30), ) def ist_ausserhalb(self): return self.x + self.breite < 0 # Vogel und Rohre erstellen vogel = Vogel() rohre = [] rohr_timer = 0 # Hauptspielschleife laeuft = True while laeuft: # Events verarbeiten for ereignis in pygame.event.get(): if ereignis.type == pygame.QUIT: laeuft = False elif ereignis.type == pygame.KEYDOWN: if ereignis.key == pygame.K_SPACE: vogel.springen() # Spiellogik vogel.bewegen() # Neue Rohre erstellen rohr_timer += 1 if rohr_timer > 90: # Alle 1.5 Sekunden ein neues Rohr rohre.append(Rohr(BREITE)) rohr_timer = 0 # Rohre bewegen und entfernen for rohr in rohre[:]: rohr.bewegen() if rohr.ist_ausserhalb(): rohre.remove(rohr) # Zeichnen bildschirm.fill(HIMMEL_BLAU) for rohr in rohre: rohr.zeichnen() vogel.zeichnen() # Bildschirm aktualisieren pygame.display.flip() uhr.tick(60) pygame.quit() sys.exit()