Well, this is something I am working since yesterday.
It is a Lunar Lander clone, but it is very, very simple yet.
Take a look. Just paste it somewhere and compile.
set display mode 1366,768,32
maximize window
set window layout 0,0,0
global mx as float
sync on
sync rate 60
global lseed as double integer
global gravity as float
global maxspeed as float
type landr
x as float
y as float
z as float
a as float
pow as float
fuel as float
cons as float
thrust_x as float
thrust_y as float
vel_x as float
vel_y as float
pfreq as integer
endtype
lander as landr
autocam off
color backdrop 0
do
cls 0
landerselect()
maketerrain()
background(11)
gravity = .005 * (rnd(19)+1)
maxspeed= 10
position object 10,10000,5000,0
crashed = 0
repeat
crashed = movelander(10)
sync
until crashed = 1
make particles 1,0,rnd(9)+1,200
color particles 1,255,255,255
position particles 1,lander.x,lander.y,lander.z
set particle life 1,rnd(30)+20
set particle chaos 1,rnd(20)
set particle floor 1,1
set particle gravity 1,gravity
set particle velocity 1,1
set particle speed 1,0.1
f = 0
repeat : sync : inc f : until f = 300
delete particles 1
LOOP
function texturizar(n)
if image exist(n) = 1 then delete image n
w = 2 ^ (rnd(4) + 4)
h = 2 ^ (rnd(4) + 4)
create bitmap n,w+1,h+1
cls rgb(rnd(254)+1,rnd(254)+1,rnd(254)+1)
lock pixels
x = floor(w/2)
y = floor(h/2)
for l = 1 to rnd(8)+2
c = rgb(rnd(254)+1,rnd(254)+1,rnd(254)+1)
dx = rnd(w-1)+1
dy = rnd(h-1)+1
expo = rnd(4)+5
ptnx = rnd(4)+1
ptny = rnd(4)+1
for s = 1 to 2^expo
dot4way(x,y,dx,dy,c,ptnx,ptny)
vx = rnd(1)-rnd(1)
vy = rnd(1)-rnd(1)
dx = wrap(dx+vx,0,w/2)
dy = wrap(dy+vy,0,h/2)
next
next
unlock pixels
get image n,0,0,w+1,h+1,1
delete bitmap n
ENDFUNCTION
function dot4way(x,y,dx,dy,color,ptnx,ptny)
stepx = (dx*2)/ptnx
stepy = (dy*2)/ptny
for nx = x - dx to x + dx step stepx
for ny = y - dy to y + dy step stepy
dot nx,ny,color
next
NEXT
ENDFUNCTION
function maketerrain()
if matrix exist(1) = 1 then delete matrix 1
mvar=rnd(4000)+1000
tvar=rnd(90)+10
gvar=rnd(45)+5
hvar=(rnd(29)+1)*3
make matrix 1,20000,5,mvar,1
for hc = 1 to 20
for x = 1 to mvar
set matrix height 1,x,0,-500
if rnd(tvar) = 0 then gvar = wrap(gvar+1,0,1)
if gvar = 1
h = get matrix height(1,x,1) + hvar
set matrix height 1,x,1,h
ENDIF
next
NEXT
texturizar(1)
prepare matrix texture 1,1,1,1
update matrix 1
endfunction
function buildlander(n)
lander.x = 0
lander.y = 0
lander.z = 0
lander.a = 0
lander.pow = (rnd(7)+1)*0.025
lander.fuel= rnd(75)+25
lander.cons= (rnd(19)+1)*0.01
lander.thrust_x= 0
lander.thrust_y= 0
lander.vel_x= 0
lander.vel_y= 0
lander.pfreq = rnd(75)+25
h = 16 : w = h/2
create bitmap n,w,h
x = w-1
y = rnd(h-1)
sz = w*h
clr = rgb(rnd(254)+1,rnd(254)+1,rnd(254)+1)
repeat : rcl = rgb(rnd(1)*255,rnd(1)*255,rnd(1)*255) : until rcl <> rgb(0,0,0)
cls 0
lock pixels
u = y : d = y : l = x
repeat
dot x,y,clr
x = clamp(x + rnd(1) - rnd(1),0,w-1)
y = clamp(y + rnd(1) - rnd(1),0,h-1)
dec sz,1
until sz = 0
unlock pixels
if image exist(n) = 1 then delete image n
get image n,0,0,w,h,1
delete bitmap n
m = 10
w = w*m
h = h*m
if object exist(n) = 1 then delete object n
make object plane n,w*2,h
texture object n,n
set object transparency n,1
set object texture n,2,1
set object filter n,0
scale object texture n,2,1
make object collision box n,-w,-w,-w,w,w,w,1
offset limb n,0,0,w/2,0
if particles exist(n) = 0 then make particles n,0,1,lander.pfreq
set particle floor n,0
set particle gravity n,1
set particle life n,15+rnd(25)
set particle chaos n,rnd(10)
set particle velocity n,-0.5 - (rnd(19)*0.1)
set particle speed n,0.1
color particles n,rgbr(rcl),rgbg(rcl),rgbg(rcl)
ENDFUNCTION
function landerselect()
cls 0
n = 10
repeat
randomize lseed
buildlander(n)
position object n,0,0,0
position particles n,object position x(n),object position y(n),object position z(n)
rotate particles n,object angle x(n),object angle y(n),object angle z(n)
position camera 0,0,0,-100
point camera 0,0,0,0
repeat
if controlkey() = 1
set particle emissions n,lander.pfreq
else
set particle emissions n,0
ENDIF
set text size 100
set cursor 0,0
print lseed
print "Thrust Pwr:",lander.pow
print "Fuel Tank :",lander.fuel
print "FuelConsum:",lander.cons
sync
until upkey() = 1 or downkey() = 1 or returnkey() = 1
lseed = wrap(lseed+upkey()-downkey(),0,8999999999999999)
sleep 250
until returnkey() = 1
ENDFUNCTION
function movelander(n)
lander.a = wrapvalue(object angle z(n) - (rightkey()-leftkey()))
zrotate object n,lander.a
lander.x = object position x(n)
lander.y = object position y(n)
lander.z = object position z(n)
position particles n,lander.x,lander.y,lander.z
rotate particles n,object angle x(n),object angle y(n),object angle z(n)
if upkey() = 1 and lander.fuel > 0
set particle emissions n,lander.pfreq
lander.thrust_x = -(sin(lander.a)*lander.pow)
lander.thrust_y = cos(lander.a)*lander.pow
dec lander.fuel,lander.cons
else
set particle emissions n,0
lander.thrust_x = 0
lander.thrust_y = 0
ENDIF
lander.vel_x = lander.vel_x + lander.thrust_x
lander.vel_y = lander.vel_y - gravity + lander.thrust_y
v# = abs(lander.vel_x)+abs(lander.vel_y)
inc lander.x,lander.vel_x
inc lander.y,lander.vel_y
lander.z = 5
lander.y = clamp(lander.y,get ground height(1,lander.x,lander.z),20000)
lander.x = clamp(lander.x,0,20000)
if lander.y <= get ground height(1,lander.x,lander.z)
if abs(lander.vel_y) > 3 or abs(lander.vel_x) > 1 then crashed = 1
lander.vel_x = 0
lander.vel_y = 0
ENDIF
if lander.x <= 100 or lander.x >= 19900 or lander.y >= 19900 then crashed = 1
position object n,lander.x,lander.y,lander.z
position camera 0,lander.x,lander.y,lander.z - 1000
point camera 0,lander.x,lander.y,lander.z
set text size 100
text 0,0, "HSpeed: "+str$(abs(lander.vel_x))
text 0,80, "VSpeed: " + str$(abs(lander.vel_y))
text 0,160,"Fuel: " + str$(lander.fuel)
ENDFUNCTION crashed
function background(n)
create bitmap n,2000,2000
lock pixels
for x = 1 to 2000
for y = 1 to 2000
if rnd(20) = 0 then dot x,y,rgb(255,255,255)
next
NEXT
unlock pixels
if image exist(n) = 1 then delete image n
get image n,0,0,2000,2000,1
delete bitmap n
if object exist(n) = 1 then delete object n
make object plane n,20000,20000
texture object n,n
position object n,10000,10000,10
set object light n,0
set object filter n,2
ENDFUNCTION
God is real - except if declared as integer.