for-schleife mit types stresst rum

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

adman

Betreff: for-schleife mit types stresst rum

BeitragMi, Jan 02, 2008 13:13
Antworten mit Zitat
Benutzer-Profile anzeigen
hi

ich hab hier ein problem mit types. es geht darum dass ich einen key-parser schreiben will, der die scancodes aus einer datei ausliest. das ganze soll später dazu dienen, im game einstellbare steuerungen zu definieren etc.

mein problem jedoch ist, dass er alle keys auszulesen scheint, aber immer nur den ersten in der datei umsetzt. heisst also: steht die esc-taste oben, funktioniert nur, die, steht ne andere taste obe, funktioniert nur die. ich sitz schon seit stunden an dem problem und komm einfach nicht drauf was der fehler ist. dabei hab ich mit types schon öfter auf diese weise gearbeitet, und es hat immer funktioniert =:-/

zum schluß noch die codes:

test.bb
Code: [AUSKLAPPEN]
Include "function.bb"

GetKeyboardConfig()


Repeat

If ActionHit("1") Then Print "motherfucker"
If ActionHit("Esc") Then Print "Sauber Sebi, smoken?"

If actionhit("A") Then Print "yay"

Until KeyDown(3)
End



function.bb
Code: [AUSKLAPPEN]
;z$ = tempzeile


;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


Type kkeys
 Field b$ ;uchstabe
 Field s  ;cancode
End Type


Global k.kkeys


;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


Function GetKeyboardConfig()

;---------------

config_file = ReadFile("data\keyboard.ini")
If config_file = 0 Then RuntimeError "Error loading <data\keyboard.ini>"

;---------------


While Not Eof(config_file)

   z$ = ReadLine$(config_file)
   
   pos1 = Instr(z$," ",1)
   pos2 = pos1 + 2
   
   k.kkeys   = New kkeys
   k\b$     = Left$(z$,pos1-1)
   k\s      = Mid$(z$,pos2)

   DebugLog k\b$ +"auf" +k\s

Wend



;---------------

End Function




;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%





Function ActionHit(key$)

;---------------

For k.kkeys = Each kkeys

   If key$ = k\b$ Then
      If KeyHit(k\s) Then Return 1
   Else
      Return 0
   End If

Next

;---------------

End Function



und die keyboard.ini (zum test mit nur 4 tasten)
Code: [AUSKLAPPEN]
Esc = 1
1 = 2
A = 30
B = 22



wär super fesch wenn mir jemand helfen könnte Smile[/code]

TheProgrammer

BeitragMi, Jan 02, 2008 13:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Nimm einfach das Return 0 aus deiner ActionHit-Funktion raus. Das Programm prüft ja immer zuerst die Taste, die ganz oben steht. Wenn sie also nicht gedrückt wird, liefert deine Funktion immer ein false zurück.

Mfg
TheProgrammer
aktuelles Projekt: The last day of human being
 

adman

BeitragMi, Jan 02, 2008 13:52
Antworten mit Zitat
Benutzer-Profile anzeigen
ich werd bekloppt, und es war so eindeutig. vielen dank Smile

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group