hab mich extra hier angemeldet, weil ich nirgendwo eine Antwort finden konnte.
Ich programmiere gerade ein "Rennspiel", um mir qt beizubringen. Man sieht die ganze rennstrecke von oben und versucht ein auto durchzulenken ohne von der strecke abzukommen.
Die Geschwindigkeit soll dabei erst mal konstant und vorgegeben sein. Das funktioniert auch alles schon erstaunlich gut. Allerdings soll man auch gegeneinander fahren können, dabei soll der eine fahrer mit den tasten A&D lenken und der andere mit den Pfeiltasten.
Das erste Problem ist jetzt, dass ich nur eine taste gleichzeitig bearbeiten kann. das heisst wenn spieler eins nach links lenkt (Taste A gedrückt hält) kann spieler 2 auf der Tastatur rumdrücken wie er will, er fährt geradeaus.
das zweite Problem ist, dass das auto beim einlenken erst nur ganz wenig und dann verzögert einlenkt (weil erst ein tastendrück registriert wird und dann erst verzögert, dass die taste gedrückt gehalten wird).
Die Funktion keyPressEvent sieht bei mir so aus (richtung und richtung2 sind die ausrichtung der autos im bogenmaß) :
Code: Alles auswählen
void Zeichnen::keyPressEvent(QKeyEvent *event){
if (event->key() == Qt::Key_Right) {
richtung=richtung+0.07;
}
if (event->key() == Qt::Key_Left) {
richtung=richtung-0.07;
}
if (event->key() == Qt::Key_D) {
richtung2=richtung2+0.07;
}
if (event->key() == Qt::Key_A) {
richtung2=richtung2-0.07;
}
}