Seite 1 von 1

Joystik - Tastenkombinationen in Pygame

Verfasst: Dienstag 27. Juni 2017, 09:57
von PJanow4711
Habe ein Programm geschrieben wo ich mit mit dem PS4 Controller beim Tastendruck etwas anstossen kann. Das Programm funktioniert Super!

Jetzt wollte ich aber noch zusätzlich Funktionen in das Programm intergrieren, dass auch Tastenkombinationen funktionieren Z.B Tastenkombinationen L1 + X oder R1 + O sollen etwas anstossen. Hier stehe ich aber etwas auf dem Schlauch :K

Habe mir überlegt, dass ich eine zusätzlich Schleife einbauen kann, wenn L1 gedrückt wird. Diese soll durchlaufen werden bis L1 wieder losgelassen wird. Der Code funktioniert aber nicht so richtig. Die Schleife wird verlassen aber hierzu muss ich L1 ein paar mal drücken und die anderen Buttons inerhalb der Schleife funktionieren auch nicht.

Wenn die Schleife einmal verlassen wird, dann funktioniert nichts mehr! Was mache ich falsch ... danke!

Code: Alles auswählen

# -------- Main Program Loop -----------
while done==False:
# EVENT PROCESSING STEP
    	for event in pygame.event.get(): # User did something
        		if event.type == pygame.QUIT: # If user clicked close
			done=True 
		
         if event.type == pygame.JOYBUTTONDOWN and event.button == 4:
			#Schleife solange L1 wieder losgelassen wird  
			   While L1==False:
				   for event in pygame.event.get(): # User did something
        				      If event.type == pygame.JOYBUTTONUP and event.button ==4:
				          	      L1=True #Schleife wieder verlasen wenn L1 losgelassen wird
				              #ansonsten werden die restlichen buttons abgefragt L1 + X, etc.
				              If event.type == pygame.JOYBUTTONDWN and event.button ==0:
					                             ……
			                 If event.type == pygame.JOYBUTTONDWN and event.button ==1:
					                             ……
                          If event.type == pygame.JOYBUTTONDWN and event.button ==2:
					                             ……
                          If event.type == pygame.JOYBUTTONDWN and event.button ==3:
					                             ……

Re: Joystik - Tastenkombinationen in Pygame

Verfasst: Dienstag 27. Juni 2017, 10:50
von BlackJack
@PJanow4711: In der Eventschleife macht man üblicherweise nichts ausser irgendwelchen Zustand zu aktualisieren auf den man dann *nach* dieser Schleife dann reagiert. Also zum Beispiel vermerken welche Joystick-Knöpfe gerade gedrückt sind und welche nicht. Danach kann man dann *nach* der Schleife entscheiden was bei welcher Kombination dann tatsächlich gemacht werden soll.

Wahrheitswerte mit literalen Wahrheitswerten vergleichen ist übrigens überflüssig und manchmal sogar schädlich wenn jemand darauf vertraut das auch andere Werte in Bedingungen als „wahr“ und „unwahr“ angesehen werden können. Die äusserste Schleife würde man beispielsweise als ``while not done:`` ausdrücken.

Re: Joystik - Tastenkombinationen in Pygame

Verfasst: Dienstag 27. Juni 2017, 11:25
von PJanow4711
Danke erst einmal für die Informationen! Leider bin ich mit Python noch nicht sehr vertraut!

Was bedeutet „nach“ dieser Schleife? Es ist doch die Hauptschleife und ich komme aus dieser Schleife nur mit einem QUIT raus.
Danach kommt doch nichts mehr … oder mache ich hier ein Gedankenfehler?

Event Button kann ja immer nur einen Wert zurückliefern aber wie frage ich es ab wenn ich sehen will daß zwei Tasten gleichzeitig gedruckt sind Zum Beispiel (L1 und X)

Re: Joystik - Tastenkombinationen in Pygame

Verfasst: Dienstag 27. Juni 2017, 11:50
von BlackJack
@PJanow4711: Ich meine nach der ``for``-Schleife. Die Hauptschleife ist ja die ``while``-Schleife.

In der ``for``-Schleife merkst Du Dir welche Tasten gedrückt oder losgelassen wurden, und nach der Schleife kannst die aktuellen Zustände dann auswerten, beispielsweise mit ``if l1_down and x_down:`` falls `l1_down` und `x_down` die Variablen sind die entsprechend auf `True` oder `False` gesetzt werden in der ``for``-Schleife.

Re: Joystik - Tastenkombinationen in Pygame

Verfasst: Dienstag 27. Juni 2017, 12:10
von Kebap
Hallo PJanow4711, willkommen im Forum!

Vielleicht zeigst du mal dein lauffähiges Programm, damit andere auch testen können.

Warum die anderen Buttons nicht funktionieren: Du schreibst JOYBUTTONDWN - ohne o :)

Re: Joystik - Tastenkombinationen in Pygame

Verfasst: Dienstag 27. Juni 2017, 13:18
von PJanow4711
Langsam verstehe ich es :D

Das Lauffähige programm habe ich auf meinem Raspi. Ich werde es mal zu kontrolle hier reinstellen wenn ich die Änderungen vorgenommen habe!

Viele Grüße und danke noch einmal,
Peter