fügt ball-Bild hinzu und Skript für Spielidee: keine Klassen, und weniger als 100 Zeilen Code
This commit is contained in:
98
simple_pygame_demo.py
Normal file
98
simple_pygame_demo.py
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
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)
|
||||||
Reference in New Issue
Block a user