mirror of
https://github.com/QB64-Phoenix-Edition/QB64pe.git
synced 2024-09-28 05:17:49 +00:00
1910 lines
60 KiB
QBasic
1910 lines
60 KiB
QBasic
|
SCREEN 12
|
||
|
RANDOMIZE TIMER
|
||
|
GOSUB title
|
||
|
WIDTH 80, 60
|
||
|
DIM tx(2 TO 16) AS INTEGER
|
||
|
DIM ty(2 TO 16) AS INTEGER
|
||
|
DIM itemx(1, 15) AS INTEGER
|
||
|
DIM itemy(1, 15) AS INTEGER
|
||
|
DIM demoitemx(1, 15) AS INTEGER
|
||
|
DIM demoitemy(1, 15) AS INTEGER
|
||
|
DIM symbolx(1 TO 30) AS INTEGER
|
||
|
DIM symboly(1 TO 30) AS INTEGER
|
||
|
DIM symbolt(1 TO 30) AS INTEGER
|
||
|
DIM symbolc(1 TO 30) AS INTEGER
|
||
|
DIM stime(1 TO 30) AS INTEGER
|
||
|
FOR i = 1 TO 15
|
||
|
demoitemx(1, i) = INT(RND * 74) + 14
|
||
|
demoitemy(1, i) = INT(RND * 74) + 14
|
||
|
NEXT i
|
||
|
speed& = 1
|
||
|
pad& = 1
|
||
|
scoret& = 4
|
||
|
max& = 100
|
||
|
dir& = 1
|
||
|
it1& = 1
|
||
|
it2& = 1
|
||
|
it3& = 1
|
||
|
it4& = 1
|
||
|
it5& = 1
|
||
|
it6& = 1
|
||
|
it7& = 1
|
||
|
it8& = 1
|
||
|
ballx& = 50
|
||
|
bally& = 10
|
||
|
ballxs& = INT(RND * 2) + 1
|
||
|
ballys& = INT(RND * 2) + 1
|
||
|
pad1& = 50
|
||
|
pad2& = 50
|
||
|
pad3& = 50
|
||
|
pad4& = 50
|
||
|
p1& = 1
|
||
|
p2& = 1
|
||
|
p3& = 1
|
||
|
p4& = 1
|
||
|
co& = 1
|
||
|
items& = 1
|
||
|
it& = 15
|
||
|
GOTO start
|
||
|
new:
|
||
|
x& = 240
|
||
|
y& = 240
|
||
|
xs& = 0
|
||
|
ys& = 0
|
||
|
a& = speed&
|
||
|
IF p1& = 0 THEN ly1& = 57 ELSE ly1& = 1
|
||
|
IF p2& = 0 THEN lx1& = 57 ELSE lx1& = 1
|
||
|
IF p3& = 0 THEN ly2& = 423 ELSE ly2& = 479
|
||
|
IF p4& = 0 THEN lx2& = 423 ELSE lx2& = 479
|
||
|
started& = 1
|
||
|
IF items& = 0 THEN it& = 0
|
||
|
IF p1& = 7 THEN p1& = INT(RND * 5) + 2
|
||
|
IF p2& = 7 THEN p2& = INT(RND * 5) + 2
|
||
|
IF p3& = 7 THEN p3& = INT(RND * 5) + 2
|
||
|
IF p4& = 7 THEN p4& = INT(RND * 5) + 2
|
||
|
p1hyper& = 0
|
||
|
p2hyper& = 0
|
||
|
p3hyper& = 0
|
||
|
p4hyper& = 0
|
||
|
p1descore& = 0
|
||
|
p2descore& = 0
|
||
|
p3descore& = 0
|
||
|
p4descore& = 0
|
||
|
IF scoret& = 3 OR scoret& = 6 THEN
|
||
|
p1descore& = max&
|
||
|
p2descore& = max&
|
||
|
p3descore& = max&
|
||
|
p4descore& = max&
|
||
|
END IF
|
||
|
IF p1& = 0 THEN p1descore& = -2000000000
|
||
|
IF p2& = 0 THEN p2descore& = -2000000000
|
||
|
IF p3& = 0 THEN p3descore& = -2000000000
|
||
|
IF p4& = 0 THEN p4descore& = -2000000000
|
||
|
p1score& = p1descore&
|
||
|
p2score& = p2descore&
|
||
|
p3score& = p3descore&
|
||
|
p4score& = p4descore&
|
||
|
p1des& = 240
|
||
|
p2des& = 240
|
||
|
p3des& = 240
|
||
|
p4des& = 240
|
||
|
p1pad& = 240
|
||
|
p2pad& = 240
|
||
|
p3pad& = 240
|
||
|
p4pad& = 240
|
||
|
p1size& = 0
|
||
|
p2size& = 0
|
||
|
p3size& = 0
|
||
|
p4size& = 0
|
||
|
p1desize& = 25
|
||
|
p2desize& = 25
|
||
|
p3desize& = 25
|
||
|
p4desize& = 25
|
||
|
p1dir& = 0
|
||
|
p2dir& = 0
|
||
|
p3dir& = 0
|
||
|
p4dir& = 0
|
||
|
p1scores& = 0
|
||
|
p2scores& = 0
|
||
|
p3scores& = 0
|
||
|
p4scores& = 0
|
||
|
p1speed& = pad& * 7
|
||
|
p2speed& = pad& * 7
|
||
|
p3speed& = pad& * 7
|
||
|
p4speed& = pad& * 7
|
||
|
center& = 0
|
||
|
serve& = 5
|
||
|
colo& = INT(RND * 5) + 1
|
||
|
FOR i = 1 TO it&
|
||
|
itemx(1, i) = INT(RND * 340) + 70
|
||
|
itemy(1, i) = INT(RND * 340) + 70
|
||
|
NEXT i
|
||
|
retrylast:
|
||
|
lasthit& = INT(RND * 4) + 1
|
||
|
IF lasthit& = 1 AND p1& = 0 THEN GOTO retrylast
|
||
|
IF lasthit& = 2 AND p2& = 0 THEN GOTO retrylast
|
||
|
IF lasthit& = 3 AND p3& = 0 THEN GOTO retrylast
|
||
|
IF lasthit& = 4 AND p4& = 0 THEN GOTO retrylast
|
||
|
finished& = 0
|
||
|
subtract& = 0
|
||
|
startedd& = TIMER
|
||
|
FOR i = 1 TO 30
|
||
|
stime(i) = 0
|
||
|
NEXT i
|
||
|
restart:
|
||
|
CLS
|
||
|
IF p1& > 1 THEN p1com& = 1 ELSE p1com& = 0
|
||
|
IF p1& > 1 THEN p1ac& = (6 - p1&) * 20
|
||
|
IF p1& > 1 THEN p1ai& = p1& * 80
|
||
|
IF p2& > 1 THEN p2com& = 1 ELSE p2com& = 0
|
||
|
IF p2& > 1 THEN p2ac& = (6 - p2&) * 20
|
||
|
IF p2& > 1 THEN p2ai& = p2& * 80
|
||
|
IF p3& > 1 THEN p3com& = 1 ELSE p3com& = 0
|
||
|
IF p3& > 1 THEN p3ac& = (6 - p3&) * 20
|
||
|
IF p3& > 1 THEN p3ai& = p3& * 80
|
||
|
IF p4& > 1 THEN p4com& = 1 ELSE p4com& = 0
|
||
|
IF p4& > 1 THEN p4ac& = (6 - p4&) * 20
|
||
|
IF p4& > 1 THEN p4ai& = p4& * 80
|
||
|
GOSUB draww
|
||
|
scombo& = 0
|
||
|
CLS
|
||
|
VIEW SCREEN (lx1&, ly1&)-(lx2&, ly2&)
|
||
|
DO
|
||
|
|
||
|
'IF delay& < 0 THEN delay& = 0
|
||
|
'FOR i = 1 TO delay&
|
||
|
'NEXT i
|
||
|
_DELAY 0.03 + DELAY& / 10000
|
||
|
|
||
|
|
||
|
finished& = TIMER
|
||
|
IF max& > 0 AND (scoret& = 3 OR scoret& = 6) THEN
|
||
|
IF p1& > 0 THEN players& = players& + 1
|
||
|
IF p2& > 0 THEN players& = players& + 1
|
||
|
IF p3& > 0 THEN players& = players& + 1
|
||
|
IF p4& > 0 THEN players& = players& + 1
|
||
|
IF p1descore& < 1 AND p1& > 0 THEN
|
||
|
p1& = 0
|
||
|
p1descore& = -players&
|
||
|
ly1& = 57
|
||
|
serve& = 5
|
||
|
GOSUB centerserve
|
||
|
VIEW
|
||
|
CLS
|
||
|
GOSUB draww
|
||
|
ELSEIF p2descore& < 1 AND p2& > 0 THEN
|
||
|
p2& = 0
|
||
|
p2descore& = -players&
|
||
|
lx1& = 57
|
||
|
serve& = 5
|
||
|
GOSUB centerserve
|
||
|
VIEW
|
||
|
CLS
|
||
|
GOSUB draww
|
||
|
ELSEIF p3descore& < 1 AND p3& > 0 THEN
|
||
|
p3& = 0
|
||
|
p3descore& = -players&
|
||
|
ly2& = 423
|
||
|
serve& = 5
|
||
|
GOSUB centerserve
|
||
|
VIEW
|
||
|
CLS
|
||
|
GOSUB draww
|
||
|
ELSEIF p4descore& < 1 AND p4& > 0 THEN
|
||
|
p4& = 0
|
||
|
p4descore& = -players&
|
||
|
lx2& = 423
|
||
|
serve& = 5
|
||
|
GOSUB centerserve
|
||
|
VIEW
|
||
|
CLS
|
||
|
GOSUB draww
|
||
|
END IF
|
||
|
IF players& = 1 THEN GOTO theend
|
||
|
players& = 0
|
||
|
ELSE
|
||
|
IF (p1descore& > max& - 1 OR p2descore& > max& - 1 OR p3descore& > max& - 1 OR p4descore& > max& - 1) AND max& > 0 THEN GOTO theend
|
||
|
END IF
|
||
|
IF p1score& <> p1descore& AND p1& > 0 THEN
|
||
|
FOR i = 1 TO CLNG(ABS(p1descore& - p1score&) / 10) + 1
|
||
|
IF p1descore& - p1score& > 0 THEN p1score& = p1score& + 1
|
||
|
IF p1descore& - p1score& < 0 THEN p1score& = p1score& - 1
|
||
|
NEXT i
|
||
|
SOUND 1000, .1
|
||
|
GOSUB draww
|
||
|
ELSEIF p2score& <> p2descore& AND p2& > 0 THEN
|
||
|
FOR i = 1 TO CLNG(ABS(p2descore& - p2score&) / 10) + 1
|
||
|
IF p2descore& - p2score& > 0 THEN p2score& = p2score& + 1
|
||
|
IF p2descore& - p2score& < 0 THEN p2score& = p2score& - 1
|
||
|
NEXT i
|
||
|
SOUND 1000, .1
|
||
|
GOSUB draww
|
||
|
ELSEIF p3score& <> p3descore& AND p3& > 0 THEN
|
||
|
FOR i = 1 TO CLNG(ABS(p3descore& - p3score&) / 10) + 1
|
||
|
IF p3descore& - p3score& > 0 THEN p3score& = p3score& + 1
|
||
|
IF p3descore& - p3score& < 0 THEN p3score& = p3score& - 1
|
||
|
NEXT i
|
||
|
SOUND 1000, .1
|
||
|
GOSUB draww
|
||
|
ELSEIF p4score& <> p4descore& AND p4& > 0 THEN
|
||
|
FOR i = 1 TO CLNG(ABS(p4descore& - p4score&) / 10) + 1
|
||
|
IF p4descore& - p4score& > 0 THEN p4score& = p4score& + 1
|
||
|
IF p4descore& - p4score& < 0 THEN p4score& = p4score& - 1
|
||
|
NEXT i
|
||
|
SOUND 1000, .1
|
||
|
GOSUB draww
|
||
|
END IF
|
||
|
|
||
|
IF p1size& > p1desize& THEN p1size& = p1size& - 1
|
||
|
IF p1size& < p1desize& THEN p1size& = p1size& + 1
|
||
|
IF p2size& > p2desize& THEN p2size& = p2size& - 1
|
||
|
IF p2size& < p2desize& THEN p2size& = p2size& + 1
|
||
|
IF p3size& > p3desize& THEN p3size& = p3size& - 1
|
||
|
IF p3size& < p3desize& THEN p3size& = p3size& + 1
|
||
|
IF p4size& > p4desize& THEN p4size& = p4size& - 1
|
||
|
IF p4size& < p4desize& THEN p4size& = p4size& + 1
|
||
|
|
||
|
IF scombo& > -1 THEN
|
||
|
IF scombo& > 0 THEN COLOR 3 ELSE COLOR 0
|
||
|
LOCATE 30, 30: PRINT combo&
|
||
|
scombo& = scombo& - 1
|
||
|
END IF
|
||
|
|
||
|
IF ABS(xs&) < 8 AND ABS(ys&) < 8 AND serve& = 0 THEN
|
||
|
IF ABS(xs&) > ABS(ys&) THEN
|
||
|
IF xs& > 0 THEN
|
||
|
IF ys& > 0 THEN ys& = ys& + (8 / xs&)
|
||
|
IF ys& < 0 THEN ys& = ys& - xs&
|
||
|
xs& = 8
|
||
|
ELSEIF xs& < 0 THEN
|
||
|
IF ys& > 0 THEN ys& = ys& + (8 / ABS(xs&))
|
||
|
IF ys& < 0 THEN ys& = ys& - (8 / ABS(xs&))
|
||
|
xs& = -8
|
||
|
END IF
|
||
|
ELSEIF ABS(xs&) < ABS(ys&) THEN
|
||
|
IF ys& > 0 THEN
|
||
|
IF xs& > 0 THEN xs& = xs& + (8 / ys&)
|
||
|
IF xs& < 0 THEN xs& = xs& - (8 / ys&)
|
||
|
ys& = 8
|
||
|
ELSEIF ys& < 0 THEN
|
||
|
IF xs& > 0 THEN xs& = xs& + (8 / ABS(ys&))
|
||
|
IF xs& < 0 THEN xs& = xs& - (8 / ABS(ys&))
|
||
|
ys& = -8
|
||
|
END IF
|
||
|
ELSEIF ABS(xs&) = ABS(ys&) AND xs& <> 0 THEN
|
||
|
IF xs& > 0 THEN xs& = 8
|
||
|
IF xs& < 0 THEN xs& = -8
|
||
|
IF ys& > 0 THEN ys& = 8
|
||
|
IF ys& < 0 THEN ys& = -8
|
||
|
END IF
|
||
|
END IF
|
||
|
|
||
|
FOR ba = 1 TO a&
|
||
|
|
||
|
IF x& < 65 AND xs& = 0 THEN xs& = -1
|
||
|
IF x& > 415 AND xs& = 0 THEN xs& = 1
|
||
|
IF y& < 65 AND ys& = 0 THEN ys& = -1
|
||
|
IF y& > 415 AND ys& = 0 THEN ys& = 1
|
||
|
|
||
|
IF serve& = 1 THEN
|
||
|
x& = p1pad&
|
||
|
y& = 13
|
||
|
ELSEIF serve& = 2 THEN
|
||
|
x& = 13
|
||
|
y& = p2pad&
|
||
|
ELSEIF serve& = 3 THEN
|
||
|
x& = p3pad&
|
||
|
y& = 467
|
||
|
ELSEIF serve& = 4 THEN
|
||
|
x& = 467
|
||
|
y& = p4pad&
|
||
|
END IF
|
||
|
|
||
|
IF serve& > 0 THEN xs& = 0
|
||
|
IF serve& > 0 THEN ys& = 0
|
||
|
|
||
|
x& = x& + xs&
|
||
|
y& = y& + ys&
|
||
|
|
||
|
IF x& < 60 AND y& < 60 AND p1& > 0 AND p2& > 0 THEN
|
||
|
FOR i = 1 TO 60
|
||
|
IF (x& - 3) < i AND y& - 3 < (60 - i) THEN
|
||
|
SWAP xs&, ys&
|
||
|
xs& = -xs&
|
||
|
ys& = -ys&
|
||
|
IF ABS(xs&) = ABS(ys&) THEN xs& = xs& + 1
|
||
|
x& = i + 3
|
||
|
y& = 63 - i
|
||
|
SOUND 750, .1
|
||
|
END IF
|
||
|
NEXT i
|
||
|
END IF
|
||
|
IF x& < 60 AND y& > 420 AND p2& > 0 AND p3& > 0 THEN
|
||
|
FOR i = 1 TO 60
|
||
|
IF (x& - 3) < i AND (y& + 3) > (420 + i) THEN
|
||
|
SWAP xs&, ys&
|
||
|
IF ABS(xs&) = ABS(ys&) THEN xs& = xs& + 1
|
||
|
x& = i + 3
|
||
|
y& = 417 + i
|
||
|
SOUND 750, .1
|
||
|
END IF
|
||
|
NEXT i
|
||
|
END IF
|
||
|
IF x& > 420 AND y& < 60 AND p4& > 0 AND p1& > 0 THEN
|
||
|
FOR i = 1 TO 60
|
||
|
IF (x& + 3) > (480 - i) AND (y& - 3) < (60 - i) THEN
|
||
|
SWAP xs&, ys&
|
||
|
IF ABS(xs&) = ABS(ys&) THEN xs& = xs& + 1
|
||
|
x& = 477 - i
|
||
|
y& = 63 - i
|
||
|
SOUND 750, .1
|
||
|
END IF
|
||
|
NEXT i
|
||
|
END IF
|
||
|
IF x& > 420 AND y& > 420 AND p3& > 0 AND p4& > 0 THEN
|
||
|
FOR i = 1 TO 60
|
||
|
IF (x& + 3) > (480 - i) AND (y& + 3) > (420 + i) THEN
|
||
|
SWAP xs&, ys&
|
||
|
xs& = -xs&
|
||
|
ys& = -ys&
|
||
|
IF ABS(xs&) = ABS(ys&) THEN xs& = xs& + 1
|
||
|
x& = 477 - i
|
||
|
y& = 417 + i
|
||
|
SOUND 750, .1
|
||
|
END IF
|
||
|
NEXT i
|
||
|
END IF
|
||
|
IF countdown& > 0 THEN countdown& = countdown& - 1
|
||
|
FOR i = 1 TO it&
|
||
|
IF it1& = 0 AND it2& = 0 AND it3& = 0 AND it4& = 0 AND it5& = 0 AND it6& = 0 AND it7& = 0 AND it8& = 0 THEN EXIT FOR
|
||
|
IF x& < itemx(1, i) + 9 AND x& > itemx(1, i) - 9 AND y& < itemy(1, i) + 9 AND y& > itemy(1, i) - 9 THEN
|
||
|
IF hit& = i AND countdown& > 0 THEN GOTO endder
|
||
|
hit& = i
|
||
|
countdown& = 20
|
||
|
GOSUB item
|
||
|
END IF
|
||
|
endder:
|
||
|
NEXT i
|
||
|
IF y& < 60 AND p1& = 0 THEN
|
||
|
ys& = -ys&
|
||
|
IF ys& = 0 THEN ys& = 1
|
||
|
y& = 60
|
||
|
SOUND 500, .1
|
||
|
ELSEIF x& < 60 AND p2& = 0 THEN
|
||
|
xs& = -xs&
|
||
|
IF xs& = 0 THEN xs& = 1
|
||
|
x& = 60
|
||
|
SOUND 500, .1
|
||
|
ELSEIF y& > 420 AND p3& = 0 THEN
|
||
|
ys& = -ys&
|
||
|
IF ys& = 0 THEN ys& = -1
|
||
|
y& = 420
|
||
|
SOUND 500, .1
|
||
|
ELSEIF x& > 420 AND p4& = 0 THEN
|
||
|
xs& = -xs&
|
||
|
IF xs& = 0 THEN xs& = -1
|
||
|
x& = 420
|
||
|
SOUND 500, .1
|
||
|
END IF
|
||
|
IF y& < 8 AND ((x& > (p1pad& - p1size&) AND x& < (p1pad& + p1size&)) OR p1hyper& > 0) THEN
|
||
|
ys& = INT(RND * 8) + 1
|
||
|
IF xs& = 0 THEN xs& = INT(RND * 17) - 8
|
||
|
lasthit& = 1
|
||
|
IF p1hyper& = 1 THEN p1hyper& = 0
|
||
|
y& = 8
|
||
|
GOSUB universal
|
||
|
ELSEIF x& < 8 AND ((y& > (p2pad& - p2size&) AND y& < (p2pad& + p2size&)) OR p2hyper& > 0) THEN
|
||
|
xs& = INT(RND * 8) + 1
|
||
|
IF ys& = 0 THEN ys& = INT(RND * 17) - 8
|
||
|
lasthit& = 2
|
||
|
IF p2hyper& = 1 THEN p2hyper& = 0
|
||
|
x& = 8
|
||
|
GOSUB universal
|
||
|
ELSEIF y& > 472 AND ((x& > (p3pad& - p3size&) AND x& < (p3pad& + p3size&)) OR p3hyper& > 0) THEN
|
||
|
ys& = -(INT(RND * 8) + 1)
|
||
|
IF xs& = 0 THEN xs& = INT(RND * 17) - 8
|
||
|
lasthit& = 3
|
||
|
IF p3hyper& = 1 THEN p3hyper& = 0
|
||
|
y& = 472
|
||
|
GOSUB universal
|
||
|
ELSEIF x& > 472 AND ((y& > (p4pad& - p4size&) AND y& < (p4pad& + p4size&)) OR p4hyper& > 0) THEN
|
||
|
xs& = -(INT(RND * 8) + 1)
|
||
|
IF ys& = 0 THEN ys& = INT(RND * 17) - 8
|
||
|
lasthit& = 4
|
||
|
IF p4hyper& = 1 THEN p4hyper& = 0
|
||
|
x& = 472
|
||
|
GOSUB universal
|
||
|
END IF
|
||
|
IF y& < 0 AND p1& > 0 THEN GOSUB score1
|
||
|
IF x& < 0 AND p2& > 0 THEN GOSUB score2
|
||
|
IF y& > 480 AND p3& > 0 THEN GOSUB score3
|
||
|
IF x& > 480 AND p4& > 0 THEN GOSUB score4
|
||
|
NEXT ba
|
||
|
|
||
|
PSET (tx(16), ty(16)), 0
|
||
|
PSET (tx(15), ty(15)), 8
|
||
|
PSET (tx(14), ty(14)), 8
|
||
|
PSET (tx(13), ty(13)), 7
|
||
|
PSET (tx(12), ty(12)), 7
|
||
|
PSET (tx(11), ty(11)), 4
|
||
|
CIRCLE (tx(10), ty(10)), 1, 0
|
||
|
PSET (tx(10), ty(10)), 4
|
||
|
CIRCLE (tx(9), ty(9)), 1, 4
|
||
|
CIRCLE (tx(8), ty(8)), 1, 4
|
||
|
CIRCLE (tx(7), ty(7)), 1, 4
|
||
|
CIRCLE (tx(6), ty(6)), 1, 12
|
||
|
CIRCLE (tx(5), ty(5)), 1, 12
|
||
|
CIRCLE (tx(4), ty(4)), 2, 0
|
||
|
CIRCLE (tx(4), ty(4)), 1, 12
|
||
|
CIRCLE (tx(3), ty(3)), 2, 4
|
||
|
CIRCLE (tx(3), ty(3)), 1, 14
|
||
|
CIRCLE (tx(2), ty(2)), 3, 0
|
||
|
CIRCLE (tx(2), ty(2)), 2, 4
|
||
|
CIRCLE (tx(2), ty(2)), 1, 14
|
||
|
PSET (tx(2) - 1, ty(2) - 1), 0
|
||
|
PSET (tx(2) + 1, ty(2) - 1), 0
|
||
|
PSET (tx(2) - 1, ty(2) + 1), 0
|
||
|
PSET (tx(2) + 1, ty(2) + 1), 0
|
||
|
LINE (x& - 1, y& - 1)-(x& + 1, y& + 1), 14, BF
|
||
|
CIRCLE (x&, y&), 2, 12
|
||
|
CIRCLE (x&, y&), 3, 4
|
||
|
|
||
|
FOR i = 16 TO 3 STEP -1
|
||
|
tx(i) = tx(i - 1)
|
||
|
ty(i) = ty(i - 1)
|
||
|
NEXT i
|
||
|
tx(2) = x&
|
||
|
ty(2) = y&
|
||
|
|
||
|
IF p1& > 0 AND p1dir& = 2 THEN p1pad& = p1pad& - p1speed&
|
||
|
IF p1& > 0 AND p1dir& = 1 THEN p1pad& = p1pad& + p1speed&
|
||
|
IF p2& > 0 AND p2dir& = 2 THEN p2pad& = p2pad& - p2speed&
|
||
|
IF p2& > 0 AND p2dir& = 1 THEN p2pad& = p2pad& + p2speed&
|
||
|
IF p3& > 0 AND p3dir& = 2 THEN p3pad& = p3pad& - p3speed&
|
||
|
IF p3& > 0 AND p3dir& = 1 THEN p3pad& = p3pad& + p3speed&
|
||
|
IF p4& > 0 AND p4dir& = 2 THEN p4pad& = p4pad& - p4speed&
|
||
|
IF p4& > 0 AND p4dir& = 1 THEN p4pad& = p4pad& + p4speed&
|
||
|
|
||
|
IF p1hyper& > 0 THEN
|
||
|
IF serve& = 0 AND p1hyper& > 1 THEN p1hyper& = p1hyper& - 1
|
||
|
IF ys& < 0 THEN p1pad& = x&
|
||
|
END IF
|
||
|
IF p2hyper& > 0 THEN
|
||
|
IF serve& = 0 AND p2hyper& > 1 THEN p2hyper& = p2hyper& - 1
|
||
|
IF xs& < 0 THEN p2pad& = y&
|
||
|
END IF
|
||
|
IF p3hyper& > 0 THEN
|
||
|
IF serve& = 0 AND p3hyper& > 1 THEN p3hyper& = p3hyper& - 1
|
||
|
IF ys& > 0 THEN p3pad& = x&
|
||
|
END IF
|
||
|
IF p4hyper& > 0 THEN
|
||
|
IF serve& = 0 AND p4hyper& > 1 THEN p4hyper& = p4hyper& - 1
|
||
|
IF xs& > 0 THEN p4pad& = y&
|
||
|
END IF
|
||
|
|
||
|
IF (p1pad& - p1size&) < 60 THEN p1pad& = (60 + p1size&)
|
||
|
IF (p1pad& + p1size&) > 420 THEN p1pad& = (420 - p1size&)
|
||
|
IF (p2pad& - p2size&) < 60 THEN p2pad& = (60 + p2size&)
|
||
|
IF (p2pad& + p2size&) > 420 THEN p2pad& = (420 - p2size&)
|
||
|
IF (p3pad& - p3size&) < 60 THEN p3pad& = (60 + p3size&)
|
||
|
IF (p3pad& + p3size&) > 420 THEN p3pad& = (420 - p3size&)
|
||
|
IF (p4pad& - p4size&) < 60 THEN p4pad& = (60 + p4size&)
|
||
|
IF (p4pad& + p4size&) > 420 THEN p4pad& = (420 - p4size&)
|
||
|
|
||
|
FOR i = 1 TO it&
|
||
|
IF it1& = 0 AND it2& = 0 AND it3& = 0 AND it4& = 0 AND it5& = 0 AND it6& = 0 AND it7& = 0 AND it8& = 0 THEN EXIT FOR
|
||
|
IF items& = 0 THEN EXIT FOR
|
||
|
LINE (itemx(1, i) - 2, itemy(1, i) - 2)-(itemx(1, i) + 2, itemy(1, i) + 2), colo&, B
|
||
|
LINE (itemx(1, i) - 1, itemy(1, i) - 1)-(itemx(1, i) + 1, itemy(1, i) + 1), colo& + 8, B
|
||
|
PSET (itemx(1, i), itemy(1, i)), 15
|
||
|
NEXT i
|
||
|
FOR i = 1 TO 30
|
||
|
IF stime(i) > 0 THEN
|
||
|
IF symbolt(i) = 3 OR symbolt(i) = 4 OR symbolt(i) = 5 OR symbolt(i) = 8 OR symbolt(i) = 9 OR symbolt(i) = 12 OR symbolt(i) = 13 THEN symbolc(i) = 0
|
||
|
PSET (symbolx(i), symboly(i)), symbolc(i)
|
||
|
stime(i) = stime(i) - 1
|
||
|
IF symbolt(i) = 1 THEN DRAW "M-2,0 R4 U L4 BL2 C4 D BL2 U Bl2 D BR12 NE NR3 NF"
|
||
|
IF symbolt(i) = 2 THEN DRAW "M-2,0 R4 U L4 BL2 C2 D BL2 U Bl2 D BR15 NH NL3 NG"
|
||
|
IF symbolt(i) = 3 THEN DRAW "C4 E F C14 L1 C4 BD E BR2 NR3 NE NF BL5 L BR C0 U BL2 C8 G BE C0 L"
|
||
|
IF symbolt(i) = 4 THEN DRAW "C4 E F C14 L1 C4 BD E C2 BR5 NL3 NH NG C4 BL8 L BR C0 U BL2 C8 G BE C0 L"
|
||
|
IF symbolt(i) = 5 THEN DRAW "BD2 C8 F BU C0 L1 BM-2,-1 C12 R BG C0 U2 C4 U1 BD C0 L BU3 BR2 C14 R BR C4 G H E"
|
||
|
IF symbolt(i) = 8 THEN DRAW "C3 BL H2 BD2 E2 BM+3,-1 E R F D G3 R3"
|
||
|
IF symbolt(i) = 9 THEN DRAW "BM-1,-4 C14 R4 D L4 G R4 D L4 G R7 G L3 D R2 G L2 D R G L D"
|
||
|
IF symbolt(i) = 10 THEN DRAW "BL2 R4 U1 L4 BM-5,1 C2 NR3 NF NE BR14 NL3 NG NH"
|
||
|
IF symbolt(i) = 11 THEN DRAW "BL2 R4 U1 L4 BM-2,1 C4 NL3 NG NH BR8 NR3 NF NE"
|
||
|
IF symbolt(i) = 12 THEN DRAW "C3 BM-3,-1 R2 H D2 BR4 F R E U H L2 U2 R3"
|
||
|
IF symbolt(i) = 13 THEN DRAW "C3 BM-3,-1 R2 H D2 BR4 BU4 R F D G L D3 BE C0 L"
|
||
|
IF stime(i) < 5 THEN LINE (symbolx(i) - 10, symboly(i) - 10)-(symbolx(i) + 10, symboly(i) + 10), 0, BF
|
||
|
END IF
|
||
|
NEXT i
|
||
|
|
||
|
IF lasthit& = 1 THEN c& = 1
|
||
|
IF lasthit& = 2 THEN c& = 4
|
||
|
IF lasthit& = 3 THEN c& = 2
|
||
|
IF lasthit& = 4 THEN c& = 6
|
||
|
|
||
|
LINE (lx1&, ly1&)-(lx2&, ly2&), c&, B
|
||
|
LINE (lx1& + 1, ly1& + 1)-(lx2& - 1, ly2& - 1), c& + 8, B
|
||
|
|
||
|
IF p1& = 0 OR p2& = 0 THEN GOTO skip1:
|
||
|
LINE (3, 3)-(3, 60), 1
|
||
|
LINE (3, 3)-(60, 3), 1
|
||
|
LINE (60, 3)-(3, 60), 1
|
||
|
LINE (4, 4)-(4, 59), 1
|
||
|
LINE (4, 4)-(59, 4), 1
|
||
|
LINE (59, 3)-(3, 59), 1
|
||
|
skip1:
|
||
|
IF p4& = 0 OR p1& = 0 THEN GOTO skip2:
|
||
|
LINE (477, 3)-(477, 60), 14
|
||
|
LINE (477, 3)-(420, 3), 14
|
||
|
LINE (420, 3)-(477, 60), 14
|
||
|
LINE (476, 4)-(476, 59), 14
|
||
|
LINE (476, 4)-(421, 4), 14
|
||
|
LINE (421, 3)-(477, 59), 14
|
||
|
skip2:
|
||
|
IF p2& = 0 OR p3& = 0 THEN GOTO skip3:
|
||
|
LINE (3, 477)-(3, 420), 4
|
||
|
LINE (3, 477)-(60, 477), 4
|
||
|
LINE (60, 477)-(3, 420), 4
|
||
|
LINE (4, 476)-(4, 421), 4
|
||
|
LINE (4, 476)-(59, 476), 4
|
||
|
LINE (59, 477)-(3, 421), 4
|
||
|
skip3:
|
||
|
IF p3& = 0 OR p4& = 0 THEN GOTO skip4:
|
||
|
LINE (477, 477)-(477, 420), 2
|
||
|
LINE (477, 477)-(420, 477), 2
|
||
|
LINE (420, 477)-(477, 420), 2
|
||
|
LINE (476, 476)-(476, 421), 2
|
||
|
LINE (476, 476)-(421, 476), 2
|
||
|
LINE (421, 477)-(477, 421), 2
|
||
|
skip4:
|
||
|
|
||
|
IF p1& > 0 THEN LINE (p1pad& - (p1size& - 1), 5)-(p1pad& + (p1size& - 1), 7), 1, BF
|
||
|
IF p1hyper& = 0 AND p1& > 0 THEN LINE (p1pad& - p1size&, 4)-(p1pad& + p1size&, 8), 1, B
|
||
|
IF p1& > 0 THEN LINE (p1pad& - (p1size& + 1), 3)-(61, 9), 0, BF
|
||
|
IF p1& > 0 THEN LINE (p1pad& + (p1size& + 1), 3)-(419, 9), 0, BF
|
||
|
IF p2& > 0 THEN LINE (5, p2pad& - (p2size& - 1))-(7, p2pad& + (p2size& - 1)), 4, BF
|
||
|
IF p2hyper& = 0 AND p2& > 0 THEN LINE (4, p2pad& - p2size&)-(8, p2pad& + p2size&), 4, B
|
||
|
IF p2& > 0 THEN LINE (3, p2pad& - (p2size& + 1))-(9, 61), 0, BF
|
||
|
IF p2& > 0 THEN LINE (3, p2pad& + (p2size& + 1))-(9, 419), 0, BF
|
||
|
IF p3& > 0 THEN LINE (p3pad& - (p3size& - 1), 475)-(p3pad& + (p3size& - 1), 473), 2, BF
|
||
|
IF p3hyper& = 0 AND p3& > 0 THEN LINE (p3pad& - p3size&, 476)-(p3pad& + p3size&, 472), 2, B
|
||
|
IF p3& > 0 THEN LINE (p3pad& - (p3size& + 1), 477)-(61, 471), 0, BF
|
||
|
IF p3& > 0 THEN LINE (p3pad& + (p3size& + 1), 477)-(419, 471), 0, BF
|
||
|
IF p4& > 0 THEN LINE (475, p4pad& - (p4size& - 1))-(473, p4pad& + (p4size& - 1)), 14, BF
|
||
|
IF p4hyper& = 0 AND p4& > 0 THEN LINE (476, p4pad& - p4size&)-(472, p4pad& + p4size&), 14, B
|
||
|
IF p4& > 0 THEN LINE (477, p4pad& - (p4size& + 1))-(471, 61), 0, BF
|
||
|
IF p4& > 0 THEN LINE (477, p4pad& + (p4size& + 1))-(471, 419), 0, BF
|
||
|
a$ = INKEY$
|
||
|
IF p1com& = 1 THEN GOTO player1
|
||
|
IF a$ = "v" THEN p1dir& = 2
|
||
|
IF a$ = "b" THEN p1dir& = 0
|
||
|
IF a$ = "n" THEN p1dir& = 1
|
||
|
IF a$ = "g" AND serve& = 1 THEN GOSUB serve
|
||
|
p2:
|
||
|
IF p2com& = 1 THEN GOTO player2
|
||
|
IF a$ = "q" THEN p2dir& = 2
|
||
|
IF a$ = "a" THEN p2dir& = 0
|
||
|
IF a$ = "z" THEN p2dir& = 1
|
||
|
IF a$ = "s" AND serve& = 2 THEN GOSUB serve
|
||
|
p3:
|
||
|
IF p3com& = 1 THEN GOTO player3
|
||
|
IF a$ = CHR$(0) + "K" THEN p3dir& = 2
|
||
|
IF a$ = CHR$(0) + "P" THEN p3dir& = 0
|
||
|
IF a$ = CHR$(0) + "M" THEN p3dir& = 1
|
||
|
IF a$ = CHR$(0) + "H" AND serve& = 3 THEN GOSUB serve
|
||
|
p4:
|
||
|
IF p4com& = 1 THEN GOTO player4
|
||
|
IF a$ = "]" THEN p4dir& = 2
|
||
|
IF a$ = "'" THEN p4dir& = 0
|
||
|
IF a$ = "/" THEN p4dir& = 1
|
||
|
IF a$ = ";" AND serve& = 4 THEN GOSUB serve
|
||
|
finish:
|
||
|
IF a$ = "=" THEN delay& = delay& - 100
|
||
|
IF a$ = "-" THEN delay& = delay& + 100
|
||
|
IF a$ = CHR$(27) THEN
|
||
|
subtract& = TIMER
|
||
|
GOTO start
|
||
|
ELSEIF a$ = "p" THEN
|
||
|
subtract& = TIMER
|
||
|
COLOR 3
|
||
|
LOCATE 29, 29
|
||
|
PRINT "PAUSED"
|
||
|
SLEEP
|
||
|
DO
|
||
|
c$ = INKEY$
|
||
|
LOOP UNTIL c$ <> "~"
|
||
|
CLS
|
||
|
subtract& = TIMER - subtract&
|
||
|
startedd& = startedd& + subtract&
|
||
|
END IF
|
||
|
IF serve& = 5 THEN GOSUB centerserve
|
||
|
LOOP
|
||
|
universal:
|
||
|
IF p1& > 1 THEN p1ac2& = INT(RND * (p1ac& * 2)) - p1ac&
|
||
|
IF p2& > 1 THEN p2ac2& = INT(RND * (p2ac& * 2)) - p2ac&
|
||
|
IF p3& > 1 THEN p3ac2& = INT(RND * (p3ac& * 2)) - p3ac&
|
||
|
IF p4& > 1 THEN p4ac2& = INT(RND * (p4ac& * 2)) - p4ac&
|
||
|
combo& = combo& + 1
|
||
|
scombo& = 50
|
||
|
p1serve& = 0
|
||
|
p2serve& = 0
|
||
|
p3serve& = 0
|
||
|
p4serve& = 0
|
||
|
SOUND 700, .1
|
||
|
RETURN
|
||
|
|
||
|
serve:
|
||
|
IF serve& = 1 THEN
|
||
|
IF p1dir& = 1 THEN
|
||
|
xs& = 8
|
||
|
ys& = 8
|
||
|
ELSEIF p1dir& = 2 THEN
|
||
|
xs& = -8
|
||
|
ys& = 8
|
||
|
END IF
|
||
|
IF p1dir& = 0 THEN ys& = 8
|
||
|
p1serve& = p1serve& + 1
|
||
|
ELSEIF serve& = 2 THEN
|
||
|
IF p2dir& = 1 THEN
|
||
|
xs& = 8
|
||
|
ys& = 8
|
||
|
ELSEIF p2dir& = 2 THEN
|
||
|
xs& = 8
|
||
|
ys& = -8
|
||
|
END IF
|
||
|
IF p2dir& = 0 THEN xs& = 8
|
||
|
p2serve& = p2serve& + 1
|
||
|
ELSEIF serve& = 3 THEN
|
||
|
IF p3dir& = 1 THEN
|
||
|
xs& = 8
|
||
|
ys& = -8
|
||
|
ELSEIF p3dir& = 2 THEN
|
||
|
xs& = -8
|
||
|
ys& = -8
|
||
|
END IF
|
||
|
IF p3dir& = 0 THEN ys& = -8
|
||
|
p3serve& = p3serve& + 1
|
||
|
ELSEIF serve& = 4 THEN
|
||
|
IF p4dir& = 1 THEN
|
||
|
xs& = -8
|
||
|
ys& = 8
|
||
|
ELSEIF p4dir& = 2 THEN
|
||
|
xs& = -8
|
||
|
ys& = -8
|
||
|
END IF
|
||
|
IF p4dir& = 0 THEN xs& = -8
|
||
|
p4serve& = p4serve& + 1
|
||
|
END IF
|
||
|
serve& = 0
|
||
|
scombo& = 50
|
||
|
RETURN
|
||
|
|
||
|
centerserve:
|
||
|
x& = 240
|
||
|
y& = 240
|
||
|
xs& = 0
|
||
|
ys& = 0
|
||
|
center& = center& + 1
|
||
|
IF center& = 25 THEN
|
||
|
scombo& = 50
|
||
|
combo& = 5
|
||
|
ELSEIF center& = 50 THEN
|
||
|
scombo& = 50
|
||
|
combo& = 4
|
||
|
ELSEIF center& = 75 THEN
|
||
|
scombo& = 50
|
||
|
combo& = 3
|
||
|
ELSEIF center& = 100 THEN
|
||
|
scombo& = 50
|
||
|
combo& = 2
|
||
|
ELSEIF center& = 125 THEN
|
||
|
scombo& = 50
|
||
|
combo& = 1
|
||
|
ELSEIF center& = 150 THEN
|
||
|
retry:
|
||
|
xs& = INT(RND * 17) - 8
|
||
|
ys& = INT(RND * 17) - 8
|
||
|
IF xs& = 0 AND ys& = 0 THEN GOTO retry
|
||
|
IF xs& = 0 AND p1& = 0 AND p3& = 0 THEN GOTO retry
|
||
|
IF ys& = 0 AND p2& = 0 AND p4& = 0 THEN GOTO retry
|
||
|
DO
|
||
|
lasthit& = INT(RND * 4) + 1
|
||
|
IF lasthit& = 1 AND p1& > 0 THEN EXIT DO
|
||
|
IF lasthit& = 2 AND p2& > 0 THEN EXIT DO
|
||
|
IF last7hit& = 3 AND p3& > 0 THEN EXIT DO
|
||
|
IF lasthit& = 4 AND p4& > 0 THEN EXIT DO
|
||
|
LOOP
|
||
|
serve& = 0
|
||
|
center& = 0
|
||
|
END IF
|
||
|
RETURN
|
||
|
|
||
|
score1:
|
||
|
IF scoret& < 4 THEN combo& = 1
|
||
|
IF scoret& = 1 OR scoret& = 4 THEN
|
||
|
IF lasthit& = 2 THEN p2descore& = p2descore& + combo&
|
||
|
IF lasthit& = 3 THEN p3descore& = p3descore& + combo&
|
||
|
IF lasthit& = 4 THEN p4descore& = p4descore& + combo&
|
||
|
IF lasthit& = 1 THEN p1descore& = p1descore& - combo&
|
||
|
ELSEIF scoret& = 2 OR scoret& = 5 THEN
|
||
|
p2descore& = p2descore& + combo&
|
||
|
p3descore& = p3descore& + combo&
|
||
|
p4descore& = p4descore& + combo&
|
||
|
ELSEIF scoret& = 3 OR scoret& = 6 THEN
|
||
|
p1descore& = p1descore& - combo&
|
||
|
END IF
|
||
|
IF lasthit& = 2 THEN p2scores& = p2scores& + 1
|
||
|
IF lasthit& = 3 THEN p3scores& = p3scores& + 1
|
||
|
IF lasthit& = 4 THEN p4scores& = p4scores& + 1
|
||
|
IF lose& = 1 THEN
|
||
|
p1desize& = 25
|
||
|
p1speed& = 4 + pad& * 3
|
||
|
END IF
|
||
|
GOSUB score
|
||
|
RETURN
|
||
|
|
||
|
score2:
|
||
|
IF scoret& < 4 THEN combo& = 1
|
||
|
IF scoret& = 1 OR scoret& = 4 THEN
|
||
|
IF lasthit& = 2 THEN p2descore& = p2descore& - combo&
|
||
|
IF lasthit& = 3 THEN p3descore& = p3descore& + combo&
|
||
|
IF lasthit& = 4 THEN p4descore& = p4descore& + combo&
|
||
|
IF lasthit& = 1 THEN p1descore& = p1descore& + combo&
|
||
|
ELSEIF scoret& = 2 OR scoret& = 5 THEN
|
||
|
p1descore& = p1descore& + combo&
|
||
|
p3descore& = p3descore& + combo&
|
||
|
p4descore& = p4descore& + combo&
|
||
|
ELSEIF scoret& = 3 OR scoret& = 6 THEN
|
||
|
p2descore& = p2descore& - combo&
|
||
|
END IF
|
||
|
IF lasthit& = 1 THEN p1scores& = p1scores& + 1
|
||
|
IF lasthit& = 3 THEN p3scores& = p3scores& + 1
|
||
|
IF lasthit& = 4 THEN p4scores& = p4scores& + 1
|
||
|
IF lose& = 1 THEN
|
||
|
p2desize& = 25
|
||
|
p2speed& = 4 + pad& * 3
|
||
|
END IF
|
||
|
GOSUB score
|
||
|
RETURN
|
||
|
|
||
|
score3:
|
||
|
IF scoret& < 4 THEN combo& = 1
|
||
|
IF scoret& = 1 OR scoret& = 4 THEN
|
||
|
IF lasthit& = 2 THEN p2descore& = p2descore& + combo&
|
||
|
IF lasthit& = 3 THEN p3descore& = p3descore& - combo&
|
||
|
IF lasthit& = 4 THEN p4descore& = p4descore& + combo&
|
||
|
IF lasthit& = 1 THEN p1descore& = p1descore& + combo&
|
||
|
ELSEIF scoret& = 2 OR scoret& = 5 THEN
|
||
|
p1descore& = p1descore& + combo&
|
||
|
p2descore& = p2descore& + combo&
|
||
|
p4descore& = p4descore& + combo&
|
||
|
ELSEIF scoret& = 3 OR scoret& = 6 THEN
|
||
|
p3descore& = p3descore& - combo&
|
||
|
END IF
|
||
|
IF lasthit& = 1 THEN p1scores& = p1scores& + 1
|
||
|
IF lasthit& = 2 THEN p2scores& = p2scores& + 1
|
||
|
IF lasthit& = 4 THEN p4scores& = p4scores& + 1
|
||
|
IF lose& = 1 THEN
|
||
|
p3desize& = 25
|
||
|
p3speed& = 4 + pad& * 3
|
||
|
END IF
|
||
|
GOSUB score
|
||
|
RETURN
|
||
|
|
||
|
score4:
|
||
|
IF scoret& < 4 THEN combo& = 1
|
||
|
IF scoret& = 1 OR scoret& = 4 THEN
|
||
|
IF lasthit& = 2 THEN p2descore& = p2descore& + combo&
|
||
|
IF lasthit& = 3 THEN p3descore& = p3descore& + combo&
|
||
|
IF lasthit& = 4 THEN p4descore& = p4descore& - combo&
|
||
|
IF lasthit& = 1 THEN p1descore& = p1descore& + combo&
|
||
|
ELSEIF scoret& = 2 OR scoret& = 5 THEN
|
||
|
p1descore& = p1descore& + combo&
|
||
|
p2descore& = p2descore& + combo&
|
||
|
p3descore& = p3descore& + combo&
|
||
|
ELSEIF scoret& = 3 OR scoret& = 6 THEN
|
||
|
p4descore& = p4descore& - combo&
|
||
|
END IF
|
||
|
IF lasthit& = 1 THEN p1scores& = p1scores& + 1
|
||
|
IF lasthit& = 2 THEN p2scores& = p2scores& + 1
|
||
|
IF lasthit& = 3 THEN p3scores& = p3scores& + 1
|
||
|
IF lose& = 1 THEN
|
||
|
p4desize& = 25
|
||
|
p4speed& = 4 + pad& * 3
|
||
|
END IF
|
||
|
GOSUB score
|
||
|
RETURN
|
||
|
|
||
|
score:
|
||
|
combo& = 1
|
||
|
scombo& = 0
|
||
|
serve& = lasthit&
|
||
|
IF p1serve& >= 5 OR p2serve& >= 5 OR p3serve& >= 5 OR p4serve& >= 5 THEN
|
||
|
p1serve& = 0
|
||
|
p2serve& = 0
|
||
|
p3serve& = 0
|
||
|
p4serve& = 0
|
||
|
serve& = 5
|
||
|
GOSUB centerserve
|
||
|
END IF
|
||
|
IF serve& = 1 THEN
|
||
|
x& = p1pad&
|
||
|
y& = 13
|
||
|
ELSEIF serve& = 2 THEN
|
||
|
x& = 13
|
||
|
y& = p2pad&
|
||
|
ELSEIF serve& = 3 THEN
|
||
|
x& = p3pad&
|
||
|
y& = 467
|
||
|
ELSEIF serve& = 4 THEN
|
||
|
x& = 467
|
||
|
y& = p4pad&
|
||
|
END IF
|
||
|
waits& = 100
|
||
|
GOSUB draww
|
||
|
IF p1& > 1 THEN p1ac2& = INT(RND * (p1ac& * 2)) - p1ac&
|
||
|
IF p2& > 1 THEN p2ac2& = INT(RND * (p2ac& * 2)) - p2ac&
|
||
|
IF p3& > 1 THEN p3ac2& = INT(RND * (p3ac& * 2)) - p3ac&
|
||
|
IF p4& > 1 THEN p4ac2& = INT(RND * (p4ac& * 2)) - p4ac&
|
||
|
COLOR 0: LOCATE 30, 30: PRINT combo&
|
||
|
RETURN
|
||
|
|
||
|
draww:
|
||
|
VIEW
|
||
|
p1loc& = 1
|
||
|
p2loc& = 1
|
||
|
p3loc& = 1
|
||
|
p4loc& = 1
|
||
|
IF p1descore& <= p2descore& THEN p1loc& = p1loc& + 1
|
||
|
IF p1descore& <= p3descore& THEN p1loc& = p1loc& + 1
|
||
|
IF p1descore& <= p4descore& THEN p1loc& = p1loc& + 1
|
||
|
IF p2descore& <= p1descore& THEN p2loc& = p2loc& + 1
|
||
|
IF p2descore& <= p3descore& THEN p2loc& = p2loc& + 1
|
||
|
IF p2descore& <= p4descore& THEN p2loc& = p2loc& + 1
|
||
|
IF p3descore& <= p1descore& THEN p3loc& = p3loc& + 1
|
||
|
IF p3descore& <= p2descore& THEN p3loc& = p3loc& + 1
|
||
|
IF p3descore& <= p4descore& THEN p3loc& = p3loc& + 1
|
||
|
IF p4descore& <= p1descore& THEN p4loc& = p4loc& + 1
|
||
|
IF p4descore& <= p2descore& THEN p4loc& = p4loc& + 1
|
||
|
IF p4descore& <= p3descore& THEN p4loc& = p4loc& + 1
|
||
|
DO
|
||
|
IF p1loc& = p2loc& OR p1loc& = p3loc& OR p1loc& = p4loc& THEN p1loc& = p1loc& - 1
|
||
|
IF p2loc& = p1loc& OR p2loc& = p3loc& OR p2loc& = p4loc& THEN p2loc& = p2loc& - 1
|
||
|
IF p3loc& = p1loc& OR p3loc& = p2loc& OR p3loc& = p4loc& THEN p3loc& = p3loc& - 1
|
||
|
IF p4loc& = p1loc& OR p4loc& = p2loc& OR p4loc& = p3loc& THEN p4loc& = p4loc& - 1
|
||
|
LOOP UNTIL (p1loc& <> p2loc& AND p2loc& <> p3loc& AND p3loc& <> p4loc& AND p4loc& <> p1loc& AND p2loc& <> p4loc& AND p3loc& <> p1loc&)
|
||
|
LOCATE ((p1loc& - 1) * 15) + 2, 62
|
||
|
COLOR 1
|
||
|
IF p1& = 0 THEN COLOR 0
|
||
|
PRINT "Score:"; p1score&; " "
|
||
|
LOCATE ((p1loc& - 1) * 15) + 3, 62
|
||
|
IF p1com& = 1 THEN
|
||
|
IF p1& = 2 THEN PRINT "Computer Easiest"
|
||
|
IF p1& = 3 THEN PRINT "Computer Easy "
|
||
|
IF p1& = 4 THEN PRINT "Computer Medium "
|
||
|
IF p1& = 5 THEN PRINT "Computer Hard "
|
||
|
IF p1& = 6 THEN PRINT "Computer Hardest"
|
||
|
LOCATE ((p1loc& - 1) * 15) + 4, 62: PRINT " "
|
||
|
LOCATE ((p1loc& - 1) * 15) + 5, 62: PRINT " "
|
||
|
LOCATE ((p1loc& - 1) * 15) + 6, 62: PRINT " "
|
||
|
LOCATE ((p1loc& - 1) * 15) + 7, 62: PRINT " "
|
||
|
LOCATE ((p1loc& - 1) * 15) + 8, 62: PRINT " "
|
||
|
END IF
|
||
|
IF p1com& = 1 THEN GOTO ppp2
|
||
|
PRINT "Human "
|
||
|
LOCATE ((p1loc& - 1) * 15) + 4, 62: PRINT "Keys:"
|
||
|
LOCATE ((p1loc& - 1) * 15) + 5, 62: PRINT "G -Serve "
|
||
|
LOCATE ((p1loc& - 1) * 15) + 6, 62: PRINT "V -Left "
|
||
|
LOCATE ((p1loc& - 1) * 15) + 7, 62: PRINT "B -Stop "
|
||
|
LOCATE ((p1loc& - 1) * 15) + 8, 62: PRINT "N -Right "
|
||
|
ppp2:
|
||
|
LOCATE ((p2loc& - 1) * 15) + 2, 62
|
||
|
COLOR 4
|
||
|
IF p2& = 0 THEN COLOR 0
|
||
|
PRINT "Score:"; p2score&; " "
|
||
|
LOCATE ((p2loc& - 1) * 15) + 3, 62
|
||
|
IF p2com& = 1 THEN
|
||
|
IF p2& = 2 THEN PRINT "Computer Easiest"
|
||
|
IF p2& = 3 THEN PRINT "Computer Easy "
|
||
|
IF p2& = 4 THEN PRINT "Computer Medium "
|
||
|
IF p2& = 5 THEN PRINT "Computer Hard "
|
||
|
IF p2& = 6 THEN PRINT "Computer Hardest"
|
||
|
LOCATE ((p2loc& - 1) * 15) + 4, 62: PRINT " "
|
||
|
LOCATE ((p2loc& - 1) * 15) + 5, 62: PRINT " "
|
||
|
LOCATE ((p2loc& - 1) * 15) + 6, 62: PRINT " "
|
||
|
LOCATE ((p2loc& - 1) * 15) + 7, 62: PRINT " "
|
||
|
LOCATE ((p2loc& - 1) * 15) + 8, 62: PRINT " "
|
||
|
END IF
|
||
|
IF p2com& = 1 THEN GOTO ppp3
|
||
|
PRINT "Human "
|
||
|
LOCATE ((p2loc& - 1) * 15) + 4, 62: PRINT "Keys:"
|
||
|
LOCATE ((p2loc& - 1) * 15) + 5, 62: PRINT "S -Serve "
|
||
|
LOCATE ((p2loc& - 1) * 15) + 6, 62: PRINT "Q -Up "
|
||
|
LOCATE ((p2loc& - 1) * 15) + 7, 62: PRINT "A -Stop "
|
||
|
LOCATE ((p2loc& - 1) * 15) + 8, 62: PRINT "Z -Down "
|
||
|
ppp3:
|
||
|
LOCATE ((p3loc& - 1) * 15) + 2, 62
|
||
|
COLOR 2
|
||
|
IF p3& = 0 THEN COLOR 0
|
||
|
PRINT "Score:"; p3score&; " "
|
||
|
LOCATE ((p3loc& - 1) * 15) + 3, 62
|
||
|
IF p3com& = 1 THEN
|
||
|
IF p3& = 2 THEN PRINT "Computer Easiest"
|
||
|
IF p3& = 3 THEN PRINT "Computer Easy "
|
||
|
IF p3& = 4 THEN PRINT "Computer Medium "
|
||
|
IF p3& = 5 THEN PRINT "Computer Hard "
|
||
|
IF p3& = 6 THEN PRINT "Computer Hardest"
|
||
|
LOCATE ((p3loc& - 1) * 15) + 4, 62: PRINT " "
|
||
|
LOCATE ((p3loc& - 1) * 15) + 5, 62: PRINT " "
|
||
|
LOCATE ((p3loc& - 1) * 15) + 6, 62: PRINT " "
|
||
|
LOCATE ((p3loc& - 1) * 15) + 7, 62: PRINT " "
|
||
|
LOCATE ((p3loc& - 1) * 15) + 8, 62: PRINT " "
|
||
|
END IF
|
||
|
IF p3com& = 1 THEN GOTO ppp4
|
||
|
PRINT "Human "
|
||
|
LOCATE ((p3loc& - 1) * 15) + 4, 62: PRINT "Keys:"
|
||
|
LOCATE ((p3loc& - 1) * 15) + 5, 62: PRINT CHR$(24); " -Serve "
|
||
|
LOCATE ((p3loc& - 1) * 15) + 6, 62: PRINT CHR$(17); " -Left "
|
||
|
LOCATE ((p3loc& - 1) * 15) + 7, 62: PRINT CHR$(25); " -Stop "
|
||
|
LOCATE ((p3loc& - 1) * 15) + 8, 62: PRINT CHR$(16); " -Right "
|
||
|
ppp4:
|
||
|
LOCATE ((p4loc& - 1) * 15) + 2, 62
|
||
|
COLOR 14
|
||
|
IF p4& = 0 THEN COLOR 0
|
||
|
PRINT "Score:"; p4score&; " "
|
||
|
LOCATE ((p4loc& - 1) * 15) + 3, 62
|
||
|
IF p4com& = 1 THEN
|
||
|
IF p4& = 2 THEN PRINT "Computer Easiest"
|
||
|
IF p4& = 3 THEN PRINT "Computer Easy "
|
||
|
IF p4& = 4 THEN PRINT "Computer Medium "
|
||
|
IF p4& = 5 THEN PRINT "Computer Hard "
|
||
|
IF p4& = 6 THEN PRINT "Computer Hardest"
|
||
|
LOCATE ((p4loc& - 1) * 15) + 4, 62: PRINT " "
|
||
|
LOCATE ((p4loc& - 1) * 15) + 5, 62: PRINT " "
|
||
|
LOCATE ((p4loc& - 1) * 15) + 6, 62: PRINT " "
|
||
|
LOCATE ((p4loc& - 1) * 15) + 7, 62: PRINT " "
|
||
|
LOCATE ((p4loc& - 1) * 15) + 8, 62: PRINT " "
|
||
|
END IF
|
||
|
IF p4com& = 1 THEN GOTO fff
|
||
|
PRINT "Human "
|
||
|
LOCATE ((p4loc& - 1) * 15) + 4, 62: PRINT "Keys:"
|
||
|
LOCATE ((p4loc& - 1) * 15) + 5, 62: PRINT "; -Serve "
|
||
|
LOCATE ((p4loc& - 1) * 15) + 6, 62: PRINT "] -Up "
|
||
|
LOCATE ((p4loc& - 1) * 15) + 7, 62: PRINT "' -Stop "
|
||
|
LOCATE ((p4loc& - 1) * 15) + 8, 62: PRINT "/ -Down "
|
||
|
|
||
|
fff:
|
||
|
|
||
|
col1& = 0
|
||
|
col2& = 0
|
||
|
col3& = 0
|
||
|
col4& = 0
|
||
|
IF p1& > 0 THEN
|
||
|
IF p1loc& = 1 THEN col1& = 1
|
||
|
IF p1loc& = 2 THEN col2& = 1
|
||
|
IF p1loc& = 3 THEN col3& = 1
|
||
|
IF p1loc& = 4 THEN col4& = 1
|
||
|
END IF
|
||
|
IF p2& > 0 THEN
|
||
|
IF p2loc& = 1 THEN col1& = 4
|
||
|
IF p2loc& = 2 THEN col2& = 4
|
||
|
IF p2loc& = 3 THEN col3& = 4
|
||
|
IF p2loc& = 4 THEN col4& = 4
|
||
|
END IF
|
||
|
IF p3& > 0 THEN
|
||
|
IF p3loc& = 1 THEN col1& = 2
|
||
|
IF p3loc& = 2 THEN col2& = 2
|
||
|
IF p3loc& = 3 THEN col3& = 2
|
||
|
IF p3loc& = 4 THEN col4& = 2
|
||
|
END IF
|
||
|
IF p4& > 0 THEN
|
||
|
IF p4loc& = 1 THEN col1& = 6
|
||
|
IF p4loc& = 2 THEN col2& = 6
|
||
|
IF p4loc& = 3 THEN col3& = 6
|
||
|
IF p4loc& = 4 THEN col4& = 6
|
||
|
END IF
|
||
|
LINE (481, 0)-(639, 118), col1&, B
|
||
|
IF col1& = 0 THEN col1& = -8
|
||
|
LINE (482, 1)-(638, 117), col1& + 8, B
|
||
|
LINE (481, 121)-(639, 239), col2&, B
|
||
|
IF col2& = 0 THEN col2& = -8
|
||
|
LINE (482, 122)-(638, 238), col2& + 8, B
|
||
|
LINE (481, 241)-(639, 359), col3&, B
|
||
|
IF col3& = 0 THEN col3& = -8
|
||
|
LINE (482, 242)-(638, 358), col3& + 8, B
|
||
|
LINE (481, 361)-(639, 479), col4&, B
|
||
|
IF col4& = 0 THEN col4& = -8
|
||
|
LINE (482, 362)-(638, 478), col4& + 8, B
|
||
|
|
||
|
VIEW SCREEN (lx1& - 1, ly1& - 1)-(lx2&, ly2&)
|
||
|
RETURN
|
||
|
|
||
|
item:
|
||
|
startitem:
|
||
|
FOR j = 1 TO 30
|
||
|
IF stime(j) = 0 THEN symbol& = j
|
||
|
NEXT j
|
||
|
item& = INT(RND * 9) + 1
|
||
|
symbolt(symbol&) = item&
|
||
|
IF item& = 1 THEN
|
||
|
IF it2& = 0 THEN GOTO startitem
|
||
|
IF lasthit& = 1 THEN p1speed& = p1speed& - 1
|
||
|
IF p1speed& < 1 THEN p1speed& = 1
|
||
|
IF lasthit& = 2 THEN p2speed& = p2speed& - 1
|
||
|
IF p2speed& < 1 THEN p2speed& = 1
|
||
|
IF lasthit& = 3 THEN p3speed& = p3speed& - 1
|
||
|
IF p3speed& < 1 THEN p3speed& = 1
|
||
|
IF lasthit& = 4 THEN p4speed& = p4speed& - 1
|
||
|
IF p4speed& < 1 THEN p4speed& = 1
|
||
|
ELSEIF item& = 2 THEN
|
||
|
IF it2& = 0 THEN GOTO startitem
|
||
|
IF lasthit& = 1 THEN p1speed& = p1speed& + 1
|
||
|
IF p1speed& > 30 THEN p1speed& = 30
|
||
|
IF lasthit& = 2 THEN p2speed& = p2speed& + 1
|
||
|
IF p2speed& > 30 THEN p2speed& = 30
|
||
|
IF lasthit& = 3 THEN p3speed& = p3speed& + 1
|
||
|
IF p3speed& > 30 THEN p3speed& = 30
|
||
|
IF lasthit& = 4 THEN p4speed& = p4speed& + 1
|
||
|
IF p4speed& > 30 THEN p4speed& = 30
|
||
|
ELSEIF item& = 3 THEN
|
||
|
IF it1& = 0 THEN GOTO startitem
|
||
|
a& = a& - 1
|
||
|
IF a& < 1 THEN a& = 1
|
||
|
ELSEIF item& = 4 THEN
|
||
|
IF it1& = 0 THEN GOTO startitem
|
||
|
a& = a& + 1
|
||
|
IF a& > 4 THEN a& = 4
|
||
|
ELSEIF item& = 5 THEN
|
||
|
IF it4& = 0 THEN GOTO startitem
|
||
|
rann:
|
||
|
DO
|
||
|
xs& = INT(RND * 17) - 8
|
||
|
ys& = INT(RND * 17) - 8
|
||
|
LOOP UNTIL (xs& <> 0 OR ys& <> 0)
|
||
|
IF xs& = 0 AND p1& = 0 AND p3& = 0 THEN GOTO rann
|
||
|
IF ys& = 0 AND p2& = 0 AND p4& = 0 THEN GOTO rann
|
||
|
ELSEIF item& = 6 THEN
|
||
|
IF it3& = 0 THEN GOTO startitem
|
||
|
rand& = INT(RND * 18) + 1
|
||
|
padsize& = (rand& * 5) + 10
|
||
|
IF lasthit& = 1 THEN
|
||
|
IF padsize& > p1desize& THEN symbolt(symbol&) = 10 ELSE symbolt(symbol&) = 11
|
||
|
p1desize& = padsize&
|
||
|
ELSEIF lasthit& = 2 THEN
|
||
|
IF padsize& > p2desize& THEN symbolt(symbol&) = 10 ELSE symbolt(symbol&) = 11
|
||
|
p2desize& = padsize&
|
||
|
ELSEIF lasthit& = 3 THEN
|
||
|
IF padsize& > p3desize& THEN symbolt(symbol&) = 10 ELSE symbolt(symbol&) = 11
|
||
|
p3desize& = padsize&
|
||
|
ELSEIF lasthit& = 4 THEN
|
||
|
IF padsize& > p4desize& THEN symbolt(symbol&) = 10 ELSE symbolt(symbol&) = 11
|
||
|
p4desize& = padsize&
|
||
|
END IF
|
||
|
ELSEIF item& = 7 THEN
|
||
|
IF INT(RND * 5) + 1 = 1 THEN
|
||
|
IF it8& = 0 THEN GOTO startitem
|
||
|
points& = INT(RND * 50) + 1
|
||
|
symbolt(symbol&) = 13
|
||
|
ELSE
|
||
|
IF it5& = 0 THEN GOTO startitem
|
||
|
symbolt(symbol&) = 12
|
||
|
points& = 5
|
||
|
END IF
|
||
|
IF lasthit& = 1 THEN p1descore& = p1descore& + points&
|
||
|
IF lasthit& = 2 THEN p2descore& = p2descore& + points&
|
||
|
IF lasthit& = 3 THEN p3descore& = p3descore& + points&
|
||
|
IF lasthit& = 4 THEN p4descore& = p4descore& + points&
|
||
|
GOSUB draww
|
||
|
ELSEIF item& = 8 THEN
|
||
|
IF it6& = 0 THEN GOTO startitem
|
||
|
IF INT(RND * 5) + 1 <> 1 THEN GOTO startitem
|
||
|
IF combo& < 50000 THEN combo& = combo& * 2
|
||
|
scombo& = 50
|
||
|
ELSEIF item& = 9 THEN
|
||
|
IF it7& = 0 THEN GOTO startitem
|
||
|
IF INT(RND * 3) + 1 <> 1 THEN GOTO startitem
|
||
|
CLS
|
||
|
IF lasthit& = 1 THEN p1hyper& = INT(RND * 1001) + 500
|
||
|
IF lasthit& = 2 THEN p2hyper& = INT(RND * 1001) + 500
|
||
|
IF lasthit& = 3 THEN p3hyper& = INT(RND * 1001) + 500
|
||
|
IF lasthit& = 4 THEN p4hyper& = INT(RND * 1001) + 500
|
||
|
END IF
|
||
|
iitemx& = itemx(1, hit&)
|
||
|
iitemy& = itemy(1, hit&)
|
||
|
symbolx(symbol&) = iitemx&
|
||
|
symboly(symbol&) = iitemy&
|
||
|
IF re& = 1 THEN
|
||
|
symbolx(symbol&) = iitemx& + 10
|
||
|
symboly(symbol&) = iitemy& + 10
|
||
|
END IF
|
||
|
stime(symbol&) = 100
|
||
|
IF lasthit& = 1 THEN symbolc(symbol&) = 1
|
||
|
IF lasthit& = 2 THEN symbolc(symbol&) = 4
|
||
|
IF lasthit& = 3 THEN symbolc(symbol&) = 2
|
||
|
IF lasthit& = 4 THEN symbolc(symbol&) = 14
|
||
|
LINE (iitemx& - 2, iitemy& - 2)-(iitemx& + 2, iitemy& + 2), 0, BF
|
||
|
IF re& = 1 THEN RETURN
|
||
|
iitemx& = INT(RND * 340) + 70
|
||
|
iitemy& = INT(RND * 340) + 70
|
||
|
itemx(1, hit&) = iitemx&
|
||
|
itemy(1, hit&) = iitemy&
|
||
|
RETURN
|
||
|
|
||
|
player1:
|
||
|
IF y& < p1ai& AND ys& < 0 THEN
|
||
|
p1des& = x& - xs& * (y& / ys&)
|
||
|
p1des& = p1des& + p1ac2&
|
||
|
ELSE
|
||
|
IF serve& = 0 AND p1& > 2 THEN p1des& = 240 ELSE p1des& = p1pad&
|
||
|
END IF
|
||
|
IF serve& = 2 AND p1& > 3 THEN
|
||
|
p1des& = p2pad&
|
||
|
ELSEIF serve& = 3 AND p1& > 3 THEN
|
||
|
p1des& = p3pad&
|
||
|
ELSEIF serve& = 4 AND p1& > 3 THEN
|
||
|
p1des& = 480 - p4pad&
|
||
|
END IF
|
||
|
IF serve& = 1 THEN
|
||
|
IF p2descore& < p4descore& THEN p1des& = 0
|
||
|
IF p4descore& < p2descore& THEN p1des& = 480
|
||
|
IF p2descore& = p4descore& THEN p1des& = 240
|
||
|
END IF
|
||
|
IF p1des& > p1pad& THEN p1dir& = 1
|
||
|
IF p1des& < p1pad& THEN p1dir& = 2
|
||
|
IF p1des& > (p1pad& - p1speed&) AND p1des& < (p1pad& + p1speed&) THEN p1dir& = 0
|
||
|
IF waits& > 0 THEN waits& = waits& - 1
|
||
|
IF serve& = 1 AND waits& = 0 THEN GOSUB serve
|
||
|
GOTO p2
|
||
|
|
||
|
player2:
|
||
|
IF x& < p2ai& AND xs& < 0 THEN
|
||
|
p2des& = y& - ys& * (x& / xs&)
|
||
|
p2des& = p2des& + p2ac2&
|
||
|
ELSE
|
||
|
IF serve& = 0 AND p2& > 2 THEN p2des& = 240 ELSE p2des& = p2pad&
|
||
|
END IF
|
||
|
IF serve& = 1 AND p2& > 3 THEN
|
||
|
p2des& = p1pad&
|
||
|
ELSEIF serve& = 3 AND p2& > 3 THEN
|
||
|
p2des& = 480 - p3pad&
|
||
|
ELSEIF serve& = 4 AND p2& > 3 THEN
|
||
|
p2des& = p4pad&
|
||
|
END IF
|
||
|
IF serve& = 2 THEN
|
||
|
IF p1descore& < p3descore& THEN p2des& = 0
|
||
|
IF p3descore& < p1descore& THEN p2des& = 480
|
||
|
IF p1descore& = p3descore& THEN p2des& = 240
|
||
|
END IF
|
||
|
IF p2des& > p2pad& THEN p2dir& = 1
|
||
|
IF p2des& < p2pad& THEN p2dir& = 2
|
||
|
IF p2des& > (p2pad& - p2speed&) AND p2des& < (p2pad& + p2speed&) THEN p2dir& = 0
|
||
|
IF waits& > 0 THEN waits& = waits& - 1
|
||
|
IF serve& = 2 AND waits& = 0 THEN GOSUB serve
|
||
|
GOTO p3
|
||
|
|
||
|
player3:
|
||
|
IF y& > (480 - p3ai&) AND ys& > 0 THEN
|
||
|
p3des& = x& - xs& * ((480 - y&) / -ys&)
|
||
|
p3des& = p3des& + p3ac2&
|
||
|
ELSE
|
||
|
IF serve& = 0 AND p3& > 2 THEN p3des& = 240 ELSE p3des& = p3pad&
|
||
|
END IF
|
||
|
IF serve& = 1 AND p3& > 3 THEN
|
||
|
p3des& = p1pad&
|
||
|
ELSEIF serve& = 2 AND p3& > 3 THEN
|
||
|
p3des& = 480 - p2pad&
|
||
|
ELSEIF serve& = 4 AND p3& > 3 THEN
|
||
|
p3des& = p4pad&
|
||
|
END IF
|
||
|
IF serve& = 3 THEN
|
||
|
IF p2descore& < p4descore& THEN p3des& = 0
|
||
|
IF p4descore& < p2descore& THEN p3des& = 480
|
||
|
IF p2descore& = p4descore& THEN p3des& = 240
|
||
|
END IF
|
||
|
IF p3des& > p3pad& THEN p3dir& = 1
|
||
|
IF p3des& < p3pad& THEN p3dir& = 2
|
||
|
IF p3des& > (p3pad& - p3speed&) AND p3des& < (p3pad& + p3speed&) THEN p3dir& = 0
|
||
|
IF waits& > 0 THEN waits& = waits& - 1
|
||
|
IF serve& = 3 AND waits& = 0 THEN GOSUB serve
|
||
|
GOTO p4
|
||
|
|
||
|
player4:
|
||
|
IF x& > (480 - p4ai&) AND xs& > 0 THEN
|
||
|
p4des& = y& - ys& * ((480 - x&) / -xs&)
|
||
|
p4des& = p4des& + p4ac2&
|
||
|
ELSE
|
||
|
IF serve& = 0 AND p4& > 2 THEN p4des& = 240 ELSE p4des& = p4pad&
|
||
|
END IF
|
||
|
IF serve& = 1 AND p4& > 3 THEN
|
||
|
p4des& = 480 - p1pad&
|
||
|
ELSEIF serve& = 2 AND p4& > 3 THEN
|
||
|
p4des& = p2pad&
|
||
|
ELSEIF serve& = 3 AND p4& > 3 THEN
|
||
|
p4des& = p3pad&
|
||
|
END IF
|
||
|
IF serve& = 4 THEN
|
||
|
IF p1descore& < p3descore& THEN p4des& = 0
|
||
|
IF p3descore& < p1descore& THEN p4des& = 480
|
||
|
IF p1descore& = p3descore& THEN p4des& = 240
|
||
|
END IF
|
||
|
IF p4des& > p4pad& THEN p4dir& = 1
|
||
|
IF p4des& < p4pad& THEN p4dir& = 2
|
||
|
IF p4des& > (p4pad& - p4speed&) AND p4des& < (p4pad& + p4speed&) THEN p4dir& = 0
|
||
|
IF waits& > 0 THEN waits& = waits& - 1
|
||
|
IF serve& = 4 AND waits& = 0 THEN GOSUB serve
|
||
|
GOTO finish
|
||
|
|
||
|
title:
|
||
|
WIDTH 80, 30
|
||
|
COLOR 4
|
||
|
LOCATE 1, 1: COLOR 8: PRINT "4 Player Pong"
|
||
|
FOR x = 0 TO 64
|
||
|
FOR y = 0 TO 15
|
||
|
LINE ((x * 5) + 160, (y * 5) + 160)-((x * 5) + 165, (y * 5) + 165), POINT(x, y) / 2, B
|
||
|
NEXT y
|
||
|
NEXT x
|
||
|
FOR x = 0 TO 40
|
||
|
FOR y = 0 TO 15
|
||
|
LINE ((x * 5) + 240, (y * 5) + 235)-((x * 5) + 245, (y * 5) + 240), POINT(x + 72, y) / 2, B
|
||
|
NEXT y
|
||
|
NEXT x
|
||
|
LOCATE 1, 1
|
||
|
PRINT " "
|
||
|
LINE (153, 149)-(481, 316), 14, B
|
||
|
LINE (152, 148)-(482, 317), 6, B
|
||
|
COLOR 3: LOCATE 21, 31: PRINT " By Matthew "
|
||
|
COLOR 11
|
||
|
LINE (640, 327)-(353, 327)
|
||
|
LINE (0, 327)-(269, 327)
|
||
|
LINE (269, 334)-(269, 320)
|
||
|
LINE (353, 334)-(353, 320)
|
||
|
LINE (353, 334)-(269, 334)
|
||
|
LINE (353, 320)-(269, 320)
|
||
|
DO
|
||
|
changeword& = changeword& + 1
|
||
|
IF changeword& = 2000 THEN changeword& = 0
|
||
|
IF changeword& < 1001 THEN COLOR 1
|
||
|
IF changeword& > 1000 THEN COLOR 0
|
||
|
LOCATE 27, 34: PRINT "Press any key"
|
||
|
a$ = INKEY$
|
||
|
LOOP UNTIL (a$ <> "")
|
||
|
CLS
|
||
|
RETURN
|
||
|
|
||
|
theend:
|
||
|
VIEW
|
||
|
started& = 0
|
||
|
CLS
|
||
|
p1pl& = 1
|
||
|
p2pl& = 1
|
||
|
p3pl& = 1
|
||
|
p4pl& = 1
|
||
|
IF p1descore& <= p2descore& OR p1& = 0 THEN p1pl& = p1pl& + 1
|
||
|
IF p1descore& <= p3descore& OR p1& = 0 THEN p1pl& = p1pl& + 1
|
||
|
IF p1descore& <= p4descore& OR p1& = 0 THEN p1pl& = p1pl& + 1
|
||
|
IF p2descore& <= p1descore& OR p2& = 0 THEN p2pl& = p2pl& + 1
|
||
|
IF p2descore& <= p3descore& OR p2& = 0 THEN p2pl& = p2pl& + 1
|
||
|
IF p2descore& <= p4descore& OR p2& = 0 THEN p2pl& = p2pl& + 1
|
||
|
IF p3descore& <= p1descore& OR p3& = 0 THEN p3pl& = p3pl& + 1
|
||
|
IF p3descore& <= p2descore& OR p3& = 0 THEN p3pl& = p3pl& + 1
|
||
|
IF p3descore& <= p4descore& OR p3& = 0 THEN p3pl& = p3pl& + 1
|
||
|
IF p4descore& <= p1descore& OR p4& = 0 THEN p4pl& = p4pl& + 1
|
||
|
IF p4descore& <= p2descore& OR p4& = 0 THEN p4pl& = p4pl& + 1
|
||
|
IF p4descore& <= p3descore& OR p4& = 0 THEN p4pl& = p4pl& + 1
|
||
|
tie& = 0
|
||
|
IF p1pl& = 1 THEN
|
||
|
IF p1pl& = p2pl& OR p1pl& = p3pl& OR p1pl& = p4pl& THEN tie& = 1
|
||
|
END IF
|
||
|
IF p2pl& = 1 THEN
|
||
|
IF p2pl& = p3pl& OR p2pl& = p4pl& THEN tie& = 1
|
||
|
END IF
|
||
|
IF p3pl& = 1 THEN
|
||
|
IF p3pl& = p4pl& THEN tie& = 1
|
||
|
END IF
|
||
|
IF p1pl& = 1 THEN co1& = 1
|
||
|
IF p2pl& = 1 THEN co1& = 4
|
||
|
IF p3pl& = 1 THEN co1& = 2
|
||
|
IF p4pl& = 1 THEN co1& = 14
|
||
|
IF tie& = 1 THEN co1& = 15
|
||
|
IF p1pl& = 1 THEN co2& = 9
|
||
|
IF p2pl& = 1 THEN co2& = 12
|
||
|
IF p3pl& = 1 THEN co2& = 10
|
||
|
IF p4pl& = 1 THEN co2& = 6
|
||
|
IF tie& = 1 THEN co2& = 8
|
||
|
co& = co1&
|
||
|
ch& = 0
|
||
|
FOR i = 1 TO 240
|
||
|
ch& = ch& + 1
|
||
|
IF ch& = 10 AND co& = co1& THEN
|
||
|
co& = co2&
|
||
|
ELSEIF ch& = 10 AND co& = co2& THEN
|
||
|
co& = co1&
|
||
|
END IF
|
||
|
IF ch& = 10 THEN ch& = 0
|
||
|
LINE (320 - i, 240 - i)-(320 + i, 240 + i), co&, B
|
||
|
NEXT i
|
||
|
FOR i = 1 TO 100
|
||
|
FOR d = 1 TO 500
|
||
|
NEXT d
|
||
|
LINE (320 - i, 240)-(320 + i, 240), 15
|
||
|
LINE (319 - i, 239)-(321 + i, 241), 7, B
|
||
|
NEXT i
|
||
|
FOR i = 1 TO 100
|
||
|
FOR d = 1 TO 200
|
||
|
NEXT d
|
||
|
LINE (220, 240 - i)-(420, 240 + i), 15, B
|
||
|
LINE (221, 241 - i)-(419, 239 + i), 7, B
|
||
|
LINE (219, 239 - i)-(421, 241 + i), 7, B
|
||
|
LINE (222, 242 - i)-(418, 238 + i), 0, BF
|
||
|
NEXT i
|
||
|
COLOR 3: LOCATE 20, 36: PRINT "Game Stats"
|
||
|
LINE (279, 160)-(359, 160), 3
|
||
|
COLOR co1&
|
||
|
LOCATE 22, 30
|
||
|
IF tie& = 1 THEN PRINT " Tie Game " ELSE IF p1pl& = 1 THEN PRINT "Player 1 is the winner!" ELSE IF p2pl& = 1 THEN PRINT "Player 2 is the winner!" ELSE IF p3pl& = 1 THEN PRINT "Player 3 is the winner!" ELSE IF p4pl& = 1 THEN PRINT _
|
||
|
"Player 4 is the winner!"
|
||
|
IF p1& > 1 THEN p1t$ = "Com " ELSE IF p1& = 1 THEN p1t$ = "Human" ELSE IF p1& = 0 THEN p1t$ = "Off "
|
||
|
IF p2& > 1 THEN p2t$ = "Com " ELSE IF p2& = 1 THEN p2t$ = "Human" ELSE IF p2& = 0 THEN p2t$ = "Off "
|
||
|
IF p3& > 1 THEN p3t$ = "Com " ELSE IF p3& = 1 THEN p3t$ = "Human" ELSE IF p3& = 0 THEN p3t$ = "Off "
|
||
|
IF p4& > 1 THEN p4t$ = "Com " ELSE IF p4& = 1 THEN p4t$ = "Human" ELSE IF p4& = 0 THEN p4t$ = "Off "
|
||
|
DO
|
||
|
IF p1pl& = p2pl& OR p1pl& = p3pl& OR p1pl& = p4pl& THEN p1pl& = p1pl& - 1
|
||
|
IF p2pl& = p1pl& OR p2pl& = p3pl& OR p2pl& = p4pl& THEN p2pl& = p2pl& - 1
|
||
|
IF p3pl& = p1pl& OR p3pl& = p2pl& OR p3pl& = p4pl& THEN p3pl& = p3pl& - 1
|
||
|
IF p4pl& = p1pl& OR p4pl& = p2pl& OR p4pl& = p3pl& THEN p4pl& = p4pl& - 1
|
||
|
LOOP UNTIL (p1pl& <> p2pl& AND p2pl& <> p3pl& AND p3pl& <> p4pl& AND p4pl& <> p1pl& AND p2pl& <> p4pl& AND p3pl& <> p1pl&)
|
||
|
IF p1& = 0 THEN p1descore& = 0
|
||
|
IF p2& = 0 THEN p2descore& = 0
|
||
|
IF p3& = 0 THEN p3descore& = 0
|
||
|
IF p4& = 0 THEN p4descore& = 0
|
||
|
COLOR 3: LOCATE 24, 30: PRINT "Player Score Goals"
|
||
|
COLOR 1: LOCATE 24 + p1pl&, 31: PRINT "P1-"; p1t$
|
||
|
LOCATE 24 + p1pl&, 39: PRINT p1descore&
|
||
|
LOCATE 24 + p1pl&, 46: PRINT p1scores&
|
||
|
COLOR 4: LOCATE 24 + p2pl&, 31: PRINT "P2-"; p2t$
|
||
|
LOCATE 24 + p2pl&, 39: PRINT p2descore&
|
||
|
LOCATE 24 + p2pl&, 46: PRINT p2scores&
|
||
|
COLOR 2: LOCATE 24 + p3pl&, 31: PRINT "P3-"; p3t$
|
||
|
LOCATE 24 + p3pl&, 39: PRINT p3descore&
|
||
|
LOCATE 24 + p3pl&, 46: PRINT p3scores&
|
||
|
COLOR 14: LOCATE 24 + p4pl&, 31: PRINT "P4-"; p4t$
|
||
|
LOCATE 24 + p4pl&, 39: PRINT p4descore&
|
||
|
LOCATE 24 + p4pl&, 46: PRINT p4scores&
|
||
|
gts& = finished& - startedd&
|
||
|
DO
|
||
|
IF gts& >= 60 THEN
|
||
|
gts& = gts& - 60
|
||
|
gtm& = gtm& + 1
|
||
|
ELSE
|
||
|
EXIT DO
|
||
|
END IF
|
||
|
LOOP
|
||
|
DO
|
||
|
IF gtm& >= 60 THEN
|
||
|
gtm& = gtm& - 60
|
||
|
gth& = gth& + 1
|
||
|
ELSE
|
||
|
EXIT DO
|
||
|
END IF
|
||
|
LOOP
|
||
|
COLOR 3: LOCATE 30, 30: PRINT "Game time:"
|
||
|
LOCATE 31, 30: IF gts& > -1 THEN PRINT gts&; "sec" ELSE PRINT "Error"
|
||
|
LOCATE 31, 30: IF gtm& > 0 THEN PRINT gtm&; "min"; gts&; "sec"
|
||
|
LOCATE 31, 30: IF gth& > 0 THEN PRINT gth&; "hr"; gtm&; "min"; gts&; "sec"
|
||
|
LOCATE 33, 31: PRINT "ontinue"
|
||
|
COLOR 11: LOCATE 33, 30: PRINT "C"
|
||
|
|
||
|
DO WHILE a$ <> "c"
|
||
|
a$ = INKEY$
|
||
|
SWAP co1&, co2&
|
||
|
FOR i = 102 TO 240
|
||
|
ch& = ch& + 1
|
||
|
IF ch& = 10 AND co& = co1& THEN
|
||
|
co& = co2&
|
||
|
ELSEIF ch& = 10 AND co& = co2& THEN
|
||
|
co& = co1&
|
||
|
END IF
|
||
|
IF ch& = 10 THEN ch& = 0
|
||
|
LINE (320 - i, 240 - i)-(320 + i, 240 + i), co&, B
|
||
|
NEXT i
|
||
|
LOOP
|
||
|
|
||
|
gts& = 0
|
||
|
gtm& = 0
|
||
|
gth& = 0
|
||
|
|
||
|
GOTO start
|
||
|
|
||
|
switch:
|
||
|
COLOR 5
|
||
|
a$ = INKEY$
|
||
|
IF a$ = CHR$(0) + "P" THEN
|
||
|
arrow& = arrow& + 1
|
||
|
ELSEIF a$ = CHR$(0) + "H" THEN
|
||
|
arrow& = arrow& - 1
|
||
|
ELSEIF a$ = " " THEN
|
||
|
IF arrow& = 1 THEN it1& = it1& + 1
|
||
|
IF arrow& = 2 THEN it2& = it2& + 1
|
||
|
IF arrow& = 3 THEN it3& = it3& + 1
|
||
|
IF arrow& = 4 THEN it4& = it4& + 1
|
||
|
IF arrow& = 5 THEN it5& = it5& + 1
|
||
|
IF arrow& = 6 THEN it8& = it8& + 1
|
||
|
IF arrow& = 7 THEN it6& = it6& + 1
|
||
|
IF arrow& = 8 THEN it7& = it7& + 1
|
||
|
END IF
|
||
|
IF it1& = 2 THEN it1& = 0
|
||
|
IF it2& = 2 THEN it2& = 0
|
||
|
IF it3& = 2 THEN it3& = 0
|
||
|
IF it4& = 2 THEN it4& = 0
|
||
|
IF it5& = 2 THEN it5& = 0
|
||
|
IF it6& = 2 THEN it6& = 0
|
||
|
IF it7& = 2 THEN it7& = 0
|
||
|
IF it8& = 2 THEN it8& = 0
|
||
|
IF arrow& = 9 THEN arrow& = 1
|
||
|
IF arrow& = 0 THEN arrow& = 8
|
||
|
|
||
|
DRAW "BM583,130 C4 E F C14 L1 C4 BD E BR2 NR3 NE NF BL5 L BR C0 U BL2 C8 G BE C0 L"
|
||
|
DRAW "BM583,134 C4 E F C14 L1 C4 BD E C2 BR5 NL3 NH NG C4 BL8 L BR C0 U BL2 C8 G BE C0 L"
|
||
|
DRAW "BM578,138 C1 M-2,0 R4 U L4 BL2 C4 D BL2 U Bl2 D BR12 NE NR3 NF"
|
||
|
DRAW "BM578,142 C1 M-2,0 R4 U L4 BL2 C2 D BL2 U Bl2 D BR15 NH NL3 NG"
|
||
|
DRAW "BM585,146 C1 BL2 R4 U1 L4 BM-5,1 C2 NR3 NF NE BR14 NL3 NG NH"
|
||
|
DRAW "BM585,150 C1 BL2 R4 U1 L4 BM-2,1 C4 NL3 NG NH BR8 NR3 NF NE"
|
||
|
DRAW "BM574,156 BD2 C8 F BU C0 L1 BM-2,-1 C12 R BG C0 U2 C4 U1 BD C0 L BU3 BR2 C14 R BR C4 G H E"
|
||
|
DRAW "BM583,164 C3 BM-3,-1 R2 H D2 BR4 F R E U H L2 U2 R3"
|
||
|
DRAW "BM574,172 C3 BM-3,-1 R2 H D2 BR4 BU4 R F D G L D3 BE C0 L"
|
||
|
DRAW "BM583,180 C3 BL H2 BD2 E2 BM+3,-1 E R F D G3 R3"
|
||
|
DRAW "BM575,187 BM-1,-4 C14 R4 D L4 G R4 D L4 G R7 G L3 D R2 G L2 D R G L D"
|
||
|
|
||
|
COLOR 4
|
||
|
IF arrow& = 1 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 17, 42
|
||
|
PRINT "Change Ball Speed -"
|
||
|
IF arrow& = 2 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 18, 42
|
||
|
PRINT "Change Pad Speed -"
|
||
|
IF arrow& = 3 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 19, 42
|
||
|
PRINT "Change Pad Size -"
|
||
|
IF arrow& = 4 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 20, 42
|
||
|
PRINT "Change Ball Direction -"
|
||
|
IF arrow& = 5 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 21, 42
|
||
|
PRINT "5 Point Bonus -"
|
||
|
IF arrow& = 6 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 22, 42
|
||
|
PRINT "Major Point Bonus -"
|
||
|
IF arrow& = 7 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 23, 42
|
||
|
PRINT "Combo Double -"
|
||
|
IF arrow& = 8 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 24, 42
|
||
|
PRINT "Hyper Mode -"
|
||
|
IF it1& = 1 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 17, 66
|
||
|
PRINT "On "
|
||
|
IF it1& = 0 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 17, 69
|
||
|
PRINT "Off"
|
||
|
IF it2& = 1 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 18, 66
|
||
|
PRINT "On "
|
||
|
IF it2& = 0 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 18, 69
|
||
|
PRINT "Off"
|
||
|
IF it3& = 1 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 19, 66
|
||
|
PRINT "On "
|
||
|
IF it3& = 0 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 19, 69
|
||
|
PRINT "Off"
|
||
|
IF it4& = 1 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 20, 66
|
||
|
PRINT "On "
|
||
|
IF it4& = 0 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 20, 69
|
||
|
PRINT "Off"
|
||
|
IF it5& = 1 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 21, 66
|
||
|
PRINT "On "
|
||
|
IF it5& = 0 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 21, 69
|
||
|
PRINT "Off"
|
||
|
IF it8& = 1 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 22, 66
|
||
|
PRINT "On "
|
||
|
IF it8& = 0 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 22, 69
|
||
|
PRINT "Off"
|
||
|
IF it6& = 1 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 23, 66
|
||
|
PRINT "On "
|
||
|
IF it6& = 0 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 23, 69
|
||
|
PRINT "Off"
|
||
|
IF it7& = 1 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 24, 66
|
||
|
PRINT "On "
|
||
|
IF it7& = 0 THEN COLOR 12 ELSE COLOR 4
|
||
|
LOCATE 24, 69
|
||
|
PRINT "Off"
|
||
|
|
||
|
IF a$ = "d" THEN
|
||
|
CLS
|
||
|
switch& = 0
|
||
|
END IF
|
||
|
GOTO skip
|
||
|
|
||
|
start:
|
||
|
IF it& = 0 THEN it& = 15
|
||
|
fic& = INT(RND * 5) + 1
|
||
|
IF p1r& = 1 THEN p1m& = p1&
|
||
|
IF p2r& = 1 THEN p2m& = p2&
|
||
|
IF p3r& = 1 THEN p3m& = p3&
|
||
|
IF p4r& = 1 THEN p4m& = p4&
|
||
|
IF p1r& = 1 THEN p1& = 7
|
||
|
IF p2r& = 1 THEN p2& = 7
|
||
|
IF p3r& = 1 THEN p3& = 7
|
||
|
IF p4r& = 1 THEN p4& = 7
|
||
|
VIEW
|
||
|
CLS
|
||
|
DO
|
||
|
COLOR 14: LOCATE 1, 15: PRINT "Game Setup"
|
||
|
LINE (111, 8)-(191, 8)
|
||
|
COLOR 2: LOCATE 3, 15: PRINT "Players ("
|
||
|
LOCATE 3, 31: PRINT ")"
|
||
|
COLOR 10: LOCATE 3, 24: PRINT "1,2,3,4"
|
||
|
COLOR 1: LOCATE 4, 16: PRINT "P1 -"
|
||
|
LOCATE 4, 21
|
||
|
IF p1& = 0 THEN PRINT "Off "
|
||
|
IF p1& = 1 THEN PRINT "Human "
|
||
|
IF p1& = 2 THEN PRINT "Computer (Easiest)"
|
||
|
IF p1& = 3 THEN PRINT "Computer (Easy) "
|
||
|
IF p1& = 4 THEN PRINT "Computer (Medium) "
|
||
|
IF p1& = 5 THEN PRINT "Computer (Hard) "
|
||
|
IF p1& = 6 THEN PRINT "Computer (Hardest)"
|
||
|
IF p1& = 7 THEN PRINT "Computer (Random) "
|
||
|
COLOR 4: LOCATE 5, 16: PRINT "P2 -"
|
||
|
LOCATE 5, 21
|
||
|
IF p2& = 0 THEN PRINT "Off "
|
||
|
IF p2& = 1 THEN PRINT "Human "
|
||
|
IF p2& = 2 THEN PRINT "Computer (Easiest)"
|
||
|
IF p2& = 3 THEN PRINT "Computer (Easy) "
|
||
|
IF p2& = 4 THEN PRINT "Computer (Medium) "
|
||
|
IF p2& = 5 THEN PRINT "Computer (Hard) "
|
||
|
IF p2& = 6 THEN PRINT "Computer (Hardest)"
|
||
|
IF p2& = 7 THEN PRINT "Computer (Random) "
|
||
|
COLOR 2: LOCATE 6, 16: PRINT "P3 -"
|
||
|
LOCATE 6, 21
|
||
|
IF p3& = 0 THEN PRINT "Off "
|
||
|
IF p3& = 1 THEN PRINT "Human "
|
||
|
IF p3& = 2 THEN PRINT "Computer (Easiest)"
|
||
|
IF p3& = 3 THEN PRINT "Computer (Easy) "
|
||
|
IF p3& = 4 THEN PRINT "Computer (Medium) "
|
||
|
IF p3& = 5 THEN PRINT "Computer (Hard) "
|
||
|
IF p3& = 6 THEN PRINT "Computer (Hardest)"
|
||
|
IF p3& = 7 THEN PRINT "Computer (Random) "
|
||
|
COLOR 14: LOCATE 7, 16: PRINT "P4 -"
|
||
|
LOCATE 7, 21
|
||
|
IF p4& = 0 THEN PRINT "Off "
|
||
|
IF p4& = 1 THEN PRINT "Human "
|
||
|
IF p4& = 2 THEN PRINT "Computer (Easiest)"
|
||
|
IF p4& = 3 THEN PRINT "Computer (Easy) "
|
||
|
IF p4& = 4 THEN PRINT "Computer (Medium) "
|
||
|
IF p4& = 5 THEN PRINT "Computer (Hard) "
|
||
|
IF p4& = 6 THEN PRINT "Computer (Hardest)"
|
||
|
IF p4& = 7 THEN PRINT "Computer (Random) "
|
||
|
COLOR 4
|
||
|
IF items& = 1 THEN
|
||
|
COLOR 12: LOCATE 9, 48: PRINT "l"
|
||
|
COLOR 4: LOCATE 9, 40: PRINT "Items Re"
|
||
|
LOCATE 9, 49: PRINT "ocate when Hit"
|
||
|
LOCATE 10, 41
|
||
|
IF re& = 1 THEN PRINT "No "
|
||
|
IF re& = 0 THEN PRINT "Yes"
|
||
|
COLOR 12: LOCATE 12, 45: PRINT "U"
|
||
|
COLOR 4: LOCATE 12, 40: PRINT "Lose "
|
||
|
LOCATE 12, 46: PRINT "pgrades when Scored On"
|
||
|
LOCATE 13, 41
|
||
|
IF lose& = 0 THEN PRINT "No "
|
||
|
IF lose& = 1 THEN PRINT "Yes"
|
||
|
LOCATE 15, 40: PRINT "Item Switch"
|
||
|
COLOR 12
|
||
|
IF switch& = 1 THEN COLOR 4
|
||
|
LOCATE 15, 46: PRINT "w"
|
||
|
IF switch& = 1 THEN
|
||
|
COLOR 4: LOCATE 15, 51: PRINT "(Press "
|
||
|
LOCATE 15, 60: PRINT "when done)"
|
||
|
COLOR 12: LOCATE 15, 58: PRINT "D"
|
||
|
END IF
|
||
|
END IF
|
||
|
COLOR 12: LOCATE 3, 40: PRINT "I"
|
||
|
COLOR 4: LOCATE 3, 41: PRINT "tems"
|
||
|
LOCATE 4, 41
|
||
|
IF items& = 1 THEN PRINT "On "
|
||
|
IF items& = 0 THEN PRINT "Off"
|
||
|
IF items& = 1 THEN
|
||
|
COLOR 12: LOCATE 6, 40: PRINT "N"
|
||
|
COLOR 4: LOCATE 6, 41: PRINT "umber of Items"
|
||
|
LOCATE 7, 40: PRINT it&
|
||
|
END IF
|
||
|
COLOR 11: LOCATE 9, 15: PRINT "B"
|
||
|
COLOR 3: LOCATE 9, 16: PRINT "all Speed"
|
||
|
LOCATE 10, 16
|
||
|
IF speed& = 1 THEN PRINT "Normal "
|
||
|
IF speed& = 2 THEN PRINT "Fast "
|
||
|
IF speed& = 3 THEN PRINT "Very Fast"
|
||
|
IF speed& = 4 THEN PRINT "Too Fast "
|
||
|
COLOR 11: LOCATE 12, 15: PRINT "P"
|
||
|
COLOR 3: LOCATE 12, 16: PRINT "ad Speed"
|
||
|
LOCATE 13, 16
|
||
|
IF pad& = 1 THEN PRINT "Normal "
|
||
|
IF pad& = 2 THEN PRINT "Fast "
|
||
|
IF pad& = 3 THEN PRINT "Very Fast"
|
||
|
IF pad& = 4 THEN PRINT "Too Fast "
|
||
|
COLOR 9: LOCATE 15, 23: PRINT "M"
|
||
|
COLOR 1: LOCATE 15, 15: PRINT "Scoring"
|
||
|
LOCATE 15, 24: PRINT "ode"
|
||
|
LOCATE 16, 16
|
||
|
IF scoret& = 1 THEN PRINT "Basic "
|
||
|
IF scoret& = 2 THEN PRINT "All Gain "
|
||
|
IF scoret& = 3 THEN PRINT "One Lose "
|
||
|
IF scoret& = 4 THEN PRINT "Combo "
|
||
|
IF scoret& = 5 THEN PRINT "All Gain (Combo)"
|
||
|
IF scoret& = 6 THEN PRINT "One Lose (Combo)"
|
||
|
IF scoret& = 3 OR scoret& = 6 THEN
|
||
|
COLOR 1: LOCATE 18, 15: PRINT "Start S"
|
||
|
LOCATE 19, 15: PRINT max&
|
||
|
LOCATE 18, 23: PRINT "ore 0 = No End "
|
||
|
COLOR 9: LOCATE 18, 22: PRINT "c"
|
||
|
ELSE
|
||
|
COLOR 1: LOCATE 18, 15: PRINT "Ma"
|
||
|
LOCATE 19, 15: PRINT max&
|
||
|
LOCATE 18, 19: PRINT "Score 0 = Unlimited"
|
||
|
COLOR 9: LOCATE 18, 17: PRINT "x "
|
||
|
END IF
|
||
|
COLOR 13: LOCATE 15, 2: PRINT "S"
|
||
|
LOCATE 17, 2: PRINT "R"
|
||
|
LOCATE 19, 2: PRINT "Q"
|
||
|
COLOR 5: LOCATE 15, 3: PRINT "tart"
|
||
|
LOCATE 17, 3: PRINT "eturn"
|
||
|
LOCATE 19, 3: PRINT "uit"
|
||
|
o& = 0
|
||
|
IF p1& > 0 THEN o& = o& + 1
|
||
|
IF p2& > 0 THEN o& = o& + 1
|
||
|
IF p3& > 0 THEN o& = o& + 1
|
||
|
IF p4& > 0 THEN o& = o& + 1
|
||
|
IF switch& = 1 THEN GOTO switch
|
||
|
a$ = INKEY$
|
||
|
IF a$ = "q" THEN END
|
||
|
IF a$ = "r" THEN EXIT DO
|
||
|
IF a$ = "s" THEN
|
||
|
started& = 0
|
||
|
EXIT DO
|
||
|
ELSEIF a$ = "l" THEN
|
||
|
re& = -re& + 1
|
||
|
ELSEIF a$ = "u" THEN
|
||
|
lose& = -lose& + 1
|
||
|
ELSEIF a$ = "x" OR a$ = "c" THEN
|
||
|
LOCATE 19, 16
|
||
|
PRINT " "
|
||
|
COLOR 1
|
||
|
LOCATE 19, 16
|
||
|
INPUT "", max&
|
||
|
IF max& > 500000 THEN max& = 500000
|
||
|
CLS
|
||
|
ELSEIF a$ = "m" THEN
|
||
|
scoret& = scoret& + 1
|
||
|
IF scoret& = 7 THEN scoret& = 1
|
||
|
ELSEIF a$ = "w" AND items& = 1 THEN
|
||
|
arrow& = 1
|
||
|
switch& = 1
|
||
|
ELSEIF a$ = "b" THEN
|
||
|
speed& = speed& + 1
|
||
|
IF speed& > 4 THEN speed& = 1
|
||
|
ELSEIF a$ = "p" THEN
|
||
|
pad& = pad& + 1
|
||
|
IF pad& = 5 THEN pad& = 1
|
||
|
ELSEIF a$ = "n" THEN
|
||
|
it& = it& + 1
|
||
|
IF it& > 15 THEN it& = 1: CLS
|
||
|
ELSEIF a$ = "i" THEN
|
||
|
items& = -items& + 1
|
||
|
CLS
|
||
|
ELSEIF a$ = "1" THEN
|
||
|
p1& = p1& + 1
|
||
|
IF p1& = 8 AND o& > 1 THEN p1& = 0
|
||
|
IF p1& = 8 AND o& < 2 THEN p1& = 1
|
||
|
started& = 0
|
||
|
CLS
|
||
|
ELSEIF a$ = "2" THEN
|
||
|
p2& = p2& + 1
|
||
|
IF p2& = 8 AND o& > 1 THEN p2& = 0
|
||
|
IF p2& = 8 AND o& < 2 THEN p2& = 1
|
||
|
started& = 0
|
||
|
CLS
|
||
|
ELSEIF a$ = "3" THEN
|
||
|
p3& = p3& + 1
|
||
|
IF p3& = 8 AND o& > 1 THEN p3& = 0
|
||
|
IF p3& = 8 AND o& < 2 THEN p3& = 1
|
||
|
started& = 0
|
||
|
CLS
|
||
|
ELSEIF a$ = "4" THEN
|
||
|
p4& = p4& + 1
|
||
|
IF p4& = 8 AND o& > 1 THEN p4& = 0
|
||
|
IF p4& = 8 AND o& < 2 THEN p4& = 1
|
||
|
started& = 0
|
||
|
CLS
|
||
|
END IF
|
||
|
skip:
|
||
|
VIEW SCREEN (0, 0)-(102, 102)
|
||
|
IF items& = 1 THEN
|
||
|
FOR i = 1 TO it&
|
||
|
IF ABS(ballx& - demoitemx(1, i)) < 2 AND ABS(bally& - demoitemy(1, i)) < 2 AND re& = 0 THEN
|
||
|
CLS
|
||
|
demoitemx(1, i) = INT(RND * 74) + 14
|
||
|
demoitemy(1, i) = INT(RND * 74) + 14
|
||
|
END IF
|
||
|
LINE (demoitemx(1, i), demoitemy(1, i))-(demoitemx(1, i) + 1, demoitemy(1, i) + 1), fic&, BF
|
||
|
NEXT i
|
||
|
END IF
|
||
|
x1& = 0
|
||
|
y1& = 0
|
||
|
x2& = 102
|
||
|
y2& = 102
|
||
|
IF p1& = 0 THEN y1& = 12
|
||
|
IF p2& = 0 THEN x1& = 12
|
||
|
IF p3& = 0 THEN y2& = 90
|
||
|
IF p4& = 0 THEN x2& = 90
|
||
|
LINE (x1&, y1&)-(x2&, y2&), co&, B
|
||
|
IF p1& > 0 AND p2& > 0 THEN
|
||
|
LINE (2, 2)-(2, 14), 1
|
||
|
LINE (2, 2)-(14, 2), 1
|
||
|
LINE (14, 2)-(2, 14), 1
|
||
|
END IF
|
||
|
IF p2& > 0 AND p3& > 0 THEN
|
||
|
LINE (2, 100)-(2, 88), 4
|
||
|
LINE (2, 100)-(14, 100), 4
|
||
|
LINE (14, 100)-(2, 88), 4
|
||
|
END IF
|
||
|
IF p3& > 0 AND p4& > 0 THEN
|
||
|
LINE (100, 100)-(100, 88), 2
|
||
|
LINE (100, 100)-(88, 100), 2
|
||
|
LINE (88, 100)-(100, 88), 2
|
||
|
END IF
|
||
|
IF p4& > 0 AND p1& > 0 THEN
|
||
|
LINE (100, 2)-(100, 14), 14
|
||
|
LINE (100, 2)-(88, 2), 14
|
||
|
LINE (88, 2)-(100, 14), 14
|
||
|
END IF
|
||
|
IF p1& > 0 THEN LINE (pad1& - 5, 2)-(pad1& + 5, 3), 1, BF
|
||
|
IF p2& > 0 THEN LINE (2, pad2& - 5)-(3, pad2& + 5), 4, BF
|
||
|
IF p3& > 0 THEN LINE (pad3& - 5, 100)-(pad3& + 5, 99), 2, BF
|
||
|
IF p4& > 0 THEN LINE (100, pad4& - 5)-(99, pad4& + 5), 14, BF
|
||
|
|
||
|
IF p1& > 0 THEN LINE (pad1& - 6, 2)-(15, 4), 0, BF
|
||
|
IF p1& > 0 THEN LINE (pad1& + 6, 2)-(87, 4), 0, BF
|
||
|
IF p2& > 0 THEN LINE (2, pad2& - 6)-(4, 15), 0, BF
|
||
|
IF p2& > 0 THEN LINE (2, pad2& + 6)-(4, 87), 0, BF
|
||
|
IF p3& > 0 THEN LINE (pad3& - 6, 100)-(15, 98), 0, BF
|
||
|
IF p3& > 0 THEN LINE (pad3& + 6, 100)-(87, 98), 0, BF
|
||
|
IF p4& > 0 THEN LINE (100, pad4& - 6)-(98, 15), 0, BF
|
||
|
IF p4& > 0 THEN LINE (100, pad4& + 6)-(98, 87), 0, BF
|
||
|
|
||
|
IF (bally& < 15 OR bally& > 87) AND ballxs& = 0 THEN ballxs& = 1
|
||
|
IF (ballx& < 15 OR ballx& > 87) AND ballys& = 0 THEN ballys& = 1
|
||
|
|
||
|
IF ballx& < 14 AND bally& < 14 THEN
|
||
|
SWAP ballxs&, ballys&
|
||
|
ballxs& = -ballxs&
|
||
|
ballys& = -ballys&
|
||
|
IF ABS(ballxs&) = ABS(ballys&) THEN ballxs& = ballxs& + 1
|
||
|
LINE (ballx& - 1, bally& - 1)-(ballx&, bally&), 0, B
|
||
|
bally& = 13
|
||
|
ballx& = 13
|
||
|
SOUND 750, .1
|
||
|
END IF
|
||
|
IF ballx& < 14 AND bally& > 88 THEN
|
||
|
SWAP ballxs&, ballys&
|
||
|
IF ABS(ballxs&) = ABS(ballys&) THEN ballxs& = ballxs& + 1
|
||
|
LINE (ballx& - 1, bally& - 1)-(ballx&, bally&), 0, B
|
||
|
bally& = 89
|
||
|
ballx& = 13
|
||
|
SOUND 750, .1
|
||
|
END IF
|
||
|
IF ballx& > 88 AND bally& < 14 THEN
|
||
|
SWAP ballxs&, ballys&
|
||
|
IF ABS(ballxs&) = ABS(ballys&) THEN ballxs& = ballxs& + 1
|
||
|
LINE (ballx& - 1, bally& - 1)-(ballx&, bally&), 0, B
|
||
|
bally& = 13
|
||
|
ballx& = 89
|
||
|
SOUND 750, .1
|
||
|
END IF
|
||
|
IF ballx& > 88 AND bally& > 88 THEN
|
||
|
SWAP ballxs&, ballys&
|
||
|
ballxs& = -ballxs&
|
||
|
ballys& = -ballys&
|
||
|
IF ABS(ballxs&) = ABS(ballys&) THEN ballxs& = ballxs& + 1
|
||
|
LINE (ballx& - 1, bally& - 1)-(ballx&, bally&), 0, B
|
||
|
bally& = 89
|
||
|
ballx& = 89
|
||
|
SOUND 750, .1
|
||
|
END IF
|
||
|
LINE (ballx& - 1, bally& - 1)-(ballx&, bally&), 0, B
|
||
|
PSET (ballx2&, bally2&), 0
|
||
|
PSET (ballx3&, bally3&), 0
|
||
|
PSET (ballx4&, bally4&), 0
|
||
|
bally4& = bally3&
|
||
|
bally3& = bally2&
|
||
|
bally2& = bally&
|
||
|
ballx4& = ballx3&
|
||
|
ballx3& = ballx2&
|
||
|
ballx2& = ballx&
|
||
|
bally& = bally& + ballys&
|
||
|
ballx& = ballx& + ballxs&
|
||
|
LINE (ballx& - 1, bally& - 1)-(ballx&, bally&), 4, B
|
||
|
PSET (ballx&, bally&), 14
|
||
|
PSET (ballx2&, bally2&), 12
|
||
|
PSET (ballx3&, bally3&), 12
|
||
|
PSET (ballx4&, bally4&), 8
|
||
|
|
||
|
IF bally& < 1 OR (bally& < 14 AND p1& = 0) THEN
|
||
|
IF p1& > 0 THEN co& = 1
|
||
|
ballys& = INT(RND * 3) + 1
|
||
|
SOUND 500, .1
|
||
|
ELSEIF ballx& < 1 OR (ballx& < 14 AND p2& = 0) THEN
|
||
|
IF p2& > 0 THEN co& = 4
|
||
|
ballxs& = INT(RND * 3) + 1
|
||
|
SOUND 500, .1
|
||
|
ELSEIF ballx& > 100 OR (ballx& > 88 AND p4& = 0) THEN
|
||
|
IF p4& > 0 THEN co& = 14
|
||
|
ballxs& = -(INT(RND * 3) + 1)
|
||
|
SOUND 500, .1
|
||
|
ELSEIF bally& > 100 OR (bally& > 88 AND p3& = 0) THEN
|
||
|
IF p3& > 0 THEN co& = 2
|
||
|
ballys& = -(INT(RND * 3) + 1)
|
||
|
SOUND 500, .1
|
||
|
END IF
|
||
|
|
||
|
IF ballys& < 0 THEN
|
||
|
IF ballx& > pad1& THEN pad1& = pad1& + 3
|
||
|
IF ballx& < pad1& THEN pad1& = pad1& - 3
|
||
|
IF pad1& > 82 THEN pad1& = 82
|
||
|
IF pad1& < 20 THEN pad1& = 20
|
||
|
END IF
|
||
|
IF ballxs& < 0 THEN
|
||
|
IF bally& > pad2& THEN pad2& = pad2& + 3
|
||
|
IF bally& < pad2& THEN pad2& = pad2& - 3
|
||
|
IF pad2& > 82 THEN pad2& = 82
|
||
|
IF pad2& < 20 THEN pad2& = 20
|
||
|
END IF
|
||
|
IF ballys& > 0 THEN
|
||
|
IF ballx& > pad3& THEN pad3& = pad3& + 3
|
||
|
IF ballx& < pad3& THEN pad3& = pad3& - 3
|
||
|
IF pad3& > 82 THEN pad3& = 82
|
||
|
IF pad3& < 20 THEN pad3& = 20
|
||
|
END IF
|
||
|
IF ballxs& > 0 THEN
|
||
|
IF bally& > pad4& THEN pad4& = pad4& + 3
|
||
|
IF bally& < pad4& THEN pad4& = pad4& - 3
|
||
|
IF pad4& > 82 THEN pad4& = 82
|
||
|
IF pad4& < 20 THEN pad4& = 20
|
||
|
END IF
|
||
|
VIEW
|
||
|
LOOP
|
||
|
IF (scoret& = 3 OR scoret& = 6) AND o& = 1 THEN GOTO start
|
||
|
IF p1& = 7 THEN p1r& = 1 ELSE p1r& = 0
|
||
|
IF p2& = 7 THEN p2r& = 1 ELSE p2r& = 0
|
||
|
IF p3& = 7 THEN p3r& = 1 ELSE p3r& = 0
|
||
|
IF p4& = 7 THEN p4r& = 1 ELSE p4r& = 0
|
||
|
IF started& = 1 THEN
|
||
|
IF p1r& = 1 THEN p1& = p1m&
|
||
|
IF p2r& = 1 THEN p2& = p2m&
|
||
|
IF p3r& = 1 THEN p3& = p3m&
|
||
|
IF p4r& = 1 THEN p4& = p4m&
|
||
|
END IF
|
||
|
IF started& = 1 THEN startedd& = startedd& + subtract&
|
||
|
IF started& = 0 THEN GOTO new ELSE GOTO restart
|
||
|
|