The entries are looking cool, I like the twist on space invaders, and Star Castle, has a great arcade feel to it. Anyway I had a snow day on Thursday so I decided to try and make another game. I really have no idea if this game was popular when it came out, so hopefully some of you know it. It's called River Raid. The arrow keys move, and space fires. Avoid the green blocks (land) and the red blocks are fuel which you need to collect every once in a while (monitor your fuel level to make sure you don't get too low.) Any suggestions would be appreciated.
sync on:sync rate 120
randomize timer()
draw sprites first
draw to front
global dim level(10100)
global dim enemies(10000,2)
global dim blocks(10000,2)
global dim tanks(10000,2)
global lives
global death
global score
global invinsable
global totalblock
global gas
global totaltank
global screeny
global speed
global basespeed
set image colorkey 255,0,255
ink rgb(0,100,0),rgb(0,100,0)
box 0,0,100,600
get image 10,0,0,100,600
cls
restore plane
image(1,4)
restore bullet
image(2,4)
restore heli
image(3,5)
restore block
image(4,15)
restore outline
image(5,2)
ink rgb(100,0,0),rgb(100,0,0)
box 0,0,100,12
get image 6,0,0,100,12
cls
box 0,0,50,50
get image 7,0,0,50,50
cls
do
undim level()
undim enemies()
undim blocks()
undim tanks()
global dim level(10100)
global dim enemies(10000,2)
global dim blocks(10000,2)
global dim tanks(10000,2)
death=0
score=0
invinsable=255
screeny=0
speed=0
basespeed=1
totalblock=0
totaltank=0
gas=2000
x=0
y=0
lives=3
for i=1 to 10000
a=rnd(30)
if x=10
if y mod 4=0
level(i-rnd(9)-1)=4
endif
y=y+1
x=0
fue=0
if rnd(10)=1 and y>6
for j=0 to 2
for k=0 to j
level(i-47+j*10-k)=3
level(i-46+j*10+k)=3
next k
next j
for j=0 to 1
for k=0 to j
level(i-7-j*10-k)=3
level(i-6-j*10+k)=3
next k
next j
endif
endif
x=x+1
select a
case 1
level(i)=1
w=1
endcase
endselect
if w=0 then level(i)=0
w=0
next i
level(i+1)=-999
sprite 1,400,450,1
set sprite priority 1,1
sprite 1000,0,0,10
sprite 1001,700,0,10
make_level()
repeat
flash=flash+1
ink rgb(255,255,255),rgb(255,255,255)
if flash<100
center text screen width()/2,screen height()/2-100,"Press Space to Start"
endif
if flash>200 then flash=0
sync
until spacekey()=1
repeat
if invinsable>0
set sprite alpha 1,255-invinsable
invinsable=invinsable-1
endif
text 0,0,str$(screen fps())
a=a-1
a=fire(a)
move_tank()
control_enemy()
screeny=screeny-speed
move_blocks()
fuel()
display()
move()
sync
until death=2
for i=10 to enemies(0,0)+9
if sprite exist(i)=1 then delete sprite i
next i
for i=1002 to totalblock+1001
if sprite exist(i)=1 then delete sprite i
next i
for i=500 to totaltank+499
if sprite exist(i)=1 then delete sprite i
next i
loop
function fuel()
if gas=0
die()
endif
col=sprite collision(1,0)
if col>500 and col<1000
gas=2000
endif
center text screen width()/2,500,"Fuel"
sprite 7,screen width()/2-51,550,5
sprite 8,screen width()/2-49,550+2,6
set sprite priority 7,1
set sprite priority 8,1
stretch sprite 8,gas/20,100
gas=gas-1
endfunction
function display()
ink rgb(255,255,255),rgb(255,255,255)
text 150,10,"Lives: "+str$(lives)
text 500,10,"Score: "+str$(score)
endfunction
function move()
if upkey()=1
speed=basespeed+1
else
speed=basespeed
endif
if rightkey()=1
rotate sprite 1,90
move sprite 1,2
rotate sprite 1,0
endif
if leftkey()=1
rotate sprite 1,-90
move sprite 1,2
rotate sprite 1,0
endif
col=sprite collision(1,0)
if col>=1000 and invinsable=0
die()
endif
basespeed=int(screeny/-10000)+1
if basespeed>3 then basespeed=3
endfunction
function fire(a)
if spacekey()=1 and a=<0
for i=2 to 6
if sprite exist(i)=0 then spr=i
a=50
next i
if spr>0 then sprite spr,sprite x(1)+sprite width(1)/2-2,450,2
endif
for i=2 to 6
if sprite exist(i)
move sprite i,2
if sprite y(i)<0 then delete sprite i
endif
next i
endfunction a
function control_enemy()
for i=10 to enemies(0,0)+9
if sprite exist(i)
move sprite i,-speed
if sprite y(i)>300 and sprite y(i)<500
rotate sprite i,90
if sprite exist(1)
if sprite x(1)>sprite x(i)
move sprite i,1
if sprite collision(i,0)>1000
move sprite i,-1
endif
else
move sprite i,-1
if sprite collision(i,0)>1000
move sprite i,1
endif
endif
endif
rotate sprite i,0
endif
col=sprite collision(i,0)
if col=1 and invinsable=0
delete sprite i
enemies(i-9,1)=-5
die()
endif
for j=2 to 6
if sprite exist(j)=1 and sprite exist(i)=1
if sprite collision(i,j)=1
delete sprite i
delete sprite j
enemies(i-9,1)=-5
score=score+100
endif
endif
next j
if enemies(i-9,2)>screeny+600 and sprite exist(i)=1
delete sprite i
enemies(i-9,1)=-5
endif
else
if enemies(i-9,1)>0 and enemies(i-9,2)>screeny and enemies(i-9,2)<screeny+600
sprite i,enemies(i-9,1),enemies(i-9,2)-screeny,3
endif
endif
next i
endfunction
function die()
gas=2000
lives=lives-1
invinsable=255
sprite 1,400,450,1
if lives=0
selection=1
repeat
set text size 20
center text screen width()/2,screen height()/2,"GAME OVER"
set text size 10
center text screen width()/2,screen height()/2+50,"Score: "+str$(score)
center text screen width()/2,screen height()/2+75,"Play again?"
if rightkey()=1 then selection=2
if leftkey()=1 then selection=1
if selection=1
ink rgb(100,100,0),rgb(100,100,0)
center text screen width()/2-50,screen height()/2+100,"Yes"
ink rgb(255,255,255),rgb(255,255,255)
center text screen width()/2+50,screen height()/2+100,"No"
endif
if selection=2
ink rgb(255,255,255),rgb(255,255,255)
center text screen width()/2-50,screen height()/2+100,"Yes"
ink rgb(100,100,0),rgb(100,100,0)
center text screen width()/2+50,screen height()/2+100,"No"
endif
sync
ink rgb(255,255,255),rgb(255,255,255)
until returnkey()=1
if selection=2
end
else
death=2
endif
endif
endfunction
function make_enemy(x,y)
enemies(0,0)=enemies(0,0)+1
enemies(enemies(0,0),1)=x
enemies(enemies(0,0),2)=y
endfunction
function make_level()
x=100
repeat
i=i+1
a=level(i)
x=x+60
if x=>700
x=100
y=y-60
endif
if a=1
make_enemy(x,y)
endif
if a=3
make_block(x,y)
endif
if a=4
make_fuel_tank(x,y)
endif
until a=-999
endfunction
function make_block(x,y)
totalblock=totalblock+1
blocks(totalblock,1)=x
blocks(totalblock,2)=y
endfunction
function move_blocks()
for i=1002 to 1002+totalblock-1
if sprite exist(i)
move sprite i,-speed
if blocks(i-1001,2)>screeny+600
delete sprite i
blocks(i-1001,1)=-5
endif
else
if blocks(i-1001,1)>0 and blocks(i-1001,2)>screeny and blocks(i-1001,2)<screeny+600
sprite i,blocks(i-1001,1),blocks(i-1001,2)-screeny,4
endif
endif
next i
endfunction
function make_fuel_tank(x,y)
totaltank=totaltank+1
tanks(totaltank,1)=x
tanks(totaltank,2)=y
endfunction
function move_tank()
for i=500 to 500+totaltank-1
if sprite exist(i)
move sprite i,-speed
if tanks(i-499,2)>screeny+600
delete sprite i
tanks(i-499,1)=-5
endif
else
if tanks(i-499,1)>0 and tanks(i-499,2)>screeny and tanks(i-499,2)<screeny+600
sprite i,tanks(i-499,1),tanks(i-499,2)-screeny,7
endif
endif
next i
endfunction
function image(num,size)
dim colors(100,3)
read a$
a$=a$+"-"
repeat
i=i+1
for j=1 to len(a$)
c$=c$+b$
b$=mid$(a$,j)
if b$="-" or b$=" "
k=k+1
colors(i,k)=val(c$)
c$=""
b$=""
endif
next j
k=0
read a$
a$=a$+"-"
until a$="XXX-"
x=0
y=0
repeat
read a
x=x+1
if a>0 and a<100
ink rgb(colors(a,1),colors(a,2),colors(a,3)),rgb(colors(a,1),colors(a,2),colors(a,3))
box (x-1)*size,(y-1)*size,x*size,y*size
endif
if a=0
ink rgb(255,0,255),rgb(255,0,255)
box (x-1)*size,(y-1)*size,x*size,y*size
endif
if a=100
y=y+1
x=0
endif
until a=-999
get image num,0,0,(x-1)*size,y*size
cls
endfunction
plane:
data "255-255-0"
data "XXX"
data 0,0,0,0,1,0,0,0,0,100
data 0,0,0,0,1,0,0,0,0,100
data 0,0,0,1,1,1,0,0,0,100
data 0,0,1,1,1,1,1,0,0,100
data 0,1,1,0,1,0,1,1,0,100
data 1,1,0,0,1,0,0,1,1,100
data 0,0,0,0,1,0,0,0,0,100
data 0,0,0,1,1,1,0,0,0,100
data 0,0,1,1,0,1,1,0,0,-999
bullet:
data "255-255-0"
data "XXX"
data 1,100
data 1,100
data 1,100
data 1,100
data 1,100
data 1,100
data 1,100
data 1,100
data 1,-999
heli:
data "238 154 0","34-139-34"
data "XXX"
data 0,0,0,0,0,0,0,0,0,100
data 0,0,0,0,0,1,1,0,0,100
data 0,0,0,0,0,0,0,1,1,100
data 2,0,0,0,0,2,2,2,0,100
data 2,2,2,2,2,2,2,2,2,100
data 2,0,0,0,0,2,2,2,2,100
data 0,0,0,0,0,0,2,2,0,100
data 0,0,0,0,0,1,1,1,1,-999
block:
data "0 100 0"
data "XXX"
data 1,1,1,1,100
data 1,1,1,1,100
data 1,1,1,1,100
data 1,1,1,1,100
data 1,1,1,1,-999
outline:
data "0 0 0"
data "XXX"
data 100
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,100
data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,100
data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,100
data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,100
data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,100
data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,100
data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,100
data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-999
Do not ask what the forums can do ask what you can do for the forums.