98 lines
3.0 KiB
Python
98 lines
3.0 KiB
Python
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) |