From 86be107d025ac7e272497360eb1bb18066d7db8a Mon Sep 17 00:00:00 2001 From: Jan Bertram Date: Fri, 14 Feb 2025 19:01:39 +0100 Subject: [PATCH] =?UTF-8?q?f=C3=BCgt=20ball-Bild=20hinzu=20und=20Skript=20?= =?UTF-8?q?f=C3=BCr=20Spielidee:=20keine=20Klassen,=20und=20weniger=20als?= =?UTF-8?q?=20100=20Zeilen=20Code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ball.bmp | Bin 0 -> 1662 bytes simple_pygame_demo.py | 98 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 ball.bmp create mode 100644 simple_pygame_demo.py diff --git a/ball.bmp b/ball.bmp new file mode 100644 index 0000000000000000000000000000000000000000..11a5a1c50a76cd7ef6bb91b9000ea14b5ee5239a GIT binary patch literal 1662 zcmZXVzjD(+5QpW-3@*(ZsHLQ%ix?Uz-hqM#NJqyhlZRla{33vric$pyR9Fl}N{dM$ zd7|jYw|gg93HC_Vce}URf46@1=EIZBKj++^alK2|DqH#b%OrPL+$3dOQj-PyX_49Q zkY#5}u2?TvnB-<+bK>53b>b$=Rhq@5Ut(-vZDM;=iGe5|+;)Rf6M0-k?$?orb!5D9d;P|F46Dd(t_oj{DkC?A4uf=~D!6_V zbQptbHIXanpn`8(xct(%Mx)Q2iQ}L@z0_}jg~bt+dwCN5YHe zu_8Ot3&M%#wFy>`_qZQg;$fMBj2-SK&doNQ=0U$HNFbc%#bA@}mTpS(gn2`Ab?Vc+ z@ezAyvuPfwM8EFFx4Ha%YH||Ni76PlUE?u~hvtv^6&`oo6Z68Oy3@Q=mfxs5%~MsY j8da>u{Y>|bGV?O=<9Utn!8~V!t55p>{U0EZeazlJ3hN#) literal 0 HcmV?d00001 diff --git a/simple_pygame_demo.py b/simple_pygame_demo.py new file mode 100644 index 0000000..3dce923 --- /dev/null +++ b/simple_pygame_demo.py @@ -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) \ No newline at end of file