'=========================================================================== ' Subject: BREAKOUT Date: 06-11-96 (13:59) ' Author: John Wantland Code: QB, QBasic, PDS ' Origin: kwantlan@coffey.com Packet: GAMES.ABC '=========================================================================== REM breakout l = 3 p = 0 SCREEN 12: CLS ' Sorry the points and lives text is so small, but it's the only way I could ' fit it on. CLS : LOCATE 1, 36: PRINT "Breakout" LOCATE 2, 32: PRINT "by John Wantland" PRINT PRINT "To play, just bounce the ball off of your paddle to knock out the blocks." PRINT "You get points for each block you knock out. You also have 3 lives. " PRINT "Use the left and right arrow keys to move your paddle." 2 PRINT "Press a key to continue." DO a$ = INKEY$: IF a$ <> "" THEN EXIT DO n = n + 1 LOOP RANDOMIZE n j = 120 WIDTH 80, 60 x = 75 y = 40 PAINT (320, 240), 8, 8 LINE (x, y)-(x + 500, y + 150), 0, B FOR t = 100 TO 575 STEP 25 LINE (t, y)-(t, y + 200), 0 NEXT t FOR t = y + 25 TO y + 125 STEP 25 LINE (x, t)-(x + 500, t), 0 NEXT t FOR t = 1 TO 120 1 IF RND < .1 THEN c = INT(RND * 15 + 1): ELSE c = 8 IF c = 1 THEN 1 PAINT (x + 5, y + 5), c, 0 x = x + 25: IF x >= 575 THEN x = 75: y = y + 25 NEXT t PAINT (300, 400), 0, 0 x = 320 y = 300 d = 1 m = INT(RND * 2 + 1) x1 = 280 y1 = 420 n = 3 DO PAINT (x, y), 0 LINE (4, 4)-(636, 440), 1, B LINE (x1, y1)-(x1 + 80, y1 + 10), 0, BF LOCATE 57, 1: PRINT "Lives"; l LOCATE 57, 20: PRINT "Points"; p a$ = INKEY$ IF a$ = CHR$(0) + CHR$(75) AND x1 > 5 THEN x1 = x1 - 5 IF a$ = CHR$(0) + CHR$(77) AND x1 + 80 < 635 THEN x1 = x1 + 5 IF d = 1 THEN y = y - 3 IF d = 2 THEN y = y + 3 IF m = 1 THEN x = x - 3 IF m = 2 THEN x = x + 3 IF y >= y1 THEN GOSUB newlife: LINE (x1, y1)-(x1 + 80, y1 + 10), 1, BF CIRCLE (x, y), 5, 15 PAINT (x, y), 15 IF POINT(x, y + 9) = 8 THEN d = 1: p = p + 10: j = j - 1: PAINT (x, y + 9), 0 IF POINT(x, y - 9) = 8 THEN d = 2: p = p + 10: j = j - 1: PAINT (x, y - 9), 0 IF POINT(x + 9, y) = 8 THEN m = 1: p = p + 10: j = j - 1: PAINT (x + 9, y), 0 IF POINT(x - 9, y) = 8 THEN m = 2: p = p + 10: j = j - 1: PAINT (x - 9, y), 0 IF POINT(x + 9, y + 9) = 8 THEN d = 1: m = 1: p = p + 10: j = j - 1: PAINT (x + 9, y + 9), 0 IF POINT(x - 9, y - 9) = 8 THEN d = 2: m = 2: p = p + 10: j = j - 1: PAINT (x - 9, y - 9), 0 IF POINT(x + 9, y - 9) = 8 THEN m = 1: d = 2: p = p + 10: j = j - 1: PAINT (x + 9, y - 9), 0 IF POINT(x - 9, y + 9) = 8 THEN m = 2: d = 1: p = p + 10: j = j - 1: PAINT (x - 9, y + 9), 0 IF POINT(x, y + 9) > 1 AND POINT(x, y + 9) <> 8 THEN d = 1: PAINT (x, y + 9), 8, 0 IF POINT(x, y - 9) > 1 AND POINT(x, y - 9) <> 8 THEN d = 2: PAINT (x, y - 9), 8, 0 IF POINT(x + 9, y) > 1 AND POINT(x + 9, y) <> 8 THEN m = 1: PAINT (x + 9, y), 8, 0 IF POINT(x - 9, y) > 1 AND POINT(x - 9, y) <> 8 THEN m = 2: PAINT (x - 9, y), 8, 0 IF POINT(x + 9, y + 9) > 1 AND POINT(x + 7, y + 9) <> 8 THEN d = 1: m = 1: PAINT (x + 9, y + 9), 8, 0 IF POINT(x - 9, y - 9) > 1 AND POINT(x - 7, y - 9) <> 8 THEN d = 2: m = 2: PAINT (x - 9, y - 9), 8, 0 IF POINT(x + 9, y - 9) > 1 AND POINT(x + 9, y - 9) <> 8 THEN m = 1: d = 2: PAINT (x + 9, y - 9), 8, 0 IF POINT(x - 9, y + 9) > 1 AND POINT(x - 9, y + 9) <> 8 THEN m = 2: d = 1: PAINT (x - 9, y + 9), 8, 0 IF POINT(x, y + 9) = 1 THEN d = 1: IF x <= x1 + 40 THEN m = 2: ELSE m = 1 IF POINT(x, y - 11) = 1 THEN d = 2 IF POINT(x - 10, y) = 1 THEN m = 2 IF POINT(x + 10, y) = 1 THEN m = 1 IF POINT(x - 11, y - 11) = 1 THEN d = 2 IF POINT(x + 11, y - 11) = 1 THEN d = 2 IF j <= 0 THEN 2 FOR t = 1 TO 200: NEXT t LOOP newlife: l = l - 1: IF l <= 0 THEN GOTO die: LOCATE 58, 1: PRINT "Press the Spacebar to continue." DO a$ = INKEY$: IF a$ = " " THEN EXIT DO LOOP LOCATE 58, 1: PRINT " " PAINT (x, y), 0 x = 320: y = 300: d = 1: n = 3 RETURN die: CLS LOCATE 30, 36: PRINT "Game over" LOCATE 31, 36: PRINT "Final score"; p LOCATE 32, 36: PRINT "Play again"; : INPUT y$ IF y$ = "y" OR y$ = "Y" THEN RUN END