!################################# ! RAIN.BAS A Typing game ! ! by Dave Heyliger - AMUS Staff ! ! Directions: Select a speed and ! type as the letters "rain" ! before you drown!!! ! ! you will need INKEY.M68[100,52] !################################# MAP1 DROP,F !The "letter" MAP1 COUNT,F !The number of letters raining MAP1 DROPS(26),F !An array of "letters" MAP1 COL,F !Where the letter will drop from MAP1 RAINX(26),F !The X coordinates of the raindrops MAP1 RAINY(26),F !The Y coordinates of the raindrops MAP1 KEY,S,1 !The last key you pressed MAP1 J,F !Various integers MAP1 X,F MAP1 I,F MAP1 WATER'LINE,S,80,"" !The dreaded "water" MAP1 WATER,F !The location of the "water" MAP1 SPEED,F !Your selected speed MAP1 TOTAL,F !The total number of characters "survived" !-- The intro screen ! ? TAB(-1,0) ? TAB(5,20) " ENTER THE DELAY VALUE:" ? TAB(6,20) " EXPERT: 250" ? TAB(7,20) " ADVANCED: 500" ? TAB(8,20) " INTERMEDIATE: 1000" ? TAB(9,20) " NOVICE: 1500" ? TAB(10,20)" ALL-THUMBS: 2000" ? TAB(12,20);:INPUT " YOUR SPEED PLEASE.. ",SPEED !--- initialize ! WATER = 24 PRINT TAB(-1,0); PRINT TAB(-1,29); FOR X = 1 TO 79 : WATER'LINE = WATER'LINE + "-" : NEXT X ? TAB(WATER,1) WATER'LINE; COUNT = 1 TOTAL = 0 RANDOMIZE TOP: !--- Create a new "raindrop" and let em fall ! FOR D = 1 TO SPEED : NEXT D KEY="" DROP = INT(65+RND(1)*25) COL = INT(78*RND(1)+1) PRINT TAB(1,COL) CHR$(DROP); RAINY(COUNT)=1 RAINX(COUNT)=COL DROPS(COUNT) = DROP COUNT = COUNT + 1 TOTAL = TOTAL + 1 BUMP: !--- "bump" down the raindrops every pass ! FOR I= 1 TO 26 IF RAINY(I) > 0 & THEN PRINT TAB(RAINY(I),RAINX(I)) " ";: & RAINY(I) = RAINY(I) + 1 :& PRINT TAB(RAINY(I),RAINX(I)) CHR$(DROPS(I)); NEXT I GET'KEY: !--- Get the next key the user enters.. ! XCALL INKEY,KEY KEY = UCS(KEY) IF KEY="" THEN GOTO SPLASH X = 1 CH: IF X > 26 THEN GOTO SPLASH IF DROPS(X) <> ASC(KEY) & THEN X = X + 1 : GOTO CH & ELSE ? TAB(RAINY(X),RAINX(X)) " ";:& FOR J = X TO 25 : RAINY(J) = RAINY(J+1) :& RAINX(J) = RAINX(J+1) :& DROPS(J) = DROPS(J+1) :& NEXT J :& COUNT = COUNT - 1 :& RAINY(26) = 0 : RAINX(26) = 0 : DROPS(26) = 0 :& GOTO CH SPLASH: !--- Check for the "splash" ! IF RAINY(1) <> (WATER - 1) THEN GOTO TOP ? TAB(RAINY(1),RAINX(1)) " "; FOR J = 1 TO 25 : RAINY(J) = RAINY(J+1) :& RAINX(J) = RAINX(J+1) :& DROPS(J) = DROPS(J+1) :& NEXT J COUNT = COUNT - 1 RAINY(26) = 0 : RAINX(26) = 0 : DROPS(26) = 0 WATER = WATER - 1 TOTAL = TOTAL - 1 ? TAB(WATER,1) WATER'LINE; IF WATER <> 2 THEN GOTO SPLASH ? TAB (10,35) " GLUB " ? TAB (12,28) " Total = " TOTAL " " FOR X = 1 TO 9000 : NEXT X PRINT TAB(-1,28) PRINT TAB(-1,0) END