Once more here's the code!
` 20-liner January 2003 winner
` Programmed by TheDarthster
dim x#(2)
dim z#(2)
dim oldx#(2)
dim oldy#(2)
dim oldz#(2)
dim cy#(2)
dim shot#(2)
dim fragged#(2)
dim score#(2)
create bitmap 1,2,2
cls rgb(255,255,255)
get image 1,0,0,1,1
set current bitmap 0
delete bitmap 1
for i=1 to 2
make object cylinder 100+i,50
scale object 100+i,100,300,100
x#(i)=(int(rnd(1))*1600)+100
z#(i)=(int(rnd(1))*1600)+100
make object sphere 102+i,10
position object 102+i,-1000,-1000,-1000
make camera i
next i
set camera view 1,0,0,640,240
set camera view 2,0,240,640,480
dim level(138)
data 2,2,4,2,7,2,8,2,2,3,4,3,5,3,4,4,7,4,9,4,2,5,4,5,6,5,7,5,9,5,1,6,2,6,4,7,5,7,7,7,8
data 7,2,8,3,8,8,8,6,9,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,10,1,10,2,10,3,10,4
data 10,5,10,6,10,7,10,8,10,9,10,10,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,1,10,2,10,3
data 10,4,10,5,10,6,10,7,10,8,10,9,10,3,4,6,8,8,3
for i=0 to 67
read level(i*2)
read level((i*2)+1)
if i < 65
make object box i+1,200,200,200
position object i+1,(level(i*2)*200)-100,100,(level((i*2)+1)*200)-100
make static collision box ((level(i*2)*200))-200,0,(level((i*2)+1)*200)-200,(level(i*2)*200),0,(level((i*2)+1)*200)
else
make light i-64
set point light i-64,(level(i*2)*200)-100,50,(level((i*2)+1)*200)-100
color light i-64,rgb((i-64)*85,(3-(i-64))*85,0)
endif
next i
make object box 100,2100,3000,2100
texture object 100,1
scale object 100,-100,-100,-100
position object 100,900,1400,900
hide light 0
set ambient light 10
make matrix 1,1800,1800,9,9
prepare matrix texture 1,1,1,1
do
for i=1 to 2
oldx#(i)=x#(i)
oldz#(i)=z#(i)
if keystate((i*6)+11)=1 and fragged#(i)=0
x#(i)=x#(i)+sin(cy#(i))*10
z#(i)=z#(i)+cos(cy#(i))*10
endif
if keystate((i*6)+25)=1 and fragged#(i)=0
x#(i)=x#(i)+sin(cy#(i)+180)*4
z#(i)=z#(i)+cos(cy#(i)+180)*4
endif
if keystate((i*6)+24)=1 and fragged#(i)=0
cy#(i)=wrapvalue(cy#(i)-4)
endif
if keystate((i*6)+26)=1 and fragged#(i)=0
cy#(i)=wrapvalue(cy#(i)+4)
endif
if spacekey()=1 and shot#(1)=0 and fragged#(1)=0
shot#(1)=1
position object 103,x#(1),100,z#(1)
yrotate object 103,cy#(1)
endif
if keystate(157)=1 and shot#(2)=0 and fragged#(2)=0
shot#(2)=1
position object 104,x#(2),100,z#(2)
yrotate object 104,cy#(2)
endif
if shot#(i)=1
move object 102+i,30
endif
if get static collision hit(oldx#(i)-20,125-200,oldz#(i)-20,oldx#(i)+20,125+200,oldz#(i)+20,x#(i)-20,125-200,z#(i)-20,x#(i)+20,125+200,z#(i)+20)=1
x#(i)=x#(i)-get static collision x()
z#(i)=z#(i)-get static collision z()
endif
if get static collision hit(object position x(102+i)-10,0,object position z(102+i)-10,object position x(102+i)+10,200,object position z(102+i)+10,object position x(102+i)-10,0,object position z(102+i)-10,object position x(102+i)+10,200,object position z(102+i)+10)=1
position object 102+i,-1000,-1000,-1000
shot#(i)=0
endif
if sqrt(((object position x(103)-object position x(102))^2)+((object position z(103)-object position z(102))^2)) < 30 and fragged#(2)=0
fragged#(2)=30
position object 103,-1000,-1000,-1000
shot#(1)=0
score#(1)=score#(1)+1
endif
if sqrt(((object position x(104)-object position x(101))^2)+((object position z(104)-object position z(101))^2)) < 30 and fragged#(1)=0
fragged#(1)=30
position object 104,-1000,-1000,-1000
shot#(2)=0
score#(2)=score#(2)+1
endif
if fragged#(i) > 0
fragged#(i)=fragged#(i)-1
ink rgb(fragged#(i)*8.5,0,0),0
text 320,(i*240)-120,"Fragged!!"
if fragged#(i)=0:x#(i)=(int(rnd(1))*1600)+100
z#(i)=(int(rnd(1))*1600)+100
endif
endif
position camera i,x#(i),125,z#(i)
rotate camera i,0,cy#(i),0
position object 100+i,x#(i),75,z#(i)
ink rgb(255,255,255),0
text 20,(i*240)-220,"Frags:"+str$(score#(i))
if score#(i) >= 10
repeat
text 320,(i*240)-120,"Winner!"
until escapekey()=1
end
endif
next i
loop