[Python/pyGame] Springbewegung per leertaste klappt beim "KEYUP" Event nicht!

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von paulkoch95.

    [Python/pyGame] Springbewegung per leertaste klappt beim "KEYUP" Event nicht!

    Hallo Community,
    in letzter Zeit bechäftige ich mich sehr, sehr viel mit Python, spezifisch, neuerdings auch mit pygame .
    Nun bin ich bei der Steuerung auf ein Problem gestossen, es geht darum irgendwas zu bewegen (zum beispiel eine Figur in einem Jump'n'Run)
    Diese per Pfeiltasten nach links und rechts gehen zu lassen is auch kein Problem, wenn es allerdings ums Springen geht hab ich ein Brett vorm Kopf, ich weiss nicht wie ich es erreichen kann, dass die Figur nachdem sie sich erfolgreich 20Pixel nach oben bewegt hat, auch wieder 20Pixle nach unten bewegt.Denn nachdem 20 Pixel vorbei sind soll sie auch wieder anhalten, mit folgendem Codebeispiel bewegt sie sich nach oben sobald man
    die Leertaste drückt, wenn man sie aber loslässt, bewegt sie sich durch die Schleife unendlich oft um 20Pixel nach unten und hält natürlich nicht mehr an. Ich brauch nur eine Idee wie man es angehen könnte, ich hoffe ihr könnt mir helfen, auch wenn dies ein VB-Forum ist^^:
    Codebeispiel:

    PHP-Quellcode

    1. bif="bg.jpg"
    2. mif="ball.png"
    3. import time
    4. import pygame, sys
    5. from pygame.locals import *
    6. pygame.init()
    7. screen=pygame.display.set_mode((640,480),0,32)
    8. background=pygame.image.load(bif).convert()
    9. mouse_c=pygame.image.load(mif).convert_alpha()
    10. x,y=60,60
    11. movex, movey=0,0
    12. while True:
    13. for event in pygame.event.get():
    14. if event.type == QUIT:
    15. pygame.quit()
    16. sys.exit()
    17. if event.type==KEYDOWN:
    18. if event.key==K_LEFT:
    19. movex=-1
    20. elif event.key==K_RIGHT:
    21. movex=+1
    22. elif event.key==K_SPACE:
    23. movey=-20
    24. time.sleep(1)
    25. if event.type==KEYUP:
    26. if event.key==K_LEFT:
    27. movex=0
    28. elif event.key==K_RIGHT:
    29. movex=0
    30. elif event.key==K_SPACE:
    31. movey=+20
    32. time.sleep(1)
    33. movey=0
    34. x+=movex
    35. y+=movey
    36. screen.blit(background,(0,0))
    37. screen.blit(mouse_c,(x,y))
    38. pygame.display.update()

    bg.jpg und ball.png sind der Hintergrund und der Cursor^^
    "yippieh! it compiles - ship it!"
    okay, das Problem wurde mittlerweile gelöst, wenn interessiert:

    PHP-Quellcode

    1. #Nur der sprungvorgang!
    2. if while_register==0:
    3. if event.type==KEYDOWN:
    4. if event.key==K_LEFT:
    5. movex=-1
    6. while_register=0
    7. elif event.key==K_RIGHT:
    8. movex=+1
    9. while_register=0
    10. elif event.key==K_SPACE:
    11. while_register=1
    12. if event.type==KEYUP:
    13. if event.key==K_LEFT:
    14. movex=0
    15. elif event.key==K_RIGHT:
    16. movex=0
    17. elif while_register==1:
    18. if jump_moved >= 0 and jump_moved <= jh:
    19. print("jump_steigen")
    20. movey=-1
    21. jump_moved=jump_moved+1
    22. print("movey" ,movey)
    23. print("jump_moved" ,jump_moved)
    24. while_register=1
    25. elif jump_moved >= jh and jump_moved <= jh+1:
    26. print("2case")
    27. movey=0
    28. time.sleep(0.3)
    29. print('sleep_succes')
    30. jump_moved=jh+2
    31. print("jump_moved" ,jump_moved)
    32. while_register=1
    33. elif jump_moved >= jh+2 and jump_moved <= (jh*2)+2:
    34. print("jump_sinken")
    35. movey=+1
    36. jump_moved=jump_moved+1
    37. while_register=1
    38. elif jump_moved >= (jh*2)+1:
    39. print("jump_moved" ,jump_moved)
    40. movey=0
    41. jump_moved=0
    42. while_register=0
    43. print("Springen beendet.")
    44. print("jump_moved" ,jump_moved)
    "yippieh! it compiles - ship it!"