Tastaturen können manchmal nicht mehr als drei gleichzeitig gedrückte Tasten verarbeiten. Das merkt man bei einigen Spielen, wenn man zu zweit auf einem Keyboard spielt.Sephiroth hat geschrieben:Also ich habe mal etwas getestet, und ich glaube, dass wenn ein Spieler gerade eine Eingabe macht(wie nach rechts laufen), werden die Eingaben vom Anderen ignoriert.
PyGame Joystick
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Jetzt wo ihr es sagt ist es schon irgendwie einleuchtend. Habe es jetzt mal geändert:@mkallas: Die Frage hat mkallas doch schon beantwortet und das sollte doch klar sein, wenn Du mal kurz drüber nachdenkst. Es gibt kein "rechts-oben", sondern nur "rechts" und "oben" und wenn beide jeweils die x- und die y-Richtung beeinflussen, kann nur eines davon "gewinnen". Und das beim Loslassen *irgendeiner* Taste alle Bewegungsrichtungen auf 0 gesetzt werden, ist auch ein wenig bescheuert und erklärt vielleicht warum Du die Steuerung als hakelig empfindest. Rolling Eyes
Wenn Du "oben" drückst, wird x=0 und y=-1 gesetzt, wenn dann noch "rechts" dazu kommt, wird x=1 und y=0 gesetzt, wobei Du den Effekt von "oben" zunichte gemacht hast. Wenn Du jetzt "oben" loslässt bleibt der Spieler stehen (x=0, y=0) obwohl ja immer noch "rechts" gedrückt ist.
Code: Alles auswählen
#---Spieler2---
#S2 hoch
if eingabe.type == pygame.KEYDOWN and eingabe.key == pygame.K_UP:
self.spieler2.ymove = -1
#S2 runter
elif eingabe.type == pygame.KEYDOWN and eingabe.key == pygame.K_DOWN:
self.spieler2.ymove = 1
#S2 rechts
elif eingabe.type == pygame.KEYDOWN and eingabe.key == pygame.K_RIGHT:
self.spieler2.xmove = 1
#S2 links
elif eingabe.type == pygame.KEYDOWN and eingabe.key == pygame.K_LEFT:
self.spieler2.xmove = -1
#S2 Taste loslassen
#hoch runter
elif eingabe.type == pygame.KEYUP and (eingabe.key == pygame.K_UP or pygame.K_DOWN):
self.spieler2.ymove = 0
#rechts links
elif eingabe.type == pygame.KEYUP and (eingabe.key == pygame.K_RIGHT or pygame.K_LEFT):
self.spieler2.xmove = 0
Allerdings die auf der x-Achse nicht.
Drücke ich nach links oder rechts, bewegt sich das quadrat die ganze zeit in die Richtung, bis ich die entgegengesetzte Richtungstaste drücke.
Obwohl ich es doch bei beiden gleich gemacht habe.
In der Spieler-klasse wird auch die x und die y Achse gleich behandelt.
Find einfach keinen Unterschied, der erklären könnte wieso es auf der y-achse funktioniert und auf der x-Achse nicht.}
[EDIT]: Ok, falsche Info. Ich musste einfach beim letzten elif block(Der ob rechts oder links losgelassen wurde) in einen normalen if block umwandeln.
[EDIT2]: Grade noch aufgefallen, dass wenn ein Spieler ne Richtungstaste loslässt, beim anderen egal welche Bewegung auch gestoppt wird.
Muss mir trotzdem nochmal alles durch den Kopf gehen lassen, denn hab immernoch das selbe Problem. Wenn zum rechten tastendruck noch einer nach oben hinzukommt etc.
Ist das dann ein Hard oder Softwareproblem der Tastatur?Tastaturen können manchmal nicht mehr als drei gleichzeitig gedrückte Tasten verarbeiten. Das merkt man bei einigen Spielen, wenn man zu zweit auf einem Keyboard spielt.
Ps: Ich weiß, dass wahrscheinlich die meisten meiner Frage sehr trivial sind. Hab allerdings erst vor ner Woche mit Python/Pygame angefangen und bin von daher noch nicht so geübt im "Problem erkennen und lösen".
Also danke für euer Verständnis:)
Gruss