import pygame import random fensterbreite = 1000 fensterhoehe = 600 paddlebreite = 200 paddlehoehe = 20 ballradius = 20 leben = 3 punkte = 0 def neuerball(): ballmittelpunkt = [random.randrange(ballradius, fensterbreite - ballradius), fensterhoehe - paddlehoehe - ballradius] return pygame.draw.circle(surface=fenster, color="red", center=ballmittelpunkt, radius=ballradius) def schreibe(s, x, y, farbe = "white", groesse = 32): font = pygame.font.Font(None, groesse) text = font.render(s, True, farbe, "black") text_rechteck = text.get_rect() text_rechteck.center = (x, y) fenster.blit(text, text_rechteck) pygame.init() pygame.display.set_caption("My first game: Pong Solo") uhr = pygame.time.Clock() fensterdimensionen = (fensterbreite, fensterhoehe) fenster = pygame.display.set_mode(fensterdimensionen) paddledimensionen = (paddlebreite, paddlehoehe) paddlestartposition = (fensterbreite // 2 - paddlebreite // 2, fensterhoehe - paddlehoehe) paddle = pygame.Rect(paddlestartposition, paddledimensionen) paddlegeschwindigkeit = [0, 0] ball = neuerball() ballgeschwindigkeit = [1, -1] while True: # game loop for ereignis in pygame.event.get(): # Schleife über alle events (z.B. Tastendrücke) if ereignis.type == pygame.QUIT: exit() elif ereignis.type == pygame.KEYDOWN: # Taste wurde gedrückt if ereignis.key == pygame.K_q: exit() if ereignis.key == pygame.K_RIGHT: paddlegeschwindigkeit[0] = paddlegeschwindigkeit[0] + 1 # x-Komponente des Geschwindigkeitsvektors wird um eins erhöht if ereignis.key == pygame.K_LEFT: paddlegeschwindigkeit[0] = paddlegeschwindigkeit[0] - 1 elif ereignis.type == pygame.KEYUP: # Taste wurde losgelassen if ereignis.key == pygame.K_RIGHT: paddlegeschwindigkeit[0] = paddlegeschwindigkeit[0] - 1 # x-Komponente des Geschwindigkeitsvektors wird um eins erhöht if ereignis.key == pygame.K_LEFT: paddlegeschwindigkeit[0] = paddlegeschwindigkeit[0] + 1 fenster.fill("black") neuespaddle = paddle.move(paddlegeschwindigkeit) if 0 <= neuespaddle.left and neuespaddle.right <= fensterbreite: paddle = neuespaddle ball = ball.move(ballgeschwindigkeit) print(ball.bottom) print(fensterhoehe - paddlehoehe) print(ball.bottom >= fensterhoehe - paddlehoehe) if ball.top <= 0: punkte = punkte + 1 ballgeschwindigkeit[1] = - ballgeschwindigkeit[1] if ball.bottom >= fensterhoehe - paddlehoehe: if paddle.left <= ball.right and ball.left <= paddle.right: ballgeschwindigkeit[1] = - ballgeschwindigkeit[1] else: leben = leben - 1 if leben <= 0: schreibe("Leben: " + str(leben), fensterbreite // 2, 40) schreibe("Punkte: " + str(punkte), fensterbreite // 2, 70) schreibe("GAME OVER", fensterbreite // 2, fensterhoehe // 2, farbe ="red", groesse = 100) pygame.display.flip() pygame.time.delay(2000) exit() else: ball = neuerball() ballgeschwindigkeit = [1, -1] if ball.right >= fensterbreite or ball.left <= 0: ballgeschwindigkeit[0] = - ballgeschwindigkeit[0] schreibe("Leben: " + str(leben), fensterbreite // 2, 40) schreibe("Punkte: " + str(punkte), fensterbreite // 2, 70) pygame.draw.circle(surface=fenster, color="red", center=ball.center, radius=ballradius) pygame.draw.rect(surface=fenster, color="green", rect=paddle) uhr.tick(400) # maximale frame rate = maximale Anzahl von Spielzyklen pro Sekunde # je höher diese Zahl, desto schneller das Spiel pygame.display.flip()