Hi,
nachdem ich GLBasic erst 3 Tage verwende kann sein das ich vielleicht was übersehen habe, aber hier meine Frage:
Kann man auch irgendwie direkt abfragen ob nun nur eine Taste gedrückt wurde?
Bei Key muss ich ja immer einen Tastencode als Parameter angeben, was aber beispielsweise eine kleine Richtungsabfrage der Cursortasten ziemlich konfus aussehen lässt:
IF KEY(208)
// Runter
ELSE
IF KEY(200)
// Oben
ELSE
IF KEY(203)
// Links
ELSE
IF KEY(205)
// Rechts
ELSE
// keine Richtungstaste
ENDIF
ENDIF
ENDIF
ENDIF
Natürlich könnte ich das ganze auch immer mit IF/ENDIF machen, allerdings würde dann falls alle 4 Tasten gleichzeitig gedrückt werden jede Bedingung erfüllt werden und ich müsste erst noch andere Variablen "missbrauchen" um festzustellen ob keine der 4 Tasten gedrückt werden...
Hätte man eine Möglichkeit die Tasten abzufragen könnte man das ganze in etwa so lösen:
SELECT Taste
CASE 208
// Runter
CASE 200
// Oben
CASE 203
// Links
CASE 205
// Rechts
DEFAULT
// keine Richtungstaste
ENDSELECT
Wäre wesentlich übersichtlicher, oder? :rolleyes:
Was natürlich auch ganz nett wäre, wäre ELSEIF / ELSE IF
Hi Alexander, bin gerade beim Malochen ;)
Schau mal nach einem befehle so ähnlich wie getchar(),char(), get_char().
Aber ich würde lieber die scancodes verwenden wie oben key(1)...
hier weis das Programm/Compiler gleich nach was er such soll.
Bei den Getchar() sachen muss erst Programintern alles durchgeprüft werden, ist etwas Langsamer.
(Solte ich hier mist geschrieben haben, mir gleich eins auf den Kopfgeben :) )
Dann find ich, sollte die If abfrage etwas geändert werden.
Pseudocode:
if Key(links) and not Key(rechts)and not Key(oben)and not Key(unten)
Hier hast Du dann beseerre Möglich keiten einen Spieler auch schräg laufen zu lasen.
Ist Dafür auch etwas mehr schreibarbeit.
CU.
Hi Slayer,
an die Abfrage mit AND hatte ich nicht gedacht...
Wie gesagt, hab erst vor ein paar Tagen mit GLBasic angefangen ein bisschen rumzuspielen und vorher eigentlich nur Windowsprogramme mit PureBasic geschrieben :)
Spiele sind halt doch ein bisschen was anderes ;)
Aber ELSEIF wäre natürlich der Übersichtlichkeit trotzdem nicht schlecht ;)
Hi,
ich mach das immer so:
WHILE TRUE
dx = KEY(205) - KEY(203)
dy = KEY(208) - KEY(200)
PRINT "DX: "+ dx + " DY: " + dy, 100, 100
SHOWSCREEN
WEND
Wenn der Spieler nicht schräg gehen darf, dann noch:
IF dx THEN dy=0 // oder anders 'rum
elseif ist natürlich manchmal fein. Das werd ich einbauen.
Hi,
das ist genau die Antwort die ich wollte ;)