import pygame from pygame.locals import * import sys from random import randint # Werte für das Spiel BREITE = 700 HÖHE = 500 WEISS = 255, 255, 255 ROT = 255, 10, 24 FRAMERATE = 60 # Pygame und screen initialisieren pygame.init() screen = pygame.display.set_mode((BREITE, HÖHE)) screen.fill(WEISS) frame_per_sec = pygame.time.Clock() # Ein Bild laden ball_bild = pygame.image.load('ball.bmp') ball_rect = ball_bild.get_rect() ball_rect.center = BREITE / 2, HÖHE / 2 # Werte für den Ball nach_unten = 0 nach_rechts = 0 beschleunigung = 1 gegen_beschleu = beschleunigung * .7 lower_me = .99 # Werte für Ziel ziel_x = BREITE / 4 ziel_y = HÖHE / 4 ziel_radius = 30 ziel = pygame.draw.circle(screen, ROT, (ziel_y, ziel_x), ziel_radius) def schwerkraft_s(nach_unten, nach_rechts): if nach_unten <= 0: return nach_unten + beschleunigung, nach_rechts * lower_me else: return nach_unten + gegen_beschleu , nach_rechts * lower_me def schwerkraft_n(nach_unten, nach_rechts): if nach_unten >= 0: return nach_unten - beschleunigung, nach_rechts * lower_me else: return nach_unten - gegen_beschleu, nach_rechts * lower_me def schwerkraft_o(nach_unten, nach_rechts): if nach_rechts <= 0: return nach_unten * lower_me, nach_rechts + beschleunigung else: return nach_unten * lower_me, nach_rechts + gegen_beschleu def schwerkraft_w(nach_unten, nach_rechts): if nach_rechts >= 0: return nach_unten * lower_me, nach_rechts - beschleunigung else: return nach_unten * lower_me, nach_rechts - gegen_beschleu def flip_richtung(richtung): return richtung * -1 schwerkraft = schwerkraft_s while True: # Ereignisse abfragen for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() if event.type == KEYDOWN: if event.key == K_UP: schwerkraft = schwerkraft_n if event.key == K_DOWN: schwerkraft = schwerkraft_s if event.key == K_LEFT: schwerkraft = schwerkraft_w if event.key == K_RIGHT: schwerkraft = schwerkraft_o if ball_rect.colliderect(ziel): ziel_x = randint(ziel_radius * 2, HÖHE - (ziel_radius * 2)) ziel_y = randint(ziel_radius * 2, BREITE - (ziel_radius * 2)) # Objekte bewegen ball_rect.move_ip(nach_rechts, nach_unten) nach_unten, nach_rechts = schwerkraft(nach_unten, nach_rechts) if ball_rect.right >= BREITE or ball_rect.left <= 0: nach_rechts = flip_richtung(nach_rechts) if ball_rect.bottom >= HÖHE or ball_rect.top <= 0: nach_unten = flip_richtung(nach_unten) # Screen aktualisieren screen.fill(WEISS) screen.blit(ball_bild, ball_rect) ziel = pygame.draw.circle(screen, ROT, (ziel_y, ziel_x), ziel_radius) pygame.display.update() frame_per_sec.tick(FRAMERATE)