Mausereignisse unter pygame auswerten
Verfasst: Montag 14. August 2017, 09:13
Hallo zusammen,
ich möchte unter pygame einen Spielstein verschieben.
Linke Maustaste wird gedrückt: Spielstein wird angehoben
Linke Maustaste ist gedrückt: Spielstein wird mit der Maus verschoben
Linke Maustaste wird losgelassen: Spielstein wird abgesetzt
Bei meiner ersten Lösung habe ich einfach drauflos geschrieben und gespeichert, ob die Maustaste gedrückt ist oder nicht. So konnte ich vergleichen, ob sie gerade gedrückt wurde. Der Code war in etwa so:
Dann habe ich gesehen, dass es für so etwas Events gibt und habe die Klicks damit abgefangen:
Da "Mausknopf ist gerade gedrückt" aber kein Event ist, kann man den Stein so wohl nicht verschieben. Aber wie mache das dann elegant? Muss ich jetzt aus dem ersten Beispiel den Code für das Verschieben weiter benutzen und Benutze dann event und pygame.mouse.get_pressed()? Das erscheint mir irgendwie doppelt...
Oder führe ich eine neue Variable "lifted" ein, die beim Drücken auf True und beim Loslassen auf False gesetzt wird? Also in etwa so:
Was wäre hier denn der pythonische Weg? Ich würde zur letzten Möglichkeit tendieren, aber bestimmt gibt es da wieder einen völlig anderen Weg...
Schon einmal vielen Dank!
ich möchte unter pygame einen Spielstein verschieben.
Linke Maustaste wird gedrückt: Spielstein wird angehoben
Linke Maustaste ist gedrückt: Spielstein wird mit der Maus verschoben
Linke Maustaste wird losgelassen: Spielstein wird abgesetzt
Bei meiner ersten Lösung habe ich einfach drauflos geschrieben und gespeichert, ob die Maustaste gedrückt ist oder nicht. So konnte ich vergleichen, ob sie gerade gedrückt wurde. Der Code war in etwa so:
Code: Alles auswählen
left_click, _, _ = pygame.mouse.get_pressed()
if left_click and not old_left_click:
pass # Spielstein anheben
elif left_click:
pass # Spielstein verschieben
elif not left_click and old_left_click:
pass # Spielstein ablegen
old_left_click = left_click
Code: Alles auswählen
LEFT_MOUSEBUTTON = 1
for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONDOWN:
if event.button == LEFT_MOUSEBUTTON:
pass # Spielstein anheben
if event.type == pygame.MOUSEBUTTONUP:
if event.button == LEFT_MOUSEBUTTON:
pass # Spielstein ablegen
Oder führe ich eine neue Variable "lifted" ein, die beim Drücken auf True und beim Loslassen auf False gesetzt wird? Also in etwa so:
Code: Alles auswählen
for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONDOWN:
if event.button == LEFT_MOUSEBUTTON:
lifted = True
# Hebe Spielstein an
if lifted:
# verschiebe Spielstein
Schon einmal vielen Dank!