Dies ist mein erstes Pygame-Spiel, das ich mache.Warum springt mein Charakter nicht in pygame/python?
Ich plane ein 2-Spieler-Kampfspiel mit einfachen Quadraten/Blöcken.
Ich versuche jetzt, in das erste Zeichen zu springen und in meinen Augen sieht die ganze Logik korrekt aus und ich habe im Moment keine Fehler. Wenn ich jedoch versuche, w
zu drücken, passiert nichts!
Alle Hilfe wird geschätzt. (PS, wenn Sie sich fragen, warum ich keine Klassen in meinem Skript haben, kann ich nicht scheinen, meinen Kopf um Klassen zu bekommen und sie verwirren mich sehr: P) Danke und hier ist mein Code:
import pygame
pygame.init()
#Sets up 8 bit colours
white = (255,255,255)
black = (0,0,0)
red = (255,0,0)
green = (0,255,0)
blue = (0,0,255)
lightblue = (180,235,255)
grassgreen =(20,200,50)
#Sets up pygame window
gameDisplay = pygame.display.set_mode((1000,600))
pygame.display.set_caption('Block Fighter')
gameExit = False
#Variables
x = 50
y = 480
x_change = 0
y_change = 0
clock = pygame.time.Clock()
#Main Game Loop
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameExit = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_a:
x_change = -5
if event.key == pygame.K_d:
x_change = 5
if event.key == pygame.K_w:
y_change = -5
if event.type == pygame.KEYUP:
if event.key == pygame.K_a or event.key == pygame.K_d:
x_change = 0
if y <= 480:
onGround = False
else:
onGround = True
if onGround == False:
y_change = 5
if onGround == True:
y_change = 0
x += x_change
y += y_change
gameDisplay.fill(lightblue)
pygame.draw.rect(gameDisplay, grassgreen, [1000,600,-1000,-100])
pygame.draw.rect(gameDisplay, black, [x,y,20,20])
pygame.display.update()
clock.tick(40)
pygame.quit()
quit()
Auf jeden Fall etwas Aufwand in das Verständnis der Klassen. Wenn Sie Python (oder wirklich die meisten Sprachen) schreiben wollen, ist es entscheidend. Es wird auch Ihr allgemeines Verständnis dafür verbessern, wie objektorientierte Programmierung funktioniert, und Ihnen so bei allem helfen. – Jeff
Was Ihr tatsächliches Problem betrifft, wenn Sie einen 'print (" changed ")' in Ihren Code hinter der Zeile 'y_change = -5' setzen, wird" geändert "gedruckt, wenn Sie w drücken? –
@Jake Biggs: Johan hat gerade deine Frage beantwortet. : D –