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)