'=========================================================================== ' Subject: AVOID BLUE MEANIES Date: 04-28-96 (00:00) ' Author: Kurt Kuzba Code: QB, QBasic, PDS ' Origin: FidoNet QUIK_BAS Echo Packet: GAMES.ABC '=========================================================================== '_|_|_| A game based on an original game posted on FIDO. '_|_|_| From: Andrew Jones ... Echo: FidoQBasic '_|_|_| Date: 04-14-96 14:33 ... Subj: arg.bas '_|_|_| No warrantees or guarantees are given or implied. '_|_|_| Released to PUBLIC DOMAIN by Kurt Kuzba. (4/28/96) DECLARE FUNCTION bounc% () TYPE dotdata: ox AS INTEGER: xd AS INTEGER: x AS INTEGER oy AS INTEGER: yd AS INTEGER: y AS INTEGER: END TYPE DIM dot(21) AS dotdata, me(15) AS INTEGER, they(15) AS INTEGER RANDOMIZE (TIMER * 1000): SCREEN 13 CIRCLE (160, 100), 2, 33: PAINT (160, 100), 33 GET (158, 98)-(162, 102), they CIRCLE (160, 100), 2, 65: PAINT (160, 100), 65 GET (158, 98)-(162, 102), me dot(0).x = 158: dot(0).y = 98: dot(0).xd = 0: dot(0).yd = 0 level% = 1000 DO CLS : b$ = STRING$(6, CHR$(177)): S$ = SPACE$(34) LOCATE 6, 1: P$ = STRING$(43, CHR$(177)) + S$ + b$ P$ = P$ + " Avoid all the Blue Meanies while " + b$ + S$ + b$ P$ = P$ + " the red line crosses the screen! " + b$ + S$ + b$ P$ = P$ + " Use the Cursor keys to move. " + b$ + S$ + b$ P$ = P$ + " The ESCAPE key quits the game. " + b$ + S$ + b$ P$ = P$ + " The P key pauses the game. " + b$ + S$ + b$ P$ = P$ + " Possible scores are 0 - 100. " + b$ + S$ + b$ P$ = P$ + " Press any key to begin game. " + b$ + S$ + b$ P$ = P$ + STRING$(37, CHR$(177)) WHILE INKEY$ <> "": WEND: c% = 64 WHILE INKEY$ = "" LOCATE 4, 1: COLOR c%: PRINT P$ c% = (c% + 1) MOD 103: IF c% = 0 THEN c% = 64 WEND CLS FOR t% = 1 TO 20 DO: P% = RND * 300 + 14: LOOP WHILE (P% > 100) AND (P% < 214) dot(t%).x = P%: dot(t%).xd = bounc% DO: P% = RND * 180 + 14: LOOP WHILE (P% > 70) AND (P% < 144) dot(t%).yd = bounc%: dot(t%).y = P% PUT (dot(t%).x, dot(t%).y), they, XOR NEXT dot(0).x = 155: dot(0).y = 95: PUT (dot(0).x, dot(0).y), me, XOR Quit% = 0: Resets& = 1: Score& = 0: Total& = 0 DO: K$ = "": K$ = UCASE$(INKEY$) IF K$ = CHR$(27) THEN Total& = Total& + Score&: EXIT DO IF K$ = "P" THEN WHILE INKEY$ <> "": WEND: WHILE INKEY$ = "": WEND END IF WHILE (INP(&H3DA) AND 8) = 0: WEND WHILE (INP(&H3DA) AND 8) <> 0: WEND FOR egg% = 1 TO 10 + (Score& \ 300) IF ABS(dot(egg%).x - dot(0).x) < 3 THEN IF ABS(dot(egg%).y - dot(0).y) < 3 THEN Resets& = Resets& + 1 Total& = Total& + Score& Score& = 0: SOUND 80, 3 FOR t% = 196 TO 199 LINE (0, t%)-(319, t%), 0 NEXT SOUND 65, 5 END IF END IF dot(egg%).ox = dot(egg%).x: dot(egg%).oy = dot(egg%).y dot(egg%).x = dot(egg%).x + dot(egg%).xd dot(egg%).y = dot(egg%).y + dot(egg%).yd IF dot(egg%).x < 0 THEN dot(egg%).x = 0: dot(egg%).xd = ABS(bounc%) SOUND 999, .03 END IF IF dot(egg%).x > 314 THEN dot(egg%).x = 314: dot(egg%).xd = -(ABS(bounc%)) SOUND 999, .03 END IF IF dot(egg%).y < 0 THEN dot(egg%).y = 0: dot(egg%).yd = ABS(bounc%) SOUND 999, .03 END IF IF dot(egg%).y > 190 THEN dot(egg%).y = 190: dot(egg%).yd = -(ABS(bounc%)) SOUND 999, .03 END IF PUT (dot(egg%).ox, dot(egg%).oy), they, XOR PUT (dot(egg%).x, dot(egg%).y), they, XOR NEXT x% = 0: y% = 0 SELECT CASE INP(&H60) CASE 72: IF dot(0).y > 15 THEN y% = -2 CASE 75: IF dot(0).x > 15 THEN x% = -2 CASE 77: IF dot(0).x < 300 THEN x% = 2 CASE 80: IF dot(0).y < 175 THEN y% = 2 END SELECT K$ = "": K$ = UCASE$(INKEY$) IF K$ = CHR$(27) THEN Total& = Total& + Score&: EXIT DO IF K$ = "P" THEN WHILE INKEY$ <> "": WEND: WHILE INKEY$ = "": WEND END IF WHILE (INP(&H3DA) AND 8) = 0: WEND WHILE (INP(&H3DA) AND 8) <> 0: WEND IF (x% <> 0) OR (y% <> 0) THEN PUT (dot(0).x, dot(0).y), me, XOR dot(0).x = dot(0).x + x%: dot(0).y = dot(0).y + y% PUT (dot(0).x, dot(0).y), me, XOR END IF IF Score& MOD 30 = 0 THEN LINE (Score& \ 10, 196)-(Score& \ 10, 199), 4 END IF Score& = Score& + 1 IF Score& > 3199 THEN Total& = Total& + Score&: EXIT DO LOOP IF Score& > 3199 THEN SOUND 500, 2: COLOR RND * 20 + 50: SOUND 700, 5: LOCATE 11, 16 SOUND 600, 2: PRINT "YOU WON !!": SOUND 800, 7 WHILE INKEY$ <> "": WEND DO COLOR RND * 20 + 50: LOCATE 11, 16: PRINT "YOU WON !!" LOOP WHILE INKEY$ = "" level% = level% * .8 ELSE level% = 1000 END IF bl$ = CHR$(221): br$ = CHR$(222): COLOR RND * 50 + 40 LOCATE 7, 15: PRINT CHR$(220); STRING$(10, CHR$(223)); CHR$(220) LOCATE 8, 15: PRINT bl$; "GAME OVER "; br$ P$ = LEFT$(STR$(FIX((Total& \ Resets&) \ 32)) + " ", 4) LOCATE 9, 15: PRINT bl$; "SCORE:"; P$; br$ LOCATE 10, 15: PRINT bl$; "PLAY AGAIN"; br$ LOCATE 11, 15: PRINT bl$; " (Y/N)? "; br$ LOCATE 12, 15: PRINT CHR$(223); STRING$(10, CHR$(220)); CHR$(223) Que$ = ". YN" + CHR$(13) DO Query$ = UCASE$(INKEY$): DEF SEG = &HA000 L& = (RND * 100 + 110) + (320 * FIX(RND * 48 + 48)) IF PEEK(L&) <> 0 THEN POKE L&, RND * 20 + 75 LOOP WHILE INSTR(Que$, Query$) < 2 IF INSTR(Que$, Query$) > 3 THEN Quit% = -1 LOOP WHILE NOT Quit% SCREEN 0: WIDTH 80, 25 FUNCTION bounc% SHARED Score&, level% b% = (RND MOD (2 + (Score& \ level%))) + 1 IF (INP(64) AND 1) = 0 THEN b% = -b% bounc% = b% END FUNCTION