Möchte man nur ein Zeichen einlesen, oder kontrollieren ob der Benutzer eine Taste drückt, so kommt die Funktion INKEY$ ins Spiel. Wenn eine Taste gedrückt wird, dann liefert INKEY$ das entsprechende Zeichen zurück. Wurde aber keine Taste gedrückt, so liefert diese Funktion eine leere Zeichenkette ("") zurück.
REM---------------------------------------------------------------------------
REM Titel: INKEY.BAS
REM Autor: Marty Winkler
REM Datum: 24.01.2002
REM---------------------------------------------------------------------------
DEFINT A-Z
RANDOMIZE TIMER 'Zufallsgenerator
'initialisieren
SCREEN 0 'Textmodus
COLOR 7, 1: CLS 'Vordergrund: grau
'Hintergrund: blau
LOCATE 3, 1
PRINT TAB(7); "Versuchen Sie so schnell wie möglich das Zeichen,"
PRINT TAB(7); "welches in der Bildschirmmitte erscheint einzutippen."
PRINT
PRINT TAB(7); "Aber zunächst müssen Sie eine Schwierigkeitsstufe auswählen:"
PRINT TAB(7); "1] Leicht, 2] Mittel, 3] Schwer"
DO
Wahl$ = INKEY$
IF Wahl$ = "1" THEN Min = 97: Max = 122 'ASCII-Zeichen von a bis z
IF Wahl$ = "2" THEN Min = 65: Max = 125 ' von A bis }
IF Wahl$ = "3" THEN Min = 33: Max = 125 ' von ! bis }
LOOP UNTIL Max <> 0
Anfang1! = TIMER
FOR Zaehler = 1 TO 20 '20 Zeichen eintippen
Zeichen = INT((Max - Min + 1) * RND + Min) 'einzutippendes Zeichen
'per Zufallsgenerator
'auswählen
LOCATE 10, 40: COLOR 14: PRINT CHR$(Zeichen) 'auf dem Bildschirm schreiben
Anfang2! = TIMER
DO
LOCATE 1, 60
COLOR 2 'Vordergrundfarbe: grün
PRINT USING "###.##"; TIMER - Anfang2! 'nur die ersten beiden
'Ziffern anzeigen
LOOP UNTIL INKEY$ = CHR$(Zeichen)
NEXT
Ende1! = TIMER
Durchschnitt! = (Ende1! - Anfang1!) / 20 'Durchschnitt errechnen
COLOR 12
LOCATE 10, 40: PRINT " " 'letztes Zeichen löschen
PRINT TAB(7); "Pro Zeichen benötigten Sie durchschnittlich "
PRINT TAB(7); USING "###.##"; Durchschnitt!; 'nur die ersten beiden
PRINT TAB(7); "Sekunden!"; 'Ziffern nach dem Komma
'anzeigen
|
Hier folgt eine kurze Erklärung:
| RANDOMIZE TIMER | Initialisiert den Zufallsgenerator mit der Anzahl der Sekunden seit Mitternacht.
Ohne diesen Befehl würde es bei jeder Ausführung des Programms die
gleiche Abfolge von Zeichen geben. |
| TAB(n) | Versetzt den Cursor in die Spalte n. |
| RND | Liefert eine Zahl zwischen 0 und 1. Um eine Zahl in einem bestimmten Bereich
(mit der Obergrenze Max und der Untergrenze Min) zu erhalten muss die Formel welche
hier benutzt wurde verwendet werden. |
| CHR$(n) | Gibt das ASCII-Zeichen mit der Nummer n zurück. Informationen dazu finden Sie in
jedem Tafelwerk oder Sie bewegen in QuickBASIC den Cursor auf den Befehl
CHR$() und drücken die Taste F1. Danach
müssen Sie doppelt auf ASCII-Zeichen-Codes klicken. |
| PRINT USING "###.##"; Variable | Von Variable werden alle Ziffern, die vor dem Komma stehen, angezeigt. Aber nur die
ersten beiden Kommastellen. |
Die INPUT$(n)-Funktion ("Eingabe") wartet auf die Eingabe von genau n Zeichen. Wenn man weniger Zeichen eingeben möchte muss man nach der Eingabe die Enter-Taste drücken. Im Gegensatz zu der Funktion INPUT werden keine Zeichen auf dem Bildschirm angezeigt, genauso verhält es sich auch bei der INKEY$ -Funktion. Man könnte also anstatt:
DO: LOOP WHILE INKEY$ = ""
auch folgendes schreiben:
Variable$ = INPUT$(1)