'=========================================================================== ' Subject: TYPING TUTOR Date: 05-19-96 (12:00) ' Author: Darryl Schneider Code: QB, QBasic, PDS ' Origin: fish2@datanet.ab.ca Packet: MISC.ABC '=========================================================================== 'This is a little typing drill that tests how 'fast you can type the message and how accurate 'you are in doing so. ' 'Written by Darryl Schneider 'fish2@datanet.ab.ca 'The QBasic Zone 'http://www.geocities.com/SiliconValley/4244/qbasic.html ' CLS START: 'start of program RANDOMIZE TIMER DIM TIMEVAR AS DOUBLE 'declaring all variables DIM WPM AS INTEGER DIM BEGIN AS STRING DIM NUMWORDS AS INTEGER DEFINT E DEFSTR M, T TIMEVAR = TIMER 'giving values to the variables MA1 = "THE " MA2 = "QUICK " MA3 = "BROWN " MA4 = "FOX " MA5 = "JUMPED " MA6 = "OVER " MA7 = "LAZY " MA8 = "DOG." MESSAGE1 = MA1 + MA2 + MA3 + MA4 + MA5 + MA6 + MA1 + MA7 + MA8 NUMWORDS = LEN(MESSAGE1) / 5 'calculating # of words in message CLS 'starting the type test PRINT "" PRINT " TYPE TEST" PRINT "" PRINT "*************************************************" PRINT "" PRINT "THE MESSAGE:" PRINT "" PRINT MESSAGE1 PRINT "" PRINT "READY TO BEGIN(Y)? " 'prompts user for start DO BEGIN = UCASE$(INKEY$) IF BEGIN = "Y" THEN GOSUB TYPING IF BEGIN = "N" OR BEGIN = "Q" THEN GOSUB QUIT LOOP WHILE BEGIN = "" TYPING: PRINT "" INPUT "GO: ", TYPEMESSAGE1 'user message input TYPEMESSAGE1 = UCASE$(TYPEMESSAGE1) TIMEVAR = TIMER - TIMEVAR MB1 = LEFT$(TYPEMESSAGE1, 4) 'giving each variable MB2 = MID$(TYPEMESSAGE1, 5, 6) 'of the input the value MB3 = MID$(TYPEMESSAGE1, 11, 6) 'of a word MB4 = MID$(TYPEMESSAGE1, 17, 4) MB5 = MID$(TYPEMESSAGE1, 21, 7) MB6 = MID$(TYPEMESSAGE1, 28, 5) MB7 = MID$(TYPEMESSAGE1, 33, 4) MB8 = MID$(TYPEMESSAGE1, 37, 5) MB9 = RIGHT$(TYPEMESSAGE1, 4) MC1 = LEFT$(MESSAGE1, 4) 'giving each variable MC2 = MID$(MESSAGE1, 5, 6) 'of the message the value MC3 = MID$(MESSAGE1, 11, 6) 'of a word MC4 = MID$(MESSAGE1, 17, 4) MC5 = MID$(MESSAGE1, 21, 7) MC6 = MID$(MESSAGE1, 28, 5) MC7 = MID$(MESSAGE1, 33, 4) MC8 = MID$(MESSAGE1, 37, 5) MC9 = RIGHT$(MESSAGE1, 4) PRINT "" ERRORS = 0 WPM = 60 / TIMEVAR * NUMWORDS 'calculates words per minute PRINT "It took you "; TIMEVAR; " seconds to type that message." PRINT "You typed that message at "; WPM; " words per minute." PRINT "" IF NOT MB1 = MC1 THEN ERRORS = ERRORS + 1 'tabulates number of IF NOT MB2 = MC2 THEN ERRORS = ERRORS + 1 'errors IF NOT MB3 = MC3 THEN ERRORS = ERRORS + 1 IF NOT MB4 = MC4 THEN ERRORS = ERRORS + 1 IF NOT MB5 = MC5 THEN ERRORS = ERRORS + 1 IF NOT MB6 = MC6 THEN ERRORS = ERRORS + 1 IF NOT MB7 = MC7 THEN ERRORS = ERRORS + 1 IF NOT MB8 = MC8 THEN ERRORS = ERRORS + 1 IF NOT MB9 = MC9 THEN ERRORS = ERRORS + 1 PRINT "You made "; ERRORS; " errors. " E1RRORS = 9 - ERRORS 'calculates accuracy E2RRORS = E1RRORS / 9 * 100 PRINT "Your accuracy was "; E2RRORS; " %" IF ERRORS = 0 THEN GOSUB AGAIN PRINT "" PRINT "These are the following errors that you made: " PRINT "" IF NOT MB1 = MC1 THEN PRINT MB1; " should be "; MC1 'shows IF NOT MB2 = MC2 THEN PRINT MB2; " should be "; MC2 'corrections IF NOT MB3 = MC3 THEN PRINT MB3; " should be "; MC3 IF NOT MB4 = MC4 THEN PRINT MB4; " should be "; MC4 IF NOT MB5 = MC5 THEN PRINT MB5; " should be "; MC5 IF NOT MB6 = MC6 THEN PRINT MB6; " should be "; MC6 IF NOT MB7 = MC7 THEN PRINT MB7; " should be "; MC7 IF NOT MB8 = MC8 THEN PRINT MB8; " should be "; MC8 IF NOT MB9 = MC9 THEN PRINT MB9; " should be "; MC9 AGAIN: PRINT "" PRINT "Try the test again(Y)? " 'prompt to start again DO TT = UCASE$(INKEY$) LOOP WHILE TT = "" IF TT = "Y" THEN GOSUB START IF NOT TT = "Y" THEN GOSUB QUIT QUIT: END