import pygame from random import randint object_position = [] object_size = () object_speed = [] size = (640, 400) sch_pos = size[0]/2 - size[0]/8 #Mittig - Hälfte der Schlägerbreite sch_speed = 0 #VArtiable zur festlegung der Position sch_base_speed = 7 #Verschiebungsgeschwindigkeit game_over = False #Festlegen wenn Game Over wuerfel = randint(1, 7) # Ganze Zufallszahl aus [1, …, 7[ def init(): global object_position global object_size, object_speed global object_image global paddle_speed object_image = pygame.image.load('ohm.png') # Initialisierung der Bibliothek pygame pygame.init() # Vorbereiten der Oberfäche pygame.display.set_mode(size) pygame.display.set_caption("Pong!") # Spieldaten initialisieren object_position = [size[0]/2, size[1]/2] object_speed = [randint(1,7), randint(1,7)] object_size = (50, 50) def draw(): # Benötigte Farben als RGB-Werte black = (0, 0, 0) red = (255, 0, 0) # Zeichnen des aktuellen Spielzustands window = pygame.display.get_surface() window.fill(black) window.blit(object_image, object_position) #Schläger Größe ans Fenster Anspassen schläger = pygame.Rect(sch_pos, size[1]-22, size[0]/4, size[1]/25) pygame.draw.rect(window, red, schläger) # und Zeichnen, mit der position schläger if game_over: font = pygame.font.SysFont(None, 60) text = font.render("GAME OVER", True, (255, 255, 255)) window.blit(text, (180, 150)) pygame.display.flip() # "Umschalten" der aktuellen Anzeige auf die # gerade gezeichnete Anzeige def update(): global object_position global object_speed global sch_pos global game_over sch_pos += sch_speed # Abmessungen des Game-Fensters ermitteln window = pygame.display.get_surface() window_size = (window.get_width(), window.get_height()) #Hier wird das erste mal die Dimensionen festgelegt, wichtig für Kollision logo_rect = pygame.Rect( object_position[0], object_position[1], object_size[0], object_size[1] ) #eigentlich kann ich den aus draw() übernehmen aber ich hab vergessen wie schläger = pygame.Rect( sch_pos, size[1]-22, size[0]/4, size[1]/25 ) #y-Richtung umdrehen if logo_rect.colliderect(schläger) and object_speed[1] > 0: object_speed[1] *= -1 #Bouncing for dim in [0, 1]: # Bewegung des Objekts object_position[dim] += object_speed[dim] # Bouncing? if object_position[dim] < 0: object_speed[dim] *= -1 end = object_position[dim] + object_size[dim] if end > window_size[dim]: object_speed[dim] *= -1 if object_position[1] + object_size[1] >= size[1]: #Position = Wert von 0 bis 400 - oben links, size[o] = 40 (oderso), wenn die zusammen gleich oder größer sind als das Window in Vertikal, berührt das Logo die untere Kante game_over = True def user_input(): global sch_speed global sch_base_speed global game_over # Alle Events seit dem letzten Durchlauf for event in pygame.event.get(): if event.type == pygame.QUIT: return False if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: return False if event.key == pygame.K_LEFT: #Linksclick sch_speed = -sch_base_speed if event.key == pygame.K_RIGHT: #Rechtsclick sch_speed = sch_base_speed if event.type == pygame.KEYUP: if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: #Key wieder hoch sch_speed = 0 return True init() running = True clock=pygame.time.Clock() while running: clock.tick(60) # max 60 frames / sec running = user_input() update() draw()