2012-03-30 8 views
0

Ich mache ein Spiel in C# (Es ist ein Pong-Spiel) und ich habe eine "AI" abgeschlossen, so dass Sie 1 Spieler spielen können, und ich habe auch eine Multiplayer-Version gemacht , wenn jemand einen Schlüssel (nach oben oder unten) drückt, stoppt die Bewegung der anderen Spieler und so weiter.C# Mehrere Tasteneingaben ohne Überlappung

Also im Grunde können Sie nicht 2 Spieler spielen, weil es die Bewegung der anderen Spieler unterbrechen würde. Ich bin mir nicht sicher, was ich tun muss (Multithreading?) Oder etwas anderes, damit du flüssig spielen kannst und nicht die Tasten der anderen Spieler überschneidest.

Ich kann nicht wirklich suchen (obwohl ich habe), weil ich nicht wissen würde, nach was man sucht. :)

Wie auch immer, hoffe, es gibt einen Weg hehe.

C# Form-Anwendung (mit Tutorial Engine Engine/Bibliothek).

+0

Sie müssen etwas Code posten. Weißt du, was den anderen Spieler blockiert? – Msonic

+0

Entschuldigung, wenn es nicht klar genug ist, geschieht die Blockierung, wenn ein neuer Tastenanschlag gemacht wird. Ich poste meine Methode und etwas Code. – Nicholas

Antwort

5

Sie verlassen sich darauf, dass der Tastaturcontroller den Schlüssel wiederholt, wenn Sie ihn gedrückt halten. Ja, das funktioniert nicht mehr, wenn Sie eine andere Taste drücken.

Der standardmäßige Spielregelungsansatz besteht darin, das KeyDown-Ereignis zu verwenden, um ein Flag zum Absenken der Schlüssel festzulegen und das Ereignis KeyUp zum Zurücksetzen zu verwenden. Dann überprüfe in deiner Spielschleife diese Flagge und bewege das Paddel, wenn die Flagge gesetzt ist. Sie könnten auch GetAsyncKeyState() pinnen.

0

Ich nehme an, Sie spielen auf dem gleichen PC.

Wenn eine Taste gedrückt wird, müssen Sie diese Aktionen in einem separaten Thread ausführen, andernfalls werden die Tasten der anderen Spieler durch diesen Thread blockiert, bis die Ausführung beendet ist.

Was ich gehe davon passiert:

Spieler 1: halten Sie < -

Spieler 2: nach unten hält A

Spieler 1: die < - wird nicht registriert werden mehr

Sie müssen feststellen können, wann eine Taste gedrückt und wann sie losgelassen wird. Wenn es gedrückt wird, sollte Ihre Anwendung "diese Taste gedrückt" = wahr sagen. Wenn es freigegeben wird, ist es jetzt falsch. Auf diese Weise werden Sie nicht auf die Tastatur selbst, sondern auf Objekte innerhalb Ihrer Anwendung abgebildet, und die Ereignisse, die von der Taste nach unten/oben ausgelöst werden, ändern diese Einstellungen.

So können Sie < gedrückt halten -, dann halten ->, < freigeben - und lassen Sie Ihre -> Maßnahmen ergreifen, indem Sie nach rechts bewegen.

+0

Dies funktioniert nicht, obwohl, obwohl es nur wahr/falsch ist, die eigentliche Aktion der Änderung scheint, die Paddel davon abzuhalten, sich zu bewegen. – Nicholas