Code: Alles auswählen
import pygame as p
p.init()
screen = p.display.set_mode([100,500])
p.display.set_caption("Schwerkraft")
clock = p.time.Clock()
a = 0.1 #Beschleunigung
speed = 0 #aktuelle Geschwindigkeit
down = 30 #y-Koordinate der Unterseite des Rechtecks
y = 0 #y-Koordinate der Oberseite des Rechtsecks
up = False #True, wenn Pfeiltaste nach oben gedrückt
while True:
clock.tick(30)
for event in p.event.get(): #Legt up fest
if event.type == p.KEYDOWN and event.key == p.K_UP:
up = True
if event.type == p.KEYUP and event.key == p.K_UP:
up = False
if up: #Beschleunigung wirkt entgegen wenn gedrückt
speed -= 2*a
else:
speed += a #Ansonsten wirkt die Schwerkraft
if speed < 0: #Wenn es nach oben geht
if not y + speed < 0:
y += speed
else:
speed = 0
y = 0
down = 30
if speed > 0: #Wenn es nach unten geht
if not down + speed > 500:
down += speed
y = down - 30
else:
speed = 0
down = 500
y = 470
else: #Verzweifelter Versuch den Rumportefehler zu beheben
pass
screen.fill([0,0,0])
p.draw.rect(screen,[255,0,0],[0,y,100,30],0)
p.display.flip()
Mein Problem ist, dass ich erreichen wollte, dass ich durch das drücken der Pfeiltaste nach oben
der Schwerkraft mit der doppelten Beschleunigung entgegenwirken wollte.
Das funktioniert zwar, aber wenn ich die Pfeiltaste loslasse portet sich mein Viereck(s.programm)
wieder an die Stelle zurück, an der ich die Pfeiltaste nach oben gedrückt habe, könnt ihr mir helfen?