Problem mit Konsolenspiel/Pacmansteuerung
-
Hallo,
habe nun die Grundfunktionen meines Pacmankonsolenspiels fertig. Nur bei der Multiplayerversion habe ich noch ein kleines Problem.
Hier hat man einfach zwei Pacmans (zwei Instanzen der Klasse) die eben mit nuterschiedlichen Tasten gesteuert werden.Die Abfrage sieht wie folgt aus.
while(true) { input = getch(); if(input == player1.getUp()) { player1.moveUp(); } }
und das ganze eben mit up, down, left, right für beide Spieler. Wenn jetzt aber Spieler 1 eine Taste gedrückt hält kann Spieler 2 nicht mehr "lenken", was bei der Singleplayerversion ja kein Problem war da ein User nicht in 2 verschiedene Richtungen gleichzeitig will.
Hat irgendjemand eine Idee wie man diese Abfrage verbessern kann?
-
_beginthread _endthread
könnten dir da helfen.
-
Threads...das ich da von allein nich drauf gekommen bin
Naja, da ich noch nicht sehr viel über Threads weiß (allgemein schon, jedoch nicht über die praktische ausführung in c) werde ich mich darüber informieren. Würde mich aber auch freuen wenn mir jemand hier eine kurze Einführung geben könnte bzw. Links dazu.Dankeschön!
-
Das Problem ist getch(), auch Threads helfen da wenig...
Schau mal nach GetAsyncKeystate (funktioniert auch in der Konsole), damit kannst du dann einzelne Tasten abfragen (auch wenn eine andere Taste gedrückt ist)...
-
Dankeschön! Leider hab ich über den Umgang mit GetAsyncKeyState relativ wenig gefunden.
Bin dann zum ausprobieren übergegangen. Wie muss ich denn die Abfrage gestalten?if(GetAsyncKeyState(tastencode) == true) funktioniert nicht
if(GetAsyncKeyState() == tastencode) auch nicht da die Funktion ja ein Parameter benötigt.Ich steh im Moment nicht nur aufm Schlauch sondern auf der Hauptleitung
-
du musst einen virtual keycode übergeben, liste HIER.
//edir: die funktion liefert übrigens einen SHORT-wert zurück. also wahrscheinlich
if( GetAsyncKeyState( VK_LEFT ) == 1 )
...mfg,
julian
-
habe ich so schon versucht.
Mir ist nur gerade etwas aufgefallen. Die Funktion die du mir genannt hast gehört doch zur WinAPI o.Ä., ich benutze die Funktion auch, jedoch aus Borland's vcl.h.
Gibt es da Unterschiede?
-
Julian__ schrieb:
if( GetAsyncKeyState( VK_LEFT ) == 1 )
if(GetAsyncKeyState(VK_LEFT)&0x8000) taste_gedrueckt(); else taste_nicht_gedrueckt();