edit--------
OK now it fit in 19 line.... but because of limit of 255 caractere in Classical DB it fit in 20 lines...
-------------------
and i know its quite easy with external media...but ..THERE IS NO MEDIA
then ..just copy/paste and enjoy
just move the robot with:
W=FOWARD
A=Left
D=Right
Move Camera with:
Arrow key
set display mode 1024,768,16:sync on:dim Ax#(12):dim Ay#(12):dim Sens(12)
dim DistY#(6):x#=25000:z#=25000:for i=1 to 3:sens(i)=1
sens(i+3)=-1:next i:create bitmap 1,1024,1024:for i=1 to 50000:ink rgb(rnd(255),rnd(255),rnd(255)),0:dot rnd(1024),rnd(1024):next i
get image 1,0,0,1024,1024:make matrix 1,50000,50000,70,70:prepare matrix texture 1,1,1,1:fill matrix 1,0,0
make object box 1,100,25,200:set object rotation ZYX 1:make object cylinder 2,12:scale object 2,100,400,100:make mesh from object 1,2
make object sphere 3,1:make mesh from object 2,3:for i=1 to 12:add limb 1,i,2:next i:for i=13 to 24:add limb 1,i,1
next i:for i=25 to 30:add limb 1,i,2:next i:for i=1 to 12:link limb 1,i+12,i:next i:for i=7 to 12
Ay#(i-6)=wrapvalue(sens(i-6)*90):link limb 1,i,i-6:link limb 1,i-6,i+24-6:next i:for i=13 to 24:offset limb 1,i,0,-24,0:next i
for i=1 to 3:offset limb 1,i+24,-50,0,90-((i-1)*90):offset limb 1,i+24+3,50,0,90-((i-1)*90):offset limb 1,i+6,0,-48,0:offset limb 1,i+9,0,-48,0:next i
do:if leftkey()=1:cy#=wrapvalue(cy#-3):endif:if rightkey()=1:cy#=wrapvalue(cy#+3):endif
if upkey()=1:cx#=wrapvalue(cx#+3):endif:if downkey()=1:cx#=wrapvalue(cx#-3):endif:sens1=0
if (lower$(inkey$())="w"):sens1=1:endif:if (lower$(inkey$())="a"):yrotate object 1,wrapvalue(object angle y(1)-1):sens1=1:endif
if (lower$(inkey$())="d"):yrotate object 1,wrapvalue(object angle y(1)+1):sens1=1:endif:if sens1<>0:a=a+1
for i=1 to 6:Ay#(i)=(sin(((a*5)+(i*20))*5+(90*sens(i)*-1))*10)+(90*sens(i)):rotate limb 1,i+24,0,wrapvalue(ay#(i)),0:Ax#(i)=wrapvalue((sin(((a*5)+(i*20))*5)*10)+90):Ax#(i+6)=wrapvalue(-1*Ax#(i))
rotate limb 1,i,Ax#(i),0,0:rotate limb 1,i+6,Ax#(i+6),0,0:next i:for i=1 to 3:if (int(Ax#(i))=80) or (int(Ax#(i+3))=80):x#=newxvalue(x#,object angle y(1),5*sens1)
z#=newzvalue(z#,object angle y(1),5*sens1):endif:next i:endif:addy#=0:for i=1 to 6:DistY#(i)=(48*cos(Ax#(i)))+48:if Addy#<Disty#(i)
Addy#=DistY#(i):endif:next i:y#=get ground height(1,x#,z#)+addy#:position object 1,X#,Y#,Z#:if (cx#>80) and (cx#<100):cx#=80:endif
if (cx#<310) and (cx#>270):cx#=310:endif:position camera object position x(1),object position y(1),object position z(1):rotate camera Cx#,wrapvalue(object angle y(1)+Cy#),0: move camera -300
if get ground height(1,camera position x(),camera position z() )>camera position y():position camera camera position x(),get ground height(1,camera position x(),camera position z() )+5,camera position z()
point camera object position x(1),object position y(1),object position z(1):endif:sync:loop