Slick2D key code (int code) wird nicht erkannt

Hallo Leute,

ich habe folgendes Problem.

Ich habe zwei Klassen:

Klasse 1 ist die Slick2D Klasse die von BasicGame erbt.

Klasse 2 ist ein Fenster, wo man Spieleinstellungen machen kann.

Es geht darum, dass ich in Klasse 2 die Tastenbelegung einstellen kann.

Das heißt z.B. springen ist die taste "a".

Diese Information muss ich der Klasse 1 übergeben als integer code damit das Spiel dann weiß, das der Spieler beim drücken der a Taste springen muss.

In der Klasse 1 frage ich dann die Taste mit: input.isKeyDown(int code)) ab.

Also lege ich in der Kalsse 2 mit: "event.getKeyCode();" fest welche Taste zum springen verwendet wird.

event.getKeyCode(); liefert mir den int code der Taste. Für ‘a’ ist der int code: 65.

Mit einer getter-Methode übergebe ich diesen Wert an die Klasse 1.

In der Klasse 1 frage ich dann mit: input.isKeyDown(Wert aus getter); ab, ob die Taste gedrückt wurde oder nicht (true oder false).

Leider funktioniert das mit dem int code nicht!

Wenn ich folgendes schreibe: input.isKeyDown(Input.KEY_A); dann funktioniert alles wunderbar. Sobald der int code angegeben wird funktioniert nichts, es kommt aber auch keine Fehlermeldung.

Das Slick2D fenster bleibt ganz klein und startet nicht.

Laut Java doc müsste es aber so gehen:

grafik

Was mache ich falsch, ich komme nicht dahinter?

Wo ist mein Denkfehler?

Bitte euch um Hilfe.

SG

Eine Taste (Key) ist nicht dasselbe wie ein Buchstabe (Character). Das sollte schon deshalb klar sein, weil es keinen char für Alt, Shift oder F7 gibt, und genauso keine Tasten für chinesische oder klingonische Buchstaben.

Slick 2D mappt alles, was irgendwie für Input verwendet werden könnte (z.B. auch Maustasten) zu einem “Key”. Die “int-codes”, also Unicode-Zeichen, sind dagegen dafür da, um Texte in möglichst vielen Sprachen darstellen zu können. Dass es kein einfaches 1:1 Mapping zwischen beiden gibt, ist eigentlich logisch.

Input.KEY_A hat den Wert 30, damit sollte es gehen.

Für den Rest siehe hier: http://slick.ninjacave.com/javadoc/constant-values.html#org.newdawn.slick.Input.KEY_A

Also logisch ist das für mich nicht.

Für mich war es logisch, das der int- code den mir “event.getKeyCode();” liefert 1 zu 1 übernommen werden kann. Das Slick2D alles mappt wußte ich nicht.

event.getKeyCode(); hat mir bei der Konsolenausgabe für ‘a’ den Wert: 65 angezeigt.
Daher habe ich diesen einfach übergeben.

Da muss ich mir jetzt was überlegen, damit dann der Richtige code übernommen wird.

Danke für die Hilfe.

SG