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('freesansbold.ttf', groesse) 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: Solo pong") uhr = pygame.time.Clock() fensterdimensionen = (fensterbreite, fensterhoehe) fenster = pygame.display.set_mode(fensterdimensionen) paddledimensionen = (paddlebreite, paddlehoehe) paddlestartposition = ((fensterbreite - paddlebreite) // 2, fensterhoehe - paddlehoehe) paddle = pygame.Rect(paddlestartposition, paddledimensionen) pygame.draw.rect(surface=fenster, color="green", rect=paddle) paddlebewegung = [0, 0] ball = neuerball() ballrichtung = [1, -1] while True: # game loop for ereignis in pygame.event.get(): if ereignis.type == pygame.QUIT: exit() elif ereignis.type == pygame.KEYDOWN: # Taste gedrückt if ereignis.key == pygame.K_q: # Taste 'q' exit() if ereignis.key == pygame.K_RIGHT: # Pfeiltaste nach rechts paddlebewegung[0] = paddlebewegung[0] + 1 if ereignis.key == pygame.K_LEFT: # Pfeiltaste nach links paddlebewegung[0] = paddlebewegung[0] - 1 elif ereignis.type == pygame.KEYUP: # Taste losgelassen if ereignis.key == pygame.K_RIGHT: # Pfeiltaste nach rechts paddlebewegung[0] = paddlebewegung[0] - 1 if ereignis.key == pygame.K_LEFT: # Pfeiltaste nach links paddlebewegung[0] = paddlebewegung[0] + 1 fenster.fill("black") neuespaddle = paddle.move(paddlebewegung) if 0 <= neuespaddle.left and neuespaddle.right <= fensterbreite: paddle = neuespaddle ball = ball.move(ballrichtung) if ball.top <= 0: punkte = punkte + 1 ballrichtung[1] = - ballrichtung[1] if ball.bottom >= fensterhoehe - paddlehoehe: if paddle.right >= ball.left and ball.right >= paddle.left: ballrichtung[1] = - ballrichtung[1] else: leben = leben - 1 if leben <= 0: schreibe("Leben: " + str(leben), fensterbreite // 2, 32) schreibe("GAME OVER", fensterbreite // 2, fensterhoehe // 2, farbe = "red", groesse=200) pygame.display.flip() pygame.time.delay(2000) print("game over") exit() else: ball = neuerball() ballrichtung = [1, -1] if ball.left <= 0 or ball.right >= fensterbreite: ballrichtung[0] = - ballrichtung[0] schreibe("Leben: " + str(leben), fensterbreite // 2, 32) schreibe("Punkte: " + str(punkte), fensterbreite // 2, 64) pygame.draw.rect(surface=fenster, color="green", rect=paddle) pygame.draw.circle(surface=fenster, color="red", center=ball.center, radius=ballradius) uhr.tick(400) # maximal 400 frames pro Sekunde (framerate) # je höher die Zahl, desto schneller das Spiel pygame.display.flip()