'=========================================================================== ' Subject: CRAZY Date: 06-24-98 (07:19) ' Author: Henrik H”gberg Code: QB, QBasic, PDS ' Origin: hh@ljungby.mail.telia.com Packet: GAMES.ABC '=========================================================================== DECLARE FUNCTION USCORE% (SCORE%, MX%) DECLARE FUNCTION PRUTA% (SX%, SY%, MX%, MY%) DECLARE FUNCTION CRUTA% (SX%, SY%, MX%, MY%) DECLARE FUNCTION URUTA% (XK%, YK%, CT$) DEFINT A-Z ' CRAZY ' Programming and design by ' Henrik H”gberg, also known as Zanius of TMP ' Ideas and mental support by ' Ricky Hansen, also known as LaZy JoNes ' Copyright 1998 (C) Henrik H”gberg ' Feel free to play with this code but please give me ' some credits for it. =) The time is now halfpast six ' in the morning, I begun writing this game about halfpast ' two in the morning so don't complain about any bugs. ;) ' You can reach me at this E-mail address ' hh@ljungby.mail.telia.com ' or... ' tmpzanius@hotmail.com ' Instructions: ' When you see a letter dropping, press that letter on the keyboard ' as fast as you can. If you fail, the letter will drop to the ground ' and stay there. When the level of the letters is too high, you've ' lost the game. If you fails twice in a row you will get punished ' with a blocking line. The meaning of this game is somewhat unknown ' but I've heard that if you've managed to get 100000 points, you've ' wone. =) You will probably get very good at typing when you have ' played this game a couple of hundred times so... AAAHHH! Almost ' forgot, you will have 10000 points when you start and for every ' failure you will lose 500 and for every smash hit you will get ' 100 points plus time bonus. If your score goes below 0, you lose. ' GOOD LUCK!!! SCREEN 8 CONST MX = 30 CONST MY = 20 DIM SHARED RUTA$(MX, MY) AGAIN: CLS 'a - 97 'z - 122 A = CRUTA(1, 1, MX, MY) A = PRUTA(1, 1, MX, MY) SPS# = .2 SPP# = SPS# SCORE = 10000 A = USCORE(SCORE, MX) COLOR 4 LOCATE 2, MX + 2 PRINT "Failures:"; FAIL COLOR 10 LOCATE 3, MX + 2 PRINT "Correct:"; OK RESTORE LOGO FOR LY = 1 TO 10 FOR LX = 1 TO 30 READ P PSET ((LX * 5 + 240), (LY * 5 + 100)), P NEXT LX NEXT LY COLOR 5 LOCATE MY + 2, 8 PRINT "CRAZY - Programming & design by Henrik H”gberg - Zanius of TMP" PRINT " Ideas and mental support by Ricky Hansen - LaZy JoNes" COLOR 3 LOCATE 8, 55 PRINT "Press . during game to" LOCATE 9, 55 PRINT "quit the session." LOCATE 11, 55 PRINT "Press q to quit" COLOR 15, 0 LINE (240, 1)-(240, 160) LINE (240, 160)-(1, 160) LINE (241, 160)-(640, 160) LINE (399, 160)-(399, 101) LINE (241, 99)-(401, 99) COLOR 8, 0 LINE (242, 1)-(242, 161) LINE (241, 1)-(241, 161) LINE (241, 161)-(1, 161) LINE (241, 161)-(640, 161) LINE (400, 161)-(400, 100) LINE (401, 161)-(401, 100) LINE (241, 100)-(401, 100) IF NG = 0 THEN GOTO NGAME PLAY "O3L16CEGDF#AEG#B" DO SP# = SPS# R = 0 DO R = RND * 35 LOOP UNTIL R >= 1 AND R <= MX X = R R = 0 DO R = RND * 200 LOOP UNTIL R >= 97 AND R <= 122 RK$ = CHR$(R) T1# = TIMER FOR Y = 1 TO MY T2# = TIMER SOUND 200 + (Y * 20), .5 COLOR (Y / 2) + 1, 0 IF RUTA$(X, Y) <> " " THEN GOTO PILE END IF IF Y > 1 THEN A = URUTA(X, Y - 1, " ") RUTA$(X, Y - 1) = " " A = URUTA(X, Y, RK$) RUTA$(X, Y) = RK$ ELSE A = URUTA(X, Y, RK$) RUTA$(X, Y) = RK$ END IF T3# = TIMER WHILE T3# - T2# < SP# T3# = TIMER WEND I$ = INKEY$ IF I$ <> "" THEN IF I$ = "." THEN GOTO LOSER IF I$ = RK$ THEN RUTA$(X, Y) = " " A = URUTA(X, Y, " ") GOTO SCORE END IF IF I$ <> RK$ THEN SCNT = SCNT + 1 IF SCNT = 3 THEN FAIL = FAIL + 1 COLOR 4 LOCATE 2, MX + 2 PRINT "Failures:"; FAIL SOUND 800, 2 DO FOR DX = 1 TO MX FOR DY = MY TO 1 STEP -1 IF RUTA$(DX, DY - 1) = " " AND RUTA$(DX, DY) <> "*" THEN RUTA$(DX, DY - 1) = "*" ZET = ZET + 1 A = URUTA(DX, DY - 1, "*") GOTO FOUND END IF NEXT DY FOUND: NEXT DX LOOP UNTIL ZET >= MX ZET = 0 SCNT = 0 SOUND 300, 2 END IF SP# = 0 SPS# = SPP# END IF END IF NEXT Y PILE: SCORE = SCORE - 500 IF SCORE <= 0 THEN GOTO LOSER A = USCORE(SCORE, MX) FAIL = FAIL + 1 COLOR 4 LOCATE 2, MX + 2 PRINT "Failures:"; FAIL SPS# = SPP# IF Y < 3 THEN GOTO LOSER GOTO NADA SCORE: SCORE = SCORE + 100 + (100 / Y) OK = OK + 1 COLOR 10 LOCATE 3, MX + 2 PRINT "Correct:"; OK IF SCORE >= 100000 THEN GOTO WINNER IF CNT = 1 AND SPS# > .02 THEN SPS# = SPS# - .01 CNT = 0 ELSE CNT = CNT + 1 END IF A = USCORE(SCORE, MX) NADA: LOOP END LOSER: PLAY "O3L16CD#GDFA" PLAY "O3L64BA#AG#GF#FED#DC" NGAME: NG = 1 DO COLOR 14, 0 LOCATE 8, 11 PRINT "GAME OVER" LOCATE 10, 6 PRINT "NEW GAME - PRESS N!" SLEEP 1 I$ = INKEY$ IF I$ = "n" THEN GOTO AGAIN IF I$ = "q" THEN CLS : END COLOR 8, 0 LOCATE 8, 11 PRINT "GAME OVER" LOCATE 10, 6 PRINT "NEW GAME - PRESS N!" SLEEP 1 I$ = INKEY$ IF I$ = "n" THEN GOTO AGAIN IF I$ = "q" THEN CLS : END LOOP CLS END WINNER: CLS A = 1 FOR I = 1 TO 100 COLOR A PRINT "CONGRATULATIONS! "; A = A + 1 IF A = 16 THEN A = 1 NEXT I PLAY "L16O1CEGO2CEGO3CEGO4CEGO5CEG" SLEEP 30 END LOGO: DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 DATA 0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,3,3,3,3,3,0,0,0,0,0,0,0,0 DATA 0,0,0,1,0,0,2,1,0,5,5,5,0,1,0,2,1,0,0,0,2,3,0,1,0,0,0,1,0,0 DATA 0,0,1,2,0,0,0,0,0,5,0,2,5,1,0,0,1,0,0,0,3,0,0,1,0,0,0,1,0,0 DATA 0,0,1,2,0,0,0,0,0,5,0,0,5,1,2,2,1,0,0,3,0,0,0,1,2,0,2,1,0,0 DATA 0,0,1,2,0,0,0,0,0,5,5,5,0,1,0,0,1,2,3,0,0,0,0,0,1,2,1,0,0,0 DATA 0,0,1,2,0,0,0,2,1,5,0,2,5,1,0,0,1,3,3,3,3,3,0,0,2,1,2,0,0,0 DATA 0,0,1,2,0,0,2,1,0,5,1,0,5,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0 DATA 0,0,0,1,1,1,1,0,0,5,1,0,5,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 FUNCTION CRUTA (SX, SY, MX, MY) FOR Y = SX TO MY FOR X = SY TO MX RUTA$(X, Y) = " " NEXT X NEXT Y END FUNCTION FUNCTION PRUTA (SX, SY, MX, MY) FOR Y = SX TO MY FOR X = SY TO MX LOCATE Y, X PRINT RUTA$(X, Y) NEXT X NEXT Y END FUNCTION FUNCTION URUTA (XK, YK, CT$) RUTA$(XK, YK) = CT$ LOCATE YK, XK PRINT CT$ END FUNCTION FUNCTION USCORE (SCORE, MX) COLOR 14, 0 LOCATE 1, MX + 2 PRINT "Score:"; STR$(SCORE); " " END FUNCTION