I dont know if this would be a snowboard or a hover board, it can be whatever you want it to be.. but here you go.
`setup
sync on
sync rate 0
hide mouse
set camera range 1,9999999999999
set ambient light 40
`backdrop
backdrop on
color backdrop 0
`Variables
id=1
`Game Arrays
Dim Spd#(0)
Dim Frict#(0)
Dim Grav#(0) : Grav#(0)=3.2
Dim Xspd#(0)
Dim Yspd#(0)
Dim Zspd#(0)
Dim X#(0)
Dim Y#(0)
Dim Z#(0)
Dim Ax#(0)
Dim Ay#(0)
Dim Az#(0)
Spd#(0)=2.0
Frict#(0)=0.98
slip#=2
`Create a landscape
make matrix 1,10000,10000,25,25
load image "wall1.bmp",1
prepare matrix texture 1,1,1,1
`Create ramps
for t=1 to 24
set matrix height 1,t,1,500
set matrix height 1,1,t,500
set matrix height 1,t,24,500
set matrix height 1,24,t,500
next t
for t=2 to 23
set matrix height 1,t,2,500
set matrix height 1,2,t,500
set matrix height 1,t,23,500
set matrix height 1,23,t,500
next t
`Create a gap
for t=2 to 23
set matrix height 1,9,t,500
set matrix height 1,15,t,500
set matrix height 1,8,t,100
set matrix height 1,16,t,100
next t
`matrix settings and normals
set matrix 1,1,1,1,1,1,1,1
for z=1 to 24
for x=1 to 24
h8#=get matrix height(1,x,z-1)
h4#=get matrix height(1,x-1,z)
h#=get matrix height(1,x,z)
h2#=get matrix height(1,x,z)
x1#=(x-1)*25.0 : y1#=h#
x2#=(x+0)*25.0 : y2#=h4#
dx#=x2#-x1#
dy#=y2#-y1#
ax#=atanfull(dx#,dy#)
ax#=wrapvalue(90-ax#)
z1#=(z-1)*25.0 : y1#=h2#
z2#=(z+0)*25.0 : y2#=h8#
dz#=z2#-z1#
dy#=y2#-y1#
az#=atanfull(dz#,dy#)
az#=wrapvalue(90-az#)
nx#=sin(ax#)
ny#=cos(ax#)
nz#=sin(az#)
set matrix normal 1,x,z,nx#,ny#,nz#
next x
next z
update matrix 1
`Create a board
Make object box id,100,10,150
set object rotation zyx id
color object id,rgb(rnd(255),rnd(255),rnd(255))
`yrotate object id,1
`))Main Loop((
Do
`Stuff
X#(0)=object position x(id)
Y#(0)=object position y(id)
Z#(0)=object position z(id)
Ax#(0)=object angle x(id)
Ay#(0)=object angle y(id)
Az#(0)=object angle z(id)
`Controls
if upkey()=1 then up=1 else up=0
if downkey()=1 then down=1 else down=0
if leftkey()=1 then left=1 else left=0
if rightkey()=1 then right=1 else right=0
`Do some Physics
if up=1
xspd#(0)=xspd#(0)+newxvalue(0,ay#(0),spd#(0))
zspd#(0)=zspd#(0)+newzvalue(0,ay#(0),spd#(0))
endif
if down=1
xspd#(0)=xspd#(0)+newxvalue(0,ay#(0),spd#(0)*-1)
zspd#(0)=zspd#(0)+newzvalue(0,ay#(0),spd#(0)*-1)
endif
if left=1
ay#(0)=wrapvalue(ay#(0)-3.0)
endif
if right=1
ay#(0)=wrapvalue(ay#(0)+3.0)
endif
xspd#(0)=xspd#(0)*frict#(0)
zspd#(0)=zspd#(0)*frict#(0)
x#(0)=x#(0)+xspd#(0)
z#(0)=z#(0)+zspd#(0)
ay#=wrapvalue(curveangle(ay#(0),ay#(0),20.0))
`gravity & matrix tilting
if y#(0)<get ground height(1,x#(0),z#(0))+5
Yspd#(0)=Yspd#(0)+(Y#(0)-get ground height(1,x#(0),z#(0))+5)
Y#(0)=get ground height(1,x#(0),z#(0))
`Get points around player
out#=1
frontx#=newxvalue(x#(0),ay#(0),out#)
frontz#=newzvalue(z#(0),ay#(0),out#)
backx#=newxvalue(x#(0),ay#(0),out#*-1)
backz#=newzvalue(z#(0),ay#(0),out#*-1)
leftx#=newxvalue(x#(0),wrapvalue(ay#(0)-90),out#)
leftz#=newzvalue(z#(0),wrapvalue(ay#(0)-90),out#)
rightx#=newxvalue(x#(0),wrapvalue(ay#(0)+90),out#)
rightz#=newzvalue(z#(0),wrapvalue(ay#(0)+90),out#)
`Get heights of those points
front#=get ground height(1,frontx#,frontz#)
back#=get ground height(1,backx#,backz#)
left#=get ground height(1,leftx#,leftz#)
right#=get ground height(1,rightx#,rightz#)
`Do rotation
ax#(0)=wrapvalue(curveangle((back#-front#)*30,object angle x(id),5.0))
az#(0)=wrapvalue(curveangle((left#-right#)*30,object angle z(id),5.0))
`Slide on hills
xmove#=(back#-front#)/slip#
zmove#=(left#-right#)/slip#
xspd#(0)=xspd#(0)+newxvalue(0,ay#(0),xmove#)
zspd#(0)=zspd#(0)+newzvalue(0,ay#(0),xmove#)
xspd#(0)=xspd#(0)+newxvalue(0,wrapvalue(ay#(0)+90),zmove#)
zspd#(0)=zspd#(0)+newzvalue(0,wrapvalue(ay#(0)+90),zmove#)
endif
`Find out if your in the air or not
if y#(0)<get ground height(1,x#(0),z#(0))+5
jump=0
else
jump=1
endif
`More gravity stuff
Yspd#(0)=Yspd#(0)+grav#(0)
y#(0)=y#(0)-yspd#(0)
`Apply Physics to player
position object id,x#(0),y#(0),z#(0)
rotate object id,ax#(0),ay#(0),az#(0)
`Camera Control
ca#=wrapvalue(curveangle(ay#,ca#,20.0))
cx#=newxvalue(x#(0),ca#,-600)
cz#=newzvalue(z#(0),ca#,-600)
cy#=y#(0)+300
position camera cx#,cy#,cz#
yrotate camera wrapvalue(ca#)
point camera x#(0),y#(0),z#(0)
`print stuff
if jump=1 then state$="Jumping"
if jump=0 then state$="On the ground"
ink rgb(255,0,0),0
set cursor 0,0
print "State: ",state$
`))End Loop((
Sync
Loop
i just felt the urge to do some physics.. the matrix tiling sucks though, i didnt pay any attention to that
Your signature has been erased by a mod because it's larger than 600x120...