There is only one objective: POP BALLOONS!
Turning improves every level, but speed also increases.
I haven't gotten past level 4 on easy yet.
WAV file is optional, but makes the game more fun.
`O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O
`O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O
`O O O O O O O O O O O O O O O O O O H I G H - P R E S S U R E O O O O O O O O O O O O O O O O O O O O O
`O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O
set window size 640,480:backdrop on:hide mouse:sync on:sync rate 25:open to write 1,"new.mus"
repeat
read i
if i<>7777 then write byte 1, i
until i=7777
close file 1:load music "new.mus",1:set music volume 1, 50:set text size 22
set text font "comic sans ms"
dim shadeR(1000):dim shadeG(1000):dim shadeB(1000):set ambient light 40
sky=199:make object sphere sky, -6000:set object ambient sky, 0:set object specular sky, 0:gosub ColorSky
ship=200:make object cone ship, 1:rotate object ship, object angle x(ship)+85,object angle y(ship),object angle z(ship)
fix object pivot ship:set object cull ship, 0:set object ambient ship, 100:set object smoothing ship, 100
make object cube 300, .1:make mesh from object 1, 300:delete object 300:add limb ship, 1, 1:offset limb ship, 1, 0,-.5,0
hide limb ship, 1:if file exist("pop.wav")=1 then load sound "pop.wav",1:set sound volume 1, 100
make light 1:MoveSpeed#=1:moveturn#=1:Goal=18:MovInc#=.5
NextTry:
Lcount=0
scale object ship, 5,200,5:menu=1:play music 1
do
if upkey()=1 then menu=menu-1:if menu<1 then menu=3:mPause=1
if downkey()=1 then menu=menu+1:if menu>3 then menu=1:mPause=1
if returnkey()=1 then exit
while upkey()=1
rotate object ship, object angle x(ship),wrapvalue(object angle y(ship)+1),object angle z(ship):gosub MenuText
sync
endwhile
while downkey()=1
rotate object ship, object angle x(ship),wrapvalue(object angle y(ship)+1),object angle z(ship):gosub MenuText
sync
endwhile
rotate object ship, object angle x(ship),wrapvalue(object angle y(ship)+1),object angle z(ship):gosub MenuText
sync
LOOP
rotate object ship,0,0,0:scale object ship, 5,800,5:stop music 1
NextLevel:
Lcount=Lcount+1
count=0:
while inkey$()<>""
endwhile
if menu=1 then GameTimer=210
if menu=2 then GameTimer=170
if menu=3 then GameTimer=150
Lvl=Lvl+1:if Lvl>7 then Lvl=1
GameTimer=GameTimer-(Lvl*10):GoalTimer=GameTimer:Goal=Goal+2:gt#=timer()+1000:mt#=timer()+4500
MovInc#=MovInc#+.1:MoveTurn#=(MovInc#):SpInc#=SPInc+.1:MoveSPeed#=MoveSPeed#+MovInc#
scr#=SpInc#*.005
gosub MakeBalloonz:gosub ColorSky:position object ship,0,0,0
do
if inkey$()="p" then gosub Pause
if GameTimer=0 then goto Lose
if score=Goal and lc=0 then gosub KillEm:play music 1:wt#=timer()+4000:lc=1
if wt#>timer() then ink rgb(rnd(100)+155,rnd(100)+155,rnd(100)+155),0:set cursor 270,180:print "LEVEL CLEAR!" :ink rgb(255,255,255),0
if lc=1 and timer()>wt# then lc=0:stop music 1:score=0:goto NextLevel
position light 1, camera position x(),camera position y(),camera position z()
position object 199, camera position x(),camera position y(),camera position z()
move object ship, MoveSpeed#
x#= object position x(ship):y#= object position y(ship):z#= object position z(ship)
lx#= limb position x(ship, 1):ly#=limb position y(ship, 1):lz#=limb position z(ship, 1)
position camera lx#,ly#,lz#:point camera x#, y#, z#
cx#=camera position x():cy#=camera position y():cz#=camera position z()
if rightkey()=1 then pr#=pr#+SpInc#: if pr#>moveturn# then pr#=pr#-SpInc#
if rightkey()=1 then turn object right ship, pr# else if pr#>0 then pr#=pr#-SpInc#:turn object right ship, pr#
if leftkey()=1 then pl#=pl#+SpInc#: if pl#>moveturn# then pl#=pl#-SpInc#
if leftkey()=1 then turn object left ship, pl# else if pl#>0 then pl#=pl#-SpInc#:turn object left ship, pl#
if upkey()=1 then pu#=pu#+SpInc#:if pu#>moveturn# then pu#=pu#-SpInc#
if upkey()=1 then pitch object up ship, pu# else if pu#>0 then pu#=pu#-SpInc#:pitch object up ship, pu#
if downkey()=1 then pd#=pd#+SpInc#:if pd#>moveturn# then pd#=pd#-SpInc#
if downkey()=1 then pitch object down ship, pd# else if pd#>0 then pd#=pd#-SpInc#:pitch object down ship, pd#
scroll object texture sky, scr#,scr#
visible=0
for check=1 to MaxB
oHit=check
if object exist(check)=1 then if object in screen(check)=1 then visible=1
if object exist(check)=1 and lc=0 then if object collision(ship, check)=1 then gosub Explode
next
drift=1
if visible=0 and scancode()=0 then if lc=0 then set cursor 300, 240:print "TURN!"
if timer()>t# then if particles exist(1)=1 then delete particles 1
SET CAMERA TO OBJECT ORIENTATION ship
count=count+1:if count=25 and score<goal then GameTimer=GameTimer-1:count=0
set cursor 0,0:print "Level: ";Lcount:print "Time: ";GameTimer:print "Goal: ";score;"/";Goal
if mt#>timer() then ink rgb(rnd(100)+155,rnd(100)+155,rnd(100)+155),0:set cursor 295,180:print "Level ";str$(Lcount)
if mt#>timer() then set cursor 180,280:print "BREAK ";goal;" BALLOONS in ";str$(GoalTimer);" SECONDS!":ink rgb(255,255,255),0
sync
LOOP
Explode:
ox#=object position x(oHit):oy#=object position y(oHit):oz#=object position z(oHit)
delete object oHit
if particles exist(1)=1 then delete particles 1
lock pixels
if sound exist(1)=1 then set sound speed 1, rnd(15000)+45000:play sound 1
make particles 1,1,50,20
position camera cx#,cy#,cz#
ghost particles on 1, 1, 3
position particles 1,ox#,oy#,oz#
color particles 1, shadeR(oHit),shadeG(oHit),shadeB(oHit)
color backdrop rgb(shadeR(oHit),shadeG(oHit),shadeB(oHit))
unlock pixels
sync
t#=timer()+2500
score=score+1
return
ColorSky:
if image exist (1)=1 then delete image 1
x=0:y=0
SKyChoice=0
for pix = 1 to 400
if LvL=7 then dot x,y, rgb(rnd(255),rnd(255),rnd(255)) `RAINBOW
if Lvl<7 then dot x,y, rgb(rnd(30)+130,rnd(60)+130,rnd(100)+155)
if Lvl<7 then if rnd(9)=1 then dot x,y, rgb(255,255,255)
x=x+1:if x>19 then x=0:y=y+1
NEXT
get image 1, 0,0,19,19:
texture object sky, 1
return
MakeBalloonz:
MaxB=100
for Balloonz=1 to MaxB
make object sphere Balloonz, 10
position object Balloonz, rnd(400)-rnd(400),rnd(400)-rnd(400),rnd(400)-rnd(400)
if Lvl=1 then r=200:g=20:b=20:shadeR(Balloonz)=r:shadeG(Balloonz)=g:shadeB(Balloonz)=b`RED
if Lvl=2 then r=250:g=50:b=0:shadeR(Balloonz)=r:shadeG(Balloonz)=g:shadeB(Balloonz)=b`ORANGE
if Lvl=3 then r=240:g=240+155:b=20:shadeR(Balloonz)=r:shadeG(Balloonz)=g:shadeB(Balloonz)=b`YELLOW
if Lvl=4 then r=20:g=200:b=20:shadeR(Balloonz)=r:shadeG(Balloonz)=g:shadeB(Balloonz)=b`GREEN
if Lvl=5 then r=20:g=20:b=200:shadeR(Balloonz)=r:shadeG(Balloonz)=g:shadeB(Balloonz)=b`BLUE
if Lvl=6 then r=100:g=20:b=200:shadeR(Balloonz)=r:shadeG(Balloonz)=g:shadeB(Balloonz)=b`PURPLE
if Lvl=7 then r=rnd(255):g=rnd(255):b=rnd(255):shadeR(Balloonz)=r:shadeG(Balloonz)=g:shadeB(Balloonz)=b`RAINBOW
color object Balloonz, rgb(r,g,b)
scale object Balloonz, 100,rnd(20)+110,100
set object ambient Balloonz, 100
set object light Balloonz, 1
set object specular Balloonz, 100
NEXT
return
KillEm:
for delB=1 to MaxB
if object exist(delB)=1 then delete object delB
NEXT
return
Lose:
do
set cursor 200,200:print "TIME IS UP! ...PLAY AGAIN (Y/N)?"
if inkey$()="y" then gosub KillEm:Lvl=0:score=0:goal=18:SpInc#=0:MovInc#=.5:MoveSpeed#=1:goto NextTry
if inkey$()="n" then end
sync
LOOP
Pause:
while inkey$()="p"
ENDWHILE
do
set cursor 290,180:print "PAUSED"
if inkey$()="p" then exit
sync
LOOP
while inkey$()<>""
ENDWHILE
return
MenuText:
set cursor 250,120 :print "HIGH-PRESSURE"
set cursor 280,140: print "Classic"
set cursor 280,160: print "Medium-Rare"
set cursor 280,180: print "Unpleasant"
if menu=1 then set cursor 260,140:print "*"
if menu=2 then set cursor 260,160:print "*"
if menu=3 then set cursor 260,180:print "*"
return
data 77,84,104,100,0,0,0,6,0,1,0,11,0,240,77,84,114,107,0,0,0,19,0,255,88,4,4,2,24,8,0,255,81,3,8,102,59,0,255,47,0
data 77,84,114,107,0,0,0,88,0,255,1,4,66,65,83,83,0,192,36,11,192,33,64,144,52,127,49,128,52,64,119,144,50,127,50,128
data 50,64,129,13,144,46,127,46,128,46,64,11,144,45,122,51,128,45,64,2,144,43,127,63,128,43,64,129,94,144,36,127,72
data 128,36,64,8,144,37,127,41,192,36,19,128,37,64,48,144,28,127,129,1,128,28,64,0,255,47,0,77,84,114,107,0,0,0,147
data 0,255,1,6,71,85,73,84,65,82,0,193,26,0,177,7,87,93,145,74,122,9,225,0,66,6,225,0,73,5,225,0,81,7,225,0,90,6,225
data 0,103,7,225,0,112,6,225,0,119,4,129,74,64,68,225,0,64,34,145,74,121,48,129,74,64,129,2,225,0,67,0,145,69,98,6,225
data 0,75,6,225,0,82,6,225,0,86,7,225,0,89,7,225,0,92,19,225,0,88,5,225,0,80,7,225,0,64,58,145,67,116,3,129,69,64,46
data 129,67,64,129,112,145,60,95,66,129,60,64,3,145,61,91,56,129,61,64,55,145,64,95,64,129,64,64,0,255,47,0,77,84,114
data 107,0,0,0,82,0,255,1,5,66,82,65,83,83,0,195,61,86,147,79,127,44,131,79,64,126,147,76,127,41,131,76,64,129,2,147
data 70,126,52,131,70,64,3,147,69,127,55,131,69,64,6,147,67,127,52,131,67,64,129,108,147,72,127,56,131,72,64,8,147,73
data 127,52,131,73,64,64,147,76,127,70,131,76,64,0,255,47,0,77,84,114,107,0,0,0,101,0,255,1,8,65,76,84,79,32,83,65,88
data 0,196,65,82,148,74,121,45,132,74,64,117,148,71,122,46,132,71,64,129,10,148,67,117,44,132,67,64,6,148,66,111,58,132
data 66,64,2,148,64,117,55,132,64,64,129,113,148,60,106,64,148,61,106,8,132,60,64,40,132,61,64,65,148,67,103,0,148,70
data 104,1,148,62,97,87,132,62,64,0,132,67,64,3,132,70,64,0,255,47,0,77,84,114,107,0,0,0,89,0,255,1,12,66,65,82,73,84
data 79,78,69,32,83,65,88,0,197,67,82,149,52,116,55,133,52,64,111,149,50,111,44,133,50,64,129,1,149,46,109,44,133,46
data 64,11,149,45,103,53,133,45,64,12,149,43,109,58,133,43,64,129,113,149,38,112,42,133,38,64,18,149,39,103,61,133,39
data 64,49,149,40,117,66,133,40,64,0,255,47,0,77,84,114,107,0,0,0,94,0,255,1,9,84,69,78,79,82,32,83,65,88,0,198,66,85
data 150,71,106,49,134,71,64,113,150,69,107,48,134,69,64,129,2,150,62,92,59,150,63,100,2,134,62,64,59,150,64,100,4,134
data 63,64,60,134,64,64,129,92,150,54,98,58,134,54,64,5,150,53,91,53,134,53,64,72,150,52,103,0,150,56,109,83,134,56,64
data 1,134,52,64,0,255,47,0,77,84,114,107,0,0,0,100,0,255,1,5,68,114,117,109,115,0,201,0,73,153,43,127,31,137,43,64,129
data 15,153,45,127,37,137,45,64,129,0,153,48,124,34,137,48,64,33,153,47,127,32,137,47,64,38,153,45,127,34,137,45,64,129
data 116,153,40,111,44,137,40,64,25,153,40,127,65,137,40,64,58,153,46,127,6,153,35,127,16,153,42,127,27,137,46,64,129,26
data 137,35,64,13,137,42,64,0,255,47,0,77,84,114,107,0,0,0,98,0,255,1,6,68,82,85,77,83,50,73,159,43,127,31,143,43,64,129
data 15,159,45,127,37,143,45,64,129,0,159,48,124,34,143,48,64,33,159,47,127,32,143,47,64,38,159,45,127,34,143,45,64,129
data 116,159,40,111,44,143,40,64,25,159,40,127,65,143,40,64,58,159,46,127,6,159,35,127,16,159,42,127,27,143,46,64,129,26
data 143,35,64,13,143,42,64,0,255,47,0,77,84,114,107,0,0,0,89,0,255,1,5,66,65,83,83,50,0,204,36,11,204,33,64,156,52,127
data 49,140,52,64,119,156,50,127,50,140,50,64,129,13,156,46,127,46,140,46,64,11,156,45,122,51,140,45,64,2,156,43,127,63
data 140,43,64,129,94,156,36,127,72,140,36,64,8,156,37,127,41,204,36,19,140,37,64,48,156,28,127,129,1,140,28,64,0,255,47
data 0,77,84,114,107,0,0,0,83,0,255,1,6,66,82,65,83,83,50,0,206,61,86,158,79,127,44,142,79,64,126,158,76,127,41,142,76,64
data 129,2,158,70,126,52,142,70,64,3,158,69,127,55,142,69,64,6,158,67,127,52,142,67,64,129,108,158,72,127,56,142,72,64,8
data 158,73,127,52,142,73,64,64,158,76,127,70,142,76,64,0,255,47,0,7777
D.D.