Files
pygame_demo/simple_pygame_demo.py

98 lines
3.0 KiB
Python
Raw Normal View History

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)