Main sections
05 Input
Tastatur:
GLBasic bietet 2 Möglichkeiten der Tastatureingabe. Wörter und Abfrage von Einzeltasten.
Texteingabe...
INPUT name$, x, y
INPUT zahl, x, y
Der INPUT Befehl liest eine Zeile Text von der Tastatur ein bis die Return Taste gedrückt wird und speichert die Eingabe in der Variablen name$ oder zahl ab.
Wörter hast Du bereits kennengelernt. Tastenabfragen sind auch ganz einfach.
IF KEY (code) = 1; PRINT "TASTE GEDRÜCKT", 20, 20
Die Codes der einzelnen Tasten erhält man bequem über das Programm "Keycodes", das sich bei den Tools befindet.
Zum Beispiel...
IF KEY(57) = 1; PRINT "LEERTASTE GEDRÜCKT", 20, 20;
Maus:
MOUSESTATE mx, my, ma, mb
Schreibt die aktuelle Mausposition (x,y) in die Variablen mx und my. Die linke Maustaste wir in ma geschrieben und die Rechte in mb.
z.B.
MOUSESTATE mx, my, ma, mb;
if ma = 1; PRINT "Linke Maustaste gedrückt", 20, 20;
Willst Du die Geschwindigkeit wissen, solltest Du den Befehl
MOUSEAXIS
Wenn man also wissen möchte, ob sich das Mausrad bewegt, schreibt man:
WHILE TRUE
v=MOUSEAXIS(2)
SELECT v
CASE 0
PRINT "Mausrad ist still", 20, 20
CASE 1
PRINT "Mausrad geht HOCH", 20, 20
CASE -1
PRINT "Mausrad geht RUNTER", 20, 20
ENDSELECT
WEND
Joystick:
JOYSTATE jx, jy, buttona, buttonb
Liefert in jx und jy die Joystickrichtung. Siehe auch JOYSTATE Befehlsreferenz. Sonst wie MOUSESTATE. Für registrierte Benutzer gibt es auch die Möglichkeit mehrere Joysticks abzufragen. Siehe dazu ein Beispiel bei GETJOY....
Dateien (einfach):
GETFILE file$, line, linedata$
GETFILE file$, line, linedata
Liest aus der Datei 'file$' die Zeile Nummer 'line' (0=Erste Zeile!!) und schreibt sie in die Variable linedata$ (linedata). Ist die Datei nicht vorhanden, wird linedata$ das Wort "NO_FILE" enthalten. Ist in der Zeile kein Wort/Zahl ist linedata$ "NO_DATA". Linedata (als Zahl) ist dann 0. Am Besten du liest immer ein Wort aus, und wandelst das im sinnvollen Fall in eine Zahl um. So kannst Du auf Fehler überprüfen.
PUTFILE file$, line, linedata$
PUTFILE file$, line, linedata
Schreibt in die Datei 'file$' das Wort 'linedata$' (die Zahl linedata) in die Zeile 'line'. Ist die Datei nicht vorhanden, wird sie erstellt. Hat die Datei weniger Zeilen als 'line', werden die fehlenden Zeilen mit dem Wort "NO_DATA" versehen. Solltest Du einmal eine Zeile lesen, die das zurückgibt, weisst Du, dass Du Dich in der Zeilennummer geirrt hast.
Dateien (flexibel):
Man öffnet eine Datei mit OPENFILE, benützt dann READ... oder WRITE... Funktionen und schließt die Datei anschließend mit CLOSEFILE.
Mit dem READ/WRITE Funktionen kann man auch binäre Dateien verwenden, ist schneller als mit GETFILE/PUTFILE und hat keine Begrenzung der Dateigröße.
INI-Dateien
INIOPEN file$
value$ = INIGET$(section$, key$)
INIPUT(section$, key$, value$);
Vie Komfortabler als GETFILE/PUTFILE sind die seit Version 3.000 enthaltenen Funktionen um INI Dateien zu lesen oder zu schreiben. Damit ist man von der Größe her nicht begrenzt und kann viel schneller und komfortabler auf Daten zugreifen.
Eine INI Datei ist eine normale Textdatei, die sich in Sektionen von Schlüsseln und Werten trennt. Schlüssel sind wie Variablen. Man kann über deren Namen (Zahl oder Wort) auf Daten zugreifen.
Hier ein Beispiel für eine INI Datei...
[Sound]
MusicVolume=60
SoundVolume=100
SpeachVolume=80
[Video]
ScreenResX=800
ScreenResX=600
[Sound] und [Video] sind Sektionen. MusicVolume usw. sind Schlüssel. Um den Wert von Video/ScreenResX zu lesen schreibt man:
ScreenWidth = INIGET$("VIDEO", "ScreenResX")
Ein Ausführliches Beispiel dazu liefert die Befehlsreferenz zu INIOPEN.
Mit diesen Befehlen ist man an keine Dateigröße gebunden und kan viel flexibler und schneller auf Daten zugreifen.