Warum nur schwarzer Screen beim Start von PyGame Script?
Hi,
Ich habe ein kleines Spiel angefangen zu schreiben jedoch wenn ich versuche es zu starten kriege ich nur ein schwarzen screen.
Hier ist der Code
import pygame
import sys
# pygame function
pygame.display.set_caption("Knight Slasher")
pygame.init()
screen = pygame.display.set_mode((1280, 720))
clock = pygame.time.Clock()
running = True
dt = 0
color = (255,0,0)
blue = (0,0,255)
rect = (20,20)
point = pygame.mouse.get_pos()
player_1 = pygame.draw.rect(screen, color, pygame.Rect(600,360,100,100))
#game loop
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# fill the screen with a color to wipe away anything from last frame
screen.fill("green")
player_1
#movement
key= pygame.key.get_pressed()
if key[pygame.K_a] == True:
player_1.move_ip(-5, 0)
if key[pygame.K_d] == True:
player_1.move_ip(5, 0)
if key[pygame.K_w] == True:
player_1.move_ip(0, -5)
if key[pygame.K_s] == True:
player_1.move_ip(0, 5)
# flip() the display to put your work on screen
pygame.display.flip()
# limits FPS to 60
# dt is delta time in seconds since last frame, used for framerate-
# independent physics.
dt = clock.tick(60) / 1000
pygame.quit()
(Ich programmiere in Sublime Text ) ich hoffe jemand kann mir helfen
2 Antworten
ChatGPT:
Dein Code enthält einige Fehler, die den schwarzen Bildschirm verursachen. Hier ist eine korrigierte Version:
1. Das Rechteck player_1 muss in der Spielschleife neu gezeichnet werden.
2. Die Einrückung der Bewegungskontrollen ist nicht korrekt.
3. Die Methode move_ip sollte auf das Rechteck angewendet werden.
4. Der Aufruf von pygame.display.flip() und clock.tick() sollte innerhalb der Spielschleife erfolgen.
Hier ist der korrigierte Code:
import pygame
import sys
# pygame initialisieren
pygame.init()
pygame.display.set_caption("Knight Slasher")
# Bildschirm und Uhr erstellen
screen = pygame.display.set_mode((1280, 720))
clock = pygame.time.Clock()
running = True
# Farben und Spielerrechteck definieren
color = (255, 0, 0)
player_1 = pygame.Rect(600, 360, 100, 100)
# Spielschleife
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Bildschirm mit einer Farbe füllen
screen.fill("green")
# Spielerrechteck zeichnen
pygame.draw.rect(screen, color, player_1)
# Bewegung
keys = pygame.key.get_pressed()
if keys[pygame.K_a]:
player_1.move_ip(-5, 0)
if keys[pygame.K_d]:
player_1.move_ip(5, 0)
if keys[pygame.K_w]:
player_1.move_ip(0, -5)
if keys[pygame.K_s]:
player_1.move_ip(0, 5)
# Display aktualisieren
pygame.display.flip()
# FPS auf 60 begrenzen
clock.tick(60)
pygame.quit()
Stelle sicher, dass du den Code korrekt einrückst, besonders in der Spielschleife. Das sollte das Problem mit dem schwarzen Bildschirm beheben und dein Spiel korrekt anzeigen.
Der Grund, warum dein PyGame-Skript nur einen schwarzen Bildschirm anzeigt, liegt an mehreren Problemen im Code, darunter Indentierungsfehler und der falsche Umgang mit der
"pygame.draw.rect( )"
Funktion. Ich werde den Code korrigieren und einige Verbesserungen hinzufügen, damit er wie erwartet funktioniert.
Hier ist der überarbeitete Code:
import pygame
import sys
# Initialisierung von pygame
pygame.init()
# Bildschirm und Titel
screen = pygame.display.set_mode((1280, 720))
pygame.display.set_caption("Knight Slasher")
# Farbdefinitionen
color = (255, 0, 0)
# Initialisierung des Spielers
player_1 = pygame.Rect(600, 360, 100, 100)
# Spieluhr
clock = pygame.time.Clock()
# Hauptspiel-Schleife
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Bildschirm füllen
screen.fill("green")
# Spielerbewegung
keys = pygame.key.get_pressed()
if keys[pygame.K_a]:
player_1.move_ip(-5, 0)
if keys[pygame.K_d]:
player_1.move_ip(5, 0)
if keys[pygame.K_w]:
player_1.move_ip(0, -5)
if keys[pygame.K_s]:
player_1.move_ip(0, 5)
# Zeichnen des Spielers
pygame.draw.rect(screen, color, player_1)
# Bildschirm aktualisieren
pygame.display.flip()
# FPS begrenzen
clock.tick(60)
pygame.quit()