Well, here's my entry.
a few things:
-it looks best in 640x480x32 fullscreen exclusive.
-I am focusing more on gameplay rather then graphics, and the graphics are horrible.

-the controls are in-game.
-try to play through the whole game, there is a little goody at the end.

-it might be a little buggy
```````````````````````````````````````
global restart
restart=0
start:
clear_res()
sync off
cls
for y=0 to 31:
for x=0 to 31:
dot x,y,rgb(0,rnd(155),0)
next x
next y
get image 1,0,0,32,32
cls
for y=0 to 31:
for x=0 to 31:
clr=rnd(155)
dot x,y,rgb(clr,clr/2,0)
next x
next y
get image 2,0,0,32,32
cls
for z=1 to 100:
clr=rnd(100)
dot 16+(rnd(16)-8),16+(rnd(16)-8),rgb(0,clr,0)
next z
get image 10,0,0,32,32
cls
for y=0 to 31:
for x=0 to 31:
dot x,y,rgb(rnd(155),0,0)
next x
next y
get image 11,0,0,32,32
cls
for y=0 to 10:
for x=0 to 10:
dot x,y,0
next x
next y
get image 12,0,0,10,10
cls
for y=0 to 31:
for x=0 to 31:
dot x,y,rgb(rnd(155),0,rnd(155))
next x
next y
get image 15,0,0,32,32
cls
for y=0 to 31:
for x=0 to 31:
clr=rnd(50)
dot x,y,rgb(clr,clr,clr)
next x
next y
get image 18,0,0,32,32
cls
for y=0 to 31:
for x=0 to 31:
clr=rnd(1)
if clr=0 then dot x,y,rgb(0,0,0)
if clr=1 then dot x,y,rgb(30,30,30)
next x
next y
for circle1=16 to 45:
ink 0,0
circle 16,16,circle1
next circle1
get image 333,0,0,32,32
cls
for y=0 to 31:
for x=0 to 31:
dot x,y,0
next x
next y
get image 19,0,0,32,32
cls
for y=0 to 31:
for x=0 to 31:
clr=rnd(150)
dot x,y,rgb(0,0,clr)
next x
next y
get image 28,0,0,32,32
cls
ink 0,0
for y=1 to 4:
for x=1 to 4:
dot x,y,0
next x
next y
dot 1,1,rgb(255,255,255)
dot 4,1,rgb(255,255,255)
dot 1,3,rgb(255,255,255)
dot 2,2,rgb(255,255,255)
dot 3,2,rgb(255,255,255)
dot 4,3,rgb(255,255,255)
get image 13,1,1,4,4
cls
dot 0,0,0
dot 1,0,rgb(255,0,0)
dot 2,0,0
dot 3,0,rgb(255,0,0)
dot 4,0,0
dot 0,1,rgb(255,0,0)
dot 1,1,rgb(255,0,0)
dot 2,1,rgb(255,0,0)
dot 3,1,rgb(255,0,0)
dot 4,1,rgb(255,0,0)
dot 0,2,rgb(255,0,0)
dot 1,2,rgb(255,0,0)
dot 2,2,rgb(255,0,0)
dot 3,2,rgb(255,0,0)
dot 4,2,rgb(255,0,0)
dot 0,3,0
dot 1,3,rgb(255,0,0)
dot 2,3,rgb(255,0,0)
dot 3,3,rgb(255,0,0)
dot 4,3,0
dot 0,4,0
dot 1,4,0
dot 2,4,rgb(255,0,0)
dot 3,4,0
dot 4,4,0
get image 14,0,0,5,5
sync on
sync rate 60
autocam off
hide mouse
set camera range 1,100000000
make object plain 1,1900,1400
xrotate object 1,90
texture object 1,2
scale object texture 1,10,10
make object box 2,50,35,100
texture object 2,1
make object box 4,10,35,100
color object 4,0
make mesh from object 4,4
delete object 4
add limb 2,1,4
color limb 2,1,rgb(0,0,0)
offset limb 2,1,0,0,20
make object box 4,2,35,2000
make mesh from object 5,4
delete object 4
add limb 2,2,5
offset limb 2,2,0,0,1000
hide limb 2,2
position object 2,-16,0,-309
position camera 0,1000,0
point camera 0,0,0
make object sphere 3,150
hide object 3
make object plain 14,50,50
texture object 14,14
xrotate object 14,90
yrotate object 14,180
position object 14,0,10,0
set object transparency 14,1
position object 14,500,10,-450
hide object 14
if restart>0 then goto skip_intro
do
set text font "Arial"
set text size 48
ink rgb(100,100,50),0
center text 320,80,"Tank Attack!!!!!"
set text size 24
ink rgb(100,100,100),0
center text 320,120,"Story:"
set text size 16
ink rgb(255,255,255),0
text 150,150,"It is the middle of WWII. You were fighting in the war, "
text 150,170,"and you have become stranded in enemy territory. you have managed to get"
text 150,190," ahold of a tank, and now all you have to do is try to stay alive!:)"
set text size 24
ink rgb(100,100,50),0
center text 320,210,"Controls:"
set text size 16
ink rgb(255,255,255),0
text 150,238," arrow keys to move, spacekey to shoot.:)"
text 150,253," R to reload, and P to pause the game."
set text size 18
ink rgb(100,100,50),0
center text 320,280,"...Press the spacebar to continue..."
if spacekey()=1 then exit
if upkey()=1 then move object 2,5
if downkey()=1 then move object 2,-5
if leftkey()=1 then turn object left 2,5
if rightkey()=1 then turn object right 2,5
sync
loop
skip_intro:
level_screen=1
sptimer=0
health=100
ammo=0
enemyobj=200
maxenemy=300
wave=1
levelnum=wave
ammo=10
damage=0
if restart>0:
wave=restart
levelnum=restart
endif
do
if level_screen=1:
set text font "Arial"
set text size 48
ink rgb(100,100,50),0
center text 320,240,"Tank Attack!!!!!"
set text size 24
center text 320,320,"Wave #"+str$(levelnum)
set text size 18
if levelnum=1 then leveltip$="TIP: shoot the red tanks"
if levelnum=2 then leveltip$="the tanks are faster now! :)"
if levelnum=3 then leveltip$="TIP: look out to the sides!"
if levelnum=4 then leveltip$="TIP: avoid the airplanes' deadly fire..."
if levelnum=5 then leveltip$="tanks and turrets and airplanes OH MY! XD"
if levelnum=6 then leveltip$="Spinny Helicopter Blades Of DEEAATH!!!!"
if levelnum=7 then leveltip$="a wide array of deadly awesomeness..."
if levelnum=8 then leveltip$="TIP: avoid the red bombs!"
if levelnum=9 then leveltip$="TIP: this might be impossible...:)"
if levelnum=10 then leveltip$="Cake will be served!"
center text 320,390,leveltip$
set text size 24
sptimer=sptimer+1
if sptimer>100:
if wave=1:
for en=200 to 220:
spawnenemy(en,rnd(5000)-2500,1200+((en-200)*200))
next en
endif
if wave=2:
for en=200 to 235:
spawnenemy(en,rnd(5000)-2500,1200+((en-200)*200))
next en
endif
if wave=3:
for en=200 to 213:
spawnenemy(en,rnd(5000)-2500,1200+((en-200)*200))
next en
for en=231 to 233:
spawnenemy(en,0-(rnd(5000)-2500),rnd(1200)-600)
next en
for en=236 to 238:
spawnenemy(en,rnd(5000)+2500,rnd(1200)-600)
next en
endif
if wave=4:
for en=200 to 225:
spawnenemy2(en,rnd(1800)-900,rnd(3400)+1400)
next en
endif
if wave=5:
for en=200 to 220:
spawnenemy(en,rnd(5000)-2500,1200+((en-200)*200))
next en
for en=221 to 228:
spawnenemy2(en,rnd(1800)-900,rnd(3400)+1400)
next en
endif
if wave=6:
for en=200 to 220:
spawnenemy3(en,rnd(5000)-2500,1200+((en-200)*200))
next en
endif
if wave=7:
for en=200 to 210:
spawnenemy(en,rnd(5000)-2500,1200+((en-200)*200))
next en
for en=211 to 216:
spawnenemy3(en,rnd(5000)-2500,1200+((en-200)*200))
next en
for en=221 to 228:
spawnenemy2(en,rnd(1800)-900,rnd(3400)+1400)
next en
endif
if wave=8:
for en=200 to 205:
spawnenemy4(en,rnd(5000)-2500,1200+((en-200)*200))
next en
spawnenemy(210,rnd(5000)-2500,1200+((en-200)*200))
endif
if wave=9:
for en=200 to 210:
spawnenemy(en,rnd(5000)-2500,1200+((en-200)*200))
next en
for en=211 to 220:
spawnenemy3(en,rnd(5000)-2500,1200+((en-200)*200))
next en
for en=221 to 228:
spawnenemy2(en,rnd(1800)-900,rnd(3400)+1400)
next en
for en=240 to 245:
spawnenemy4(en,rnd(5000)-2500,1200+((en-200)*200))
next en
endif
if wave=10:
spawnenemy(210,0,1900)
endif
level_screen=0
endif
endif
if level_screen=0:
if wave=10:
obj=210
point object obj,object position x(2),object position y(2),object position z(2)
xrotate object obj,0
zrotate object obj,0
move object obj,3
endif
if wave=1:
noneleft=1
for obj=200 to 300:
if object exist(obj)=1:
point object obj,object position x(2),object position y(2),object position z(2)
xrotate object obj,0
zrotate object obj,0
move object obj,2
noneleft=0
endif
next obj
if noneleft=1 then delete_enemies():wave=wave+1:level_screen=1:levelnum=wave:sptimer=0:goto skip2
endif
if wave=2:
noneleft=1
for obj=200 to 300:
if object exist(obj)=1:
point object obj,object position x(2),object position y(2),object position z(2)
xrotate object obj,0
zrotate object obj,0
move object obj,3
noneleft=0
endif
next obj
if noneleft=1 then delete_enemies():wave=wave+1:level_screen=1:levelnum=wave:sptimer=0:stimer=31:goto skip2
endif
if wave=3:
noneleft=1
for obj=200 to 300:
if object exist(obj)=1:
point object obj,object position x(2),object position y(2),object position z(2)
xrotate object obj,0
zrotate object obj,0
move object obj,3
noneleft=0
endif
next obj
if noneleft=1 then delete_enemies():wave=wave+1:level_screen=1:levelnum=wave:sptimer=0:stimer=31:goto skip2
endif
if wave=4:
noneleft=1
endlvl=1
for obj=200 to 300:
if object exist(obj)=1:
`point object obj,object position x(2),object position y(2),object position z(2)
xrotate object obj,0
zrotate object obj,0
yrotate object obj,180
move object obj,4
noneleft=0
shootchance=rnd(40)
if shootchance=1 and object in screen(obj)=1:
ensx=object screen x(obj)
ensy=object screen y(obj)
shootex=object screen x(2)
shootey=object screen y(2)
mx=object position x(obj)
mz=object position z(obj)
px=object position x(2)
pz=object position z(2)
if px>mx-100:
if px<mx+100:
ink rgb(100,100,50),0
line ensx,ensy,shootex,shootey
ink rgb(255,0,0),0
circle object screen x(2),object screen y(2),30
health=health-5
damage=1
endif
endif
endif
if object position z(obj)>-1200 then endlvl=0
endif
next obj
if noneleft=1 or endlvl=1 then delete_enemies():wave=wave+1:level_screen=1:levelnum=wave:sptimer=0:stimer=31:goto skip2
endif
if wave=5:
noneleft=1
endlvl=1
for obj=221 to 228:
if object exist(obj)=1:
`point object obj,object position x(2),object position y(2),object position z(2)
xrotate object obj,0
zrotate object obj,0
yrotate object obj,180
move object obj,4
noneleft=0
shootchance=rnd(40)
if shootchance=1 and object in screen(obj)=1:
ensx=object screen x(obj)
ensy=object screen y(obj)
shootex=object screen x(2)
shootey=object screen y(2)
mx=object position x(obj)
mz=object position z(obj)
px=object position x(2)
pz=object position z(2)
if px>mx-100:
if px<mx+100:
ink rgb(100,100,50),0
line ensx,ensy,shootex,shootey
ink rgb(255,0,0),0
circle object screen x(2),object screen y(2),30
health=health-5
damage=1
endif
endif
endif
if object position z(obj)>-1200 then endlvl=0
endif
next obj
for obj=200 to 220:
noneleft=1
if object exist(obj)=1:
point object obj,object position x(2),object position y(2),object position z(2)
xrotate object obj,0
zrotate object obj,0
move object obj,3
noneleft=0
endif
next obj
if noneleft=1 then delete_enemies():wave=wave+1:level_screen=1:levelnum=wave:sptimer=0:stimer=31:goto skip2
endif
if wave=6:
noneleft=1
for obj=200 to 300:
if object exist(obj)=1:
point object obj,object position x(2),object position y(2),object position z(2)
xrotate object obj,0
zrotate object obj,0
move object obj,4
noneleft=0
handle_rotors(obj)
endif
next obj
if noneleft=1 then delete_enemies():wave=wave+1:level_screen=1:levelnum=wave:sptimer=0:goto skip2
endif
if wave=7:
noneleft=1
endlvl=1
for obj=221 to 228:
if object exist(obj)=1:
`point object obj,object position x(2),object position y(2),object position z(2)
xrotate object obj,0
zrotate object obj,0
yrotate object obj,180
move object obj,4
noneleft=0
shootchance=rnd(40)
if shootchance=1 and object in screen(obj)=1:
ensx=object screen x(obj)
ensy=object screen y(obj)
shootex=object screen x(2)
shootey=object screen y(2)
mx=object position x(obj)
mz=object position z(obj)
px=object position x(2)
pz=object position z(2)
if px>mx-100:
if px<mx+100:
ink rgb(100,100,50),0
line ensx,ensy,shootex,shootey
ink rgb(255,0,0),0
circle object screen x(2),object screen y(2),30
health=health-5
damage=1
endif
endif
endif
if object position z(obj)>-1200 then endlvl=0
endif
next obj
for obj=200 to 210:
noneleft=1
if object exist(obj)=1:
point object obj,object position x(2),object position y(2),object position z(2)
xrotate object obj,0
zrotate object obj,0
move object obj,3
noneleft=0
endif
next obj
for obj=211 to 216:
if object exist(obj)=1:
point object obj,object position x(2),object position y(2),object position z(2)
xrotate object obj,0
zrotate object obj,0
move object obj,4
handle_rotors(obj)
noneleft=0
endif
next obj
if noneleft=1 then delete_enemies():wave=wave+1:level_screen=1:levelnum=wave:sptimer=0:stimer=31:goto skip2
endif
if wave=8:
for obj=200 to 206:
if object exist(obj)=1:
xrotate object obj,0
zrotate object obj,0
move object obj,10
dropchance=rnd(80)
if dropchance=50 then dropbomb(object position x(obj),object position z(obj))
endif
next obj
noneleft=1
if object exist(210)=1:
point object 210,object position x(2),object position y(2),object position z(2)
xrotate object 210,0
zrotate object 210,0
move object 210,2
noneleft=0
endif
if noneleft=1 then delete_enemies():wave=wave+1:level_screen=1:levelnum=wave:sptimer=0:goto skip2
endif
if wave=9:
for obj=240 to 245:
if object exist(obj)=1:
xrotate object obj,0
zrotate object obj,0
move object obj,10
dropchance=rnd(80)
if dropchance=50 then dropbomb(object position x(obj),object position z(obj))
endif
next obj
for obj=221 to 228:
if object exist(obj)=1:
`point object obj,object position x(2),object position y(2),object position z(2)
xrotate object obj,0
zrotate object obj,0
yrotate object obj,180
move object obj,4
noneleft=0
shootchance=rnd(40)
if shootchance=1 and object in screen(obj)=1:
ensx=object screen x(obj)
ensy=object screen y(obj)
shootex=object screen x(2)
shootey=object screen y(2)
mx=object position x(obj)
mz=object position z(obj)
px=object position x(2)
pz=object position z(2)
if px>mx-100:
if px<mx+100:
ink rgb(100,100,50),0
line ensx,ensy,shootex,shootey
ink rgb(255,0,0),0
circle object screen x(2),object screen y(2),30
health=health-5
damage=1
endif
endif
endif
if object position z(obj)>-1200 then endlvl=0
endif
next obj
for obj=200 to 210:
noneleft=1
if object exist(obj)=1:
point object obj,object position x(2),object position y(2),object position z(2)
xrotate object obj,0
zrotate object obj,0
move object obj,3
noneleft=0
endif
next obj
for obj=211 to 220:
if object exist(obj)=1:
point object obj,object position x(2),object position y(2),object position z(2)
xrotate object obj,0
zrotate object obj,0
move object obj,3
handle_rotors(obj)
noneleft=0
endif
next obj
if noneleft=1 then delete_enemies():wave=wave+1:level_screen=1:levelnum=wave:sptimer=0:goto skip2
endif
skip2:
endif
for bomb=500 to 600:
if object exist(bomb):
mx=object position x(bomb)
mz=object position z(bomb)
px=object position x(2)
pz=object position z(2)
if pz>mz-60:
if pz<mz+60:
if px>mx-60:
if px<mx+60:
health=-100:hurt_circle()
damage=1
endif
endif
endif
endif
endif
next bomb
`if returnkey()=1 then position camera 0,camera position y()+10,0
if upkey()=1 then move object 2,5
if downkey()=1 then move object 2,-5
if leftkey()=1 then turn object left 2,3
if rightkey()=1 then turn object right 2,3
for enemy=200 to 300:
if object exist(enemy):
mx=object position x(enemy)
mz=object position z(enemy)
px=object position x(2)
pz=object position z(2)
if pz>mz-200:
if pz<mz+200:
if px>mx-200:
if px<mx+200:
//skip_health waves
if wave=8 then goto skip3
health=health-1:hurt_circle()
damage=1
skip3:
endif
endif
endif
endif
endif
next enemy
center text 320,10,"Health: "+str$(health)+"% --------- Ammo: "+str$(ammo)
hide limb 2,2
if spacekey()=1 and ammo>0 and stimer>30:
position object 3,object position x(2),object position y(2), object position z(2)
rotate object 3,object angle x(2),object angle y(2),object angle z(2)
repeat
move object 3,5
remstart
for enemyhit2=200 to 300:
if object exist(enemyhit2)=1:
ensx=object screen x(enemyhit2)
ensy=object screen y(enemyhit2)
shootex=object screen x(3)
shootey=object screen y(3)
if OBJECT HIT(3,enemyhit2)>0:
circle ensx,ensy,20
delete object enemyhit2
shootsx=object screen x(2)
shootsy=object screen y(2)
shootex2=object screen x(3)
shootey2=object screen y(3)
line shootsx,shootsy,shootex2,shootey2
goto skip
endif
endif
next enemyhit2
remend
for enemy=200 to 300:
if object exist(enemy):
mx=object position x(enemy)
mz=object position z(enemy)
px=object position x(3)
pz=object position z(3)
if pz>mz-50:
if pz<mz+50:
if px>mx-50:
if px<mx+50:
circle object screen x(enemy),object screen y(enemy),30
if wave=10 then gosub triumph:goto cake
delete object enemy
goto skip
endif
endif
endif
endif
endif
next enemy
until object in screen(3)=0
skip:
show limb 2,2
ammo=ammo-1
stimer=0
endif
if damage=1
set text size 14
ink rgb(255,0,0),0
show object 14
yrotate object 14,wrapvalue(object angle y(14)+2)
center text object screen x(14),object screen y(14)+20,"free health!"
mx=object position x(14)
mz=object position z(14)
px=object position x(2)
pz=object position z(2)
if pz>mz-120:
if pz<mz+120:
if px>mx-120:
if px<mx+120:
hide object 14
health=health+50
damage=0
cls rgb(255,255,0)
endif
endif
endif
endif
endif
set text font "Arial"
set text size 24
ink rgb(100,100,50),0
stimer=stimer+1
if stimer<30:
`center text 320,440,"warming up turret..."
null=0.0
endif
if ammo=0 then reload=1
if reload=1:
center text 320,50,"R To Reload!"
if keystate(19)=1 then ammo=10:reload=0
endif
if health<0 then gosub dead
if health>100 then health=100
set cursor 0,0
print "Wave: ",wave,"/10"
if keystate(25)=1 then center text 320,440,"Game Paused -- click to continue...":show mouse:sync:wait mouse:hide mouse
`if inkey$()="c" then gosub cake
sync
loop
function spawnenemy(objnum,x,z):
clone object objnum,2
texture object objnum,11
position object objnum,x,0,z
ghost object off objnum
endfunction
function spawnenemy2(objnum,x,z):
clone object objnum,2
texture object objnum,15
position object objnum,x,0,z
ghost object off objnum
scale limb objnum,1,200,100,200
rotate limb objnum,1,0,90,0
endfunction
function spawnenemy3(objnum,x,z):
clone object objnum,2
position object objnum,x,0,z
ghost object off objnum
add limb objnum,3,4
texture object objnum,18
offset limb objnum,1,0,0,0
rotate limb objnum,1,0,90,0
texture limb objnum,1,19
texture limb objnum,3,19
scale limb objnum,1,100,100,200
scale limb objnum,3,100,100,200
endfunction
function spawnenemy4(objnum,x,z):
clone object objnum,2
texture object objnum,28
position object objnum,x,0,z
ghost object off objnum
scale object objnum,50,50,50
point object objnum,object position x(2),object position y(2),object position z(2)
endfunction
function handle_rotors(objnum):
rotate limb objnum,1,0,wrapvalue(limb angle y(objnum,1)+8),0
rotate limb objnum,3,0,wrapvalue(limb angle y(objnum,3)+8),0
endfunction
function within_range(x1,z1,x2,y2,range):
returner=0
if x1>(x2-range/2):
if y1>(y2-range/2):
if x1>(x2+range/2):
if y1>(y2+range/2):
returner=1
endif
endif
endif
endif
endfunction returner
function clear_res():
for x=1 to 10000:
if image exist(x)=1 then delete image x
if object exist(x)=1 then delete object x
if effect exist(x)=1 then delete effect x
if sprite exist(x)=1 then delete sprite x
if sound exist(x)=1 then delete sound x
if music exist(x)=1 then delete music x
next x
endfunction
function delete_enemies():
for obj=200 to 600:
if object exist(obj)=1:
delete object obj
endif
next obj
endfunction
function hurt_circle():
ink rgb(255,0,0),0
circle object screen x(2),object screen y(2),30
endfunction
function dropbomb(x,z):
bombobj=freebomb()
make object sphere bombobj,20
position object bombobj,x,0,z
texture object bombobj,11
endfunction
function freebomb():
for clearobj=500 to 600:
if object exist(clearobj)=0 then exit
next clearobj
if clearobj>590 then delete object 599:clearobj=599
endfunction clearobj
triumph:
make object plain 3333,160,160
texture object 3333,333
disable object zdepth 3333
set object filter 3333,0
set object transparency 3333,1
position object 3333,object position x(210),object position y(210),object position z(210)
point object 3333,camera position x(),camera position y(),camera position z()
return
dead:
make object plain 333,160,160
texture object 333,333
disable object zdepth 333
set object filter 333,0
set object transparency 333,1
hide object 2
position object 333,object position x(2),object position y(2),object position z(2)
point object 333,camera position x(),camera position y(),camera position z()
do
set text size 48
ink rgb(255,0,0),0
center text 320,240,"Game Over!!!"
set text size 16
center text 320,340,"(enter key to restart level, or escape to exit)"
if returnkey()=1 then show object 2:delete object 333:restart=wave:goto start
sync
loop
return
cake:
do
set cursor 0,0
set text size 6
ink rgb(rnd(255),0,0),0
set text font "fixedsys"
print " #,"
print " ###"
print " ## ##"
print " ## ##"
print " ####"
print " :"
ink rgb(255,255,255),0
print " #####"
print " ######"
print " ## ##"
print " ## ##"
print " ## ##########"
print " ## #############"
print " ####### ###############"
print " #############################"
print " .###################################"
print " #####################################;"
print " ## ##."
print " ## ##"
print " #####################################"
print " ## ##"
print " ## ##"
print " ## ###"
print " ##### #####"
print " ### ##################################### ###"
print " ### ## ## ###"
print " ## ## ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ## ##"
print " ## ##################################### ##"
print " ## ##"
print " #########################################"
set text font "Arial"
ink rgb(rnd(255),rnd(255),rnd(255)),0
set text size 24
center text 510,230,"CAKE HAS BEEN SERVED--"
center text 510,250,"You Win!!!!!!!!!!!!"
set text size 14
center text 510,365,"...escape key to exit..."
sync
loop
return

forever loading...