'=========================================================================== ' Subject: JOYSTICK PADDLE WARS Date: Year of 1994 ' Author: The ABC Programmer Code: QB, QBasic, PDS ' Keys: JOYSTICK,PADDLE,WARS Packet: GAMES.ABC '=========================================================================== '================================================ ' JOYSTICK PADDLE WARS GAME by William Yu (1994) ' ' Requires a joystick installed ' There's no calibration, so you may have to ' change the joystick values to match your own ' or make a calibration at startup. ' The keyboard will not function properly unless ' you remove all occurances of STICK and STRIG '================================================ DIM PAD(80), SHADOW(80), BALL(25) CLS SCREEN 7 V = STICK(0) LOCATE 25, 8: COLOR 9: PRINT "Press a key to continue..." LOCATE 1, 4: COLOR 10: PRINT "PADDLE WARS"; : COLOR 2: PRINT " VERSION 1.0"; : COLOR 13: PRINT " (C) 1994" LOCATE 3, 8: COLOR 14: PRINT "PROGRAMMED BY WILLIAM YU" LOCATE 5, 5: COLOR 12: PRINT CHR$(24): LOCATE 6, 3: PRINT CHR$(27); " * "; CHR$(26) LOCATE 7, 5: PRINT CHR$(25) CIRCLE (100, 42), 4, 12: PAINT (100, 42), 12 CIRCLE (115, 36), 4, 9: PAINT (115, 36), 9 CIRCLE (130, 42), 4, 10: PAINT (130, 42), 10 CIRCLE (115, 50), 4, 14: PAINT (115, 50), 14 LOCATE 8, 2: COLOR 11: PRINT "JOYSTICK": LOCATE 6, 20: PRINT "SHOOT" LOCATE 10, 1: COLOR 15: PRINT "SIMPLE INSTRUCTIONS:" LOCATE 12, 1: COLOR 7: PRINT "Red looking balls will fall from the sky" PRINT "Your mission is to destroy those balls!" PRINT "Easy no?" PRINT : PRINT "To chicken out, press"; : COLOR 15: PRINT " ESC" PRINT COLOR 10: PRINT "You may use your keypad, but it will go" PRINT "slower because of the joystick" PRINT "interference." PRINT : COLOR 14: PRINT "Arrow keys to move, "; : COLOR 12: PRINT "ENTER"; : COLOR 14: PRINT " to shoot" I$ = INPUT$(1) PADDLEPLAY: CLS CIRCLE (160, 150), 20, 10, , , 1 / 9 PAINT (160, 150), 10 GET (134, 145)-(186, 155), PAD LINE (0, 200)-(320, 180), 11, BF X = 135: Y = 145: Z = 185 CIRCLE (X + 25, 190), 20, 3, , , 1 / 9 PAINT (X + 24, 190), 3 GET (134, 185)-(186, 195), SHADOW PSET (140, 190), 11 PSET (140, 150), 0 LINE (0, 20)-(1, 140), 9, BF LINE (2, 20)-(10, 140), 11, BF LINE (10, 20)-(10, 140), 3 LINE (8, 20)-(8, 140), 15 RANDOMIZE TIMER A = INT((300 - 20 + 1) * RND + 20) E2 = INT((280 - 20 + 1) * RND + 20) E3 = INT((280 - 20 + 1) * RND + 20) CIRCLE (A, 20), 4, 12 PAINT (A, 20), 12 GET (A - 5, 14)-(A + 5, 24), BALL E = A - 5: F = 14 M = 20: N = 3 DO T = STICK(0) S = STICK(1) FOR C = 1 TO 10 IF T = C THEN GOSUB MOVELEFT IF S = C THEN GOSUB UP NEXT C FOR CC = V + V - 10 TO V + V IF T = CC THEN GOSUB MOVERIGHT IF S = CC THEN GOSUB DOWN NEXT CC V$ = INKEY$ IF V$ = CHR$(0) + "K" THEN GOSUB MOVELEFT IF V$ = CHR$(0) + "M" THEN GOSUB MOVERIGHT IF V$ = CHR$(0) + "H" THEN GOSUB UP IF V$ = CHR$(0) + "P" THEN GOSUB DOWN IF V$ = CHR$(13) THEN GOSUB SHOOT IF V$ = "+" AND N < 6 THEN N = N + 1 IF V$ = "-" AND N > 1 THEN N = N - 1 IF STRIG(0) THEN GOSUB SHOOT IF STRIG(2) THEN GOSUB SHOOT IF STRIG(4) THEN GOSUB SHOOT IF STRIG(6) THEN GOSUB SHOOT GOSUB ENEMY LOCATE 1, 1: COLOR 15: PRINT "SCORE: "; : COLOR 14: PRINT " Computer:"; : COLOR 12: PRINT EN; : COLOR 14: PRINT "You:"; : COLOR 10: PRINT P LOOP UNTIL V$ = CHR$(27) GOTO QUITPLAY ENEMY: F = F + 2 IF P >= 5 THEN F2 = F2 + 1 IF P >= 25 THEN F3 = F3 + 1.5 PUT (E, F), BALL, PSET IF P >= 5 THEN PUT (E2, F2), BALL, PSET IF P >= 25 THEN PUT (E3, F3), BALL, PSET IF F >= 165 THEN EN = EN + 1: PUT (E, F), BALL: F = 14: RANDOMIZE TIMER: E = INT((300 - 20 + 1) * RND + 20) IF F2 >= 165 THEN EN = EN + 1: PUT (E2, F2), BALL: F2 = 14: RANDOMIZE TIMER: E2 = INT((280 - 20 + 1) * RND + 20) IF F3 >= 165 THEN EN = EN + 1: PUT (E3, F3), BALL: F3 = 14: RANDOMIZE TIMER: E3 = INT((280 - 20 + 1) * RND + 20) RETURN MOVELEFT: IF X <= 5 THEN RETURN X = X - N PUT (X, Y), PAD, PSET PUT (X, Z), SHADOW, PSET RETURN MOVERIGHT: IF X >= 262 THEN RETURN X = X + N PUT (X, Y), PAD, PSET PUT (X, Z), SHADOW, PSET RETURN UP: IF Y <= 145 THEN RETURN Y = Y - 2 IF Z > 180 THEN Z = Z - 1 PUT (X, Y), PAD, PSET PUT (X, Z), SHADOW, PSET RETURN DOWN: IF Y >= 168 THEN RETURN Y = Y + 2 IF Z < 189 THEN Z = Z + 1 PUT (X, Y), PAD, PSET PUT (X, Z), SHADOW, PSET RETURN SHOOT: LINE (0, M)-(10, M + 1), 0, BF M = M + 1 IF P >= 25 THEN LINE (X + 15, Y - 5)-(X + 15, Y - 100 - P), 9 IF P >= 25 THEN LINE (X + 14, Y - 5)-(X + 14, Y - 100 - P), 11 IF P >= 25 THEN LINE (X + 39, Y - 5)-(X + 39, Y - 100 - P), 9 IF P >= 25 THEN LINE (X + 38, Y - 5)-(X + 38, Y - 100 - P), 11 LINE (X + 26, Y - 5)-(X + 26, Y - 100 - P), 11 LINE (X + 25, Y - 5)-(X + 25, Y - 100 - P), 9 FOR D = 1 TO 200: NEXT D FOR T = 18 TO 25 IF X = E - T AND F > 40 - P THEN P = P + 1: PUT (E, F), BALL: F = 14: RANDOMIZE TIMER: E = INT((300 - 20 + 1) * RND + 20): EXIT FOR IF X = E2 - T AND F2 > 40 - P THEN P = P + 1: PUT (E2, F2), BALL: F2 = 14: RANDOMIZE TIMER: E2 = INT((280 - 20 + 1) * RND + 20): EXIT FOR IF X = E3 - T AND F3 > 40 - P THEN P = P + 1: PUT (E3, F3), BALL: F3 = 14: RANDOMIZE TIMER: E3 = INT((280 - 20 + 1) * RND + 20): EXIT FOR IF P >= 25 AND X = E - T + 15 AND F > 40 - P THEN P = P + 1: PUT (E, F), BALL: F = 14: RANDOMIZE TIMER: E = INT((300 - 20 + 1) * RND + 20): EXIT FOR IF P >= 25 AND X = E2 - T + 15 AND F2 > 40 - P THEN P = P + 1: PUT (E2, F2), BALL: F2 = 14: RANDOMIZE TIMER: E2 = INT((280 - 20 + 1) * RND + 20): EXIT FOR IF P >= 25 AND X = E3 - T + 15 AND F3 > 40 - P THEN P = P + 1: PUT (E3, F3), BALL: F3 = 14: RANDOMIZE TIMER: E3 = INT((280 - 20 + 1) * RND + 20): EXIT FOR IF P >= 25 AND X = E - T - 13 AND F > 40 - P THEN P = P + 1: PUT (E, F), BALL: F = 14: RANDOMIZE TIMER: E = INT((300 - 20 + 1) * RND + 20): EXIT FOR IF P >= 25 AND X = E2 - T - 13 AND F2 > 40 - P THEN P = P + 1: PUT (E2, F2), BALL: F2 = 14: RANDOMIZE TIMER: E2 = INT((280 - 20 + 1) * RND + 20): EXIT FOR IF P >= 25 AND X = E3 - T - 13 AND F3 > 40 - P THEN P = P + 1: PUT (E3, F3), BALL: F3 = 14: RANDOMIZE TIMER: E3 = INT((280 - 20 + 1) * RND + 20): EXIT FOR NEXT T LINE (X + 26, Y - 5)-(X + 25, Y - 100 - P), 0, BF IF P >= 25 THEN LINE (X + 15, Y - 5)-(X + 14, Y - 100 - P), 0, BF IF P >= 25 THEN LINE (X + 39, Y - 5)-(X + 38, Y - 100 - P), 0, BF IF M = 140 THEN GOTO STOPPLAY RETURN STOPPLAY: LOCATE 10, 11: COLOR 15: PRINT "ANOTHER GAME? " HUH: I$ = INPUT$(1) IF UCASE$(I$) = "Y" THEN GOTO PADDLEPLAY IF UCASE$(I$) = "N" THEN GOTO QUITPLAY GOTO HUH QUITPLAY: LOCATE 10, 11: COLOR 15: PRINT "THANKS FOR PLAYING!!!" SLEEP 1