PyGame: Wieso wird nur ein Fenster mit schwarzem Feld geöffnet?

1 Antwort

Es sieht so aus, als ob es einige kleine Fehler in Ihrem Code gibt. Hier sind ein paar Dinge, die ich bemerkt habe:

Sie sollten

pygame.display.flip()

anstelle von

pygame.display.update()

aufrufen, um die Anzeige zu aktualisieren.

  1. Es gibt keine Einschränkung dafür, wie weit sich der gelbe Block auf der X-Achse bewegen kann. Sie sollten die x-Position begrenzen, damit der Block innerhalb des Fensters bleibt.
  2. Es gibt keine Einschränkung dafür, wie weit sich der gelbe Block auf der Y-Achse bewegen kann. Sie sollten die y-Position begrenzen, damit der Block innerhalb des Fensters bleibt.
  3. Der while-Schleife fehlt ein Block. Sie sollten den Code innerhalb der Schleife in eine Einrückung bringen, um anzuzeigen, dass er zum Schleifenkörper gehört.

Hier ist der korrigierte Code:

import pygame

import sys

pygame.init()

screen = pygame.display.set_mode([600,600])

clock = pygame.time.Clock()

x = 300

y = 300

geschw = 3

breite = 40

hoehe = 80

go = True

while go:

  for event in pygame.event.get():

    if event.type == pygame.QUIT:

      sys.exit()

  gedrueckt = pygame.key.get_pressed()

  if gedrueckt[pygame.K_UP]:

    y -= geschw

  if gedrueckt[pygame.K_RIGHT]:

    x += geschw

  if gedrueckt[pygame.K_DOWN]:

    y += geschw

  if gedrueckt[pygame.K_LEFT]:

    x -= geschw

  # Begrenzen Sie die x- und y-Position, damit der Block innerhalb des Fensters bleibt

  x = max(0, min(x, 600 - breite))

  y = max(0, min(y, 600 - hoehe))

  screen.fill((0,0,0))

  pygame.draw.rect(screen, (255,255,0), (x,y,breite,hoehe))

  pygame.display.flip()

  clock.tick(60)