Mehrere Funktionen untereinander verbinden
Verfasst: Mittwoch 13. April 2022, 16:09
Hallo,
wenn ich z. B. folgendes Programm schreiben:
Dann funktioniert das ja soweit problemlos.
Zum einen finde ich es aber nicht gut, alles in den Loop zu schreiben und spätestens wenn Programme komplexer werden, verliere ich da die Übersicht. Jetzt würde ich natürlich gerne mehrere Funktionen bilden, die dann jeweils nur im Loop aufgerufen werden. Zum Beispiel sowas hier:
wenn ich die Funktion im Loop mit
aufrufe, werden die Quadrate auch korrekt dargestellt, aber ich kann sie nicht mehr mit den Eingaben von Player interagieren lassen. Logisch, denn sie sind ja nur innerhalb der Funktion bekannt. Wie kann ich das ändern? Wenn man mehrere Funktionen hat mit mehreren Variablen, wie kann ich erreichen, dass in einer Funktion etwas geschieht, aufgrund von Eingaben oder Werten die in einer anderen Funktion oder im Loop aufgerufen werden?
Vielen Dank!
wenn ich z. B. folgendes Programm schreiben:
Code: Alles auswählen
import pygame
pygame.init()
WIDTH = 250
HIGHT = 250
AKTIV = True
BLACK = (0, 0, 0,)
WHITE = (255, 255, 255)
YELLOW = (255, 255, 0)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
GREEN = (0, 255, 0)
screen = pygame.display.set_mode((WIDTH, HIGHT))
pygame.display.set_caption("Hallo!")
player_x = 100
player_y = 100
player_color = WHITE
while AKTIV:
for event in pygame.event.get():
if event.type == pygame.QUIT:
AKTIV = False
player = pygame.draw.rect(screen, player_color, (player_x, player_y, 25, 25), 0)
cube_topleft = pygame.draw.rect(screen, YELLOW, (5, 5, 25, 25), 0)
cube_topright = pygame.draw.rect(screen, RED, (220, 5, 25, 25), 0)
cube_bottomleft = pygame.draw.rect(screen, BLUE, (5, 220, 25, 25), 0)
cube_bottomright = pygame.draw.rect(screen, GREEN, (220, 220, 25, 25), 0)
pressed = pygame.key.get_pressed()
if pressed[pygame.K_LEFT]:
player_x -= 0.1
if pressed[pygame.K_RIGHT]:
player_x += 0.1
if pressed[pygame.K_UP]:
player_y -= 0.1
if pressed[pygame.K_DOWN]:
player_y += 0.1
if player.colliderect(cube_topleft):
player_color = YELLOW
if player.colliderect(cube_topright):
player_color = RED
if player.colliderect(cube_bottomleft):
player_color = BLUE
if player.colliderect(cube_bottomright):
player_color = GREEN
pygame.display.flip()
screen.fill(BLACK)
pygame.time.Clock()
pygame.quit()
Zum einen finde ich es aber nicht gut, alles in den Loop zu schreiben und spätestens wenn Programme komplexer werden, verliere ich da die Übersicht. Jetzt würde ich natürlich gerne mehrere Funktionen bilden, die dann jeweils nur im Loop aufgerufen werden. Zum Beispiel sowas hier:
Code: Alles auswählen
def cubes_corner():
cube_topleft = pygame.draw.rect(screen, YELLOW, (5, 5, 25, 25), 0)
cube_topright = pygame.draw.rect(screen, RED, (220, 5, 25, 25), 0)
cube_bottomleft = pygame.draw.rect(screen, BLUE, (5, 220, 25, 25), 0)
cube_bottomright = pygame.draw.rect(screen, GREEN, (220, 220, 25, 25), 0)
Code: Alles auswählen
cubes_corner()
Vielen Dank!