Challenge: 
Winner?: 
No
Code Snippet: 
sync on
sync rate 60

for i=0 to 31
  ink rgb(i*8,i*8,i*8),0
  line 0,i,31,i
  ink rgb(sin(i*5.625)*255,sin(i*5.625)*80,0),0
  line i,32,i,63
next i

get image 3,0,32,31,63

autocam off


type coordXYZ

   X as Float
   Y as Float
   Z as Float

endtype


type sizes

   Height as Float
   Depth as Float
   Width as Float

endtype


type terrainobj

   Pos as coordXYZ
   Size as sizes
   Object as Integer

endtype


type playerobj

   Pos as coordXYZ
   Object as Integer
   Frame01 as Integer
   Frame02 as Integer
   Frame03 as Integer
   Frame04 as Integer
   Frame05 as Integer
   LaserLeft as Integer
   LaserRight as Integer

endtype




dim Cubes(40) as terrainobj

for i = 0 to array count(Cubes())

   Cubes(i).Size.Height = 80+rnd(30)
   Cubes(i).Size.Depth = 80+rnd(10)
   Cubes(i).Size.Width = 20+rnd(10)
   if i MOD 2 = 0
      Cubes(i).Pos.X = 65+rnd(30)
      Cubes(i).Pos.Y = 0
      Cubes(i).Pos.Z = (INT(i*0.5))*50
   else
      Cubes(i).Pos.X = -95+rnd(30)
      Cubes(i).Pos.Y = 0
      Cubes(i).Pos.Z = (INT(i*0.5))*50
   endif

   Cubes(i).Object = 100+i

   make object Box Cubes(i).Object, Cubes(i).Size.Width, Cubes(i).Size.Height, Cubes(i).Size.Depth
   position object Cubes(i).Object, Cubes(i).Pos.X, Cubes(i).Pos.Y, Cubes(i).Pos.Z

   set object collision on Cubes(i).Object
   set object collision to boxes Cubes(i).Object

next i

dim Frip(20) as terrainobj

for i = 0 to array count (Frip())

   Frip(i).Size.Height = 10+rnd(5)
   Frip(i).Size.Depth = 20+rnd(60)
   Frip(i).Size.Width = Frip(i).Size.Depth
   if i MOD 2 = 0
      Frip(i).Pos.X = 95+rnd(900)
      Frip(i).Pos.Y = 20
      Frip(i).Pos.Z = (INT(i*0.5))*50
   else
      Frip(i).Pos.X = -95-rnd(900)
      Frip(i).Pos.Y = 20
      Frip(i).Pos.Z = (INT(i*0.5))*50
   endif

   Frip(i).Object = 200+i

   make object Box Frip(i).Object, Frip(i).Size.Width, Frip(i).Size.Height, Frip(i).Size.Depth
   position object Frip(i).Object, Frip(i).Pos.X, Frip(i).Pos.Y, Frip(i).Pos.Z


next i


Player as playerobj

Player.Object = 999
make object cube Player.Object,1
set object collision on Player.Object
set object collision to boxes Player.Object

Player.Pos.X = 0
Player.Pos.Y = 0
Player.Pos.Z = 0

Player.Frame01 = 1000
make object box Player.Frame01,0.1,0.1,10
glue object to limb  Player.Frame01, Player.Object, 0
Position Object Player.Frame01, Player.Pos.X+1.5, Player.Pos.Y+0.75, Player.Pos.Z+1
rotate object Player.Frame01,15,-5,0

Player.Frame02 = 1001
make object box Player.Frame02,0.1,0.1,10
glue object to limb  Player.Frame02, Player.Object, 0
Position Object Player.Frame02, Player.Pos.X-1.5, Player.Pos.Y+0.75, Player.Pos.Z+1
rotate object Player.Frame02,15,5,0

Player.Frame03 = 1002
make object box Player.Frame03,0.1,3,10
glue object to limb  Player.Frame03, Player.Object, 0
Position Object Player.Frame03, Player.Pos.X-1.5, Player.Pos.Y-2.1  , Player.Pos.Z+1
rotate object Player.Frame03,0,5,0

Player.Frame04 = 1003
make object box Player.Frame04,0.1,3,10
glue object to limb  Player.Frame04, Player.Object, 0
Position Object Player.Frame04, Player.Pos.X+1.5, Player.Pos.Y-2.1  , Player.Pos.Z+1
rotate object Player.Frame04,0,-5,0

Player.Frame05 = 1004
make object box Player.Frame05,2,0.2,10
glue object to limb  Player.Frame05, Player.Object, 0
Position Object Player.Frame05, Player.Pos.X, Player.Pos.Y-2  , Player.Pos.Z+1
rotate object Player.Frame05,-16,0,0

Player.LaserLeft = 1005
make object plain Player.LaserLeft,2,600
set object Player.LaserLeft,1,0,0,2,0
ghost object on Player.LaserLeft
set alpha mapping on Player.LaserLeft,100
texture object Player.LaserLeft,3
glue object to limb Player.LaserLeft, Player.Object, 0
rotate object Player.LaserLeft,-90,0,0
position object Player.LaserLeft,Player.Pos.X-3,Player.Pos.Y-0.5, Player.Pos.Z+300


Player.LaserRight = 1006
make object plain Player.LaserRight,2,600
set object Player.LaserRight,1,0,0,2,0
ghost object on Player.LaserRight
set alpha mapping on Player.LaserRight,100
texture object Player.LaserRight,3
glue object to limb Player.LaserRight, Player.Object, 0
rotate object Player.LaserRight,-90,0,0
position object Player.LaserRight,Player.Pos.X+3,Player.Pos.Y-0.5, Player.Pos.Z+300

hide object Player.LaserRight
hide object Player.LaserLeft



make object plain 2,200,1000
rotate object 2,-90,0,0
position object 2,0,-20,400

make object plain 3,1000,1000
rotate object 3,-90,0,0
position object 3,-600,20,400

make object plain 4,1000,1000
rotate object 4,-90,0,0
position object 4,600,20,400

color backdrop 0
fog on
fog distance 900

do



move_graphix()
character_movement()
detect_collision()

lasers()
sync
loop




function move_graphix()


for i = 0 to array count(Cubes())
   Cubes(i).Pos.X = Cubes(i).Pos.X
   Cubes(i).Pos.Y = Cubes(i).Pos.Y
   Cubes(i).Pos.Z = Cubes(i).Pos.Z - 5

   if  Cubes(i).Pos.Z < -15
       Cubes(i).Pos.Z = 800
      if i MOD 2 = 0
         Cubes(i).Pos.X = 65+rnd(30)
      else
         Cubes(i).Pos.X = -95+rnd(30)
      endif
   endif

   position object Cubes(i).Object, Cubes(i).Pos.X, Cubes(i).Pos.Y, Cubes(i).Pos.Z

next i



for i = 0 to array count(Frip())
   Frip(i).Pos.X = Frip(i).Pos.X
   Frip(i).Pos.Y = Frip(i).Pos.Y
   Frip(i).Pos.Z = Frip(i).Pos.Z - 5

   if  Frip(i).Pos.Z < -15
       Frip(i).Pos.Z = 800
      if i MOD 2 = 0
         Frip(i).Pos.X = 95+rnd(900)
      else
         Frip(i).Pos.X = -95-rnd(900)
      endif
   endif

   position object Frip(i).Object, Frip(i).Pos.X, Frip(i).Pos.Y, Frip(i).Pos.Z


next i




endfunction




function character_movement()


if rightkey() = 1
   Player.Pos.X = Player.Pos.X + 1
   rotateamount# = object angle z(Player.Object) + (-15 - object angle z(Player.Object))/7
   zrotate object Player.Object,rotateamount#
else
   if leftkey() = 1
      Player.Pos.X = Player.Pos.X - 1
      rotateamount# = object angle z(Player.Object) + (15 - object angle z(Player.Object))/7
      zrotate object Player.Object,rotateamount#
   else
      rotateamount# = object angle z(Player.Object) + (0 - object angle z(Player.Object))/7
      zrotate object Player.Object,rotateamount#
   endif
endif


if upkey() = 1
   Player.Pos.Y = Player.Pos.Y + 0.75
   rotateamountx# = object angle x(Player.Object) + (-5 - object angle x(Player.Object))/10
   xrotate object Player.Object,rotateamountx#
else
   if downkey() = 1
      Player.Pos.Y = Player.Pos.Y - 0.75
      rotateamountx# = object angle x(Player.Object) + (5 - object angle x(Player.Object))/10
      xrotate object Player.Object,rotateamountx#
   else
      rotateamountx# = object angle x(Player.Object) + (0 - object angle x(Player.Object))/10
      xrotate object Player.Object,rotateamountx#
   endif
endif

Position Camera Player.Pos.X, Player.Pos.Y, Player.Pos.Z

Position Object Player.Object, Player.Pos.X, Player.Pos.Y, Player.Pos.Z
rotate camera Object Angle x(Player.Object),0,Object Angle z(Player.Object)


endfunction




function detect_collision()


if object collision(Player.Object,0) > 0
   set cursor 0,0
   print "OUCH OUCH OUCH OUCH!!!"
endif

if object position y(Player.Object) < -18
   set cursor 0,20
   print "FLOOR CRASH!!"
endif

endfunction



function lasers()

if spacekey() = 1
   show object Player.LaserLeft
   show object Player.LaserRight
else
   hide object Player.LaserLeft
   hide object Player.LaserRight
endif

endfunction