DarkBASIC Pro
Versão de Avaliação
Patch 5.7
USB Dongle
Forum
Indique
Lista de Email
Diário Antigo
Outros Produtos
Cartography Shop
DarkMatter
Local DBPro Sites
Italy
UK
Visualizador de Código Fonte
Este é o Código Fonte de "Road Terrain Demo".
Cor:
Verde
Laranja
Branco
Tam. Fonte:
Padrão
Grande
` This code is copyright Dark Basic Software Limited 2002 Rem Project: RoadTerrain Rem Created: 02/08/2002 17:53:00 rem Hours: 10 rem Init for best performance sync on : sync rate 60 : backdrop off : hide mouse if check display mode(1024,768,32)=1 then set display mode 1024,768,32 rem Loading screen load bitmap "media\gfx\backdrop.jpg",1 copy bitmap 1,0,0,640,480,0,0,0,screen width(),screen height() sync : delete bitmap 1 rem Setup strapline gosub _create_strap rem Setup terrain load image "media\world\rock.bmp",1 load bitmap "media\world\land.bmp",1 for m=0 to 7 make matrix 1+m,512,512,32,32 : position matrix 1+m,0,0,512*m prepare matrix texture 1+m,1,33,33 : set matrix texture 1+m,2,1 next m set current bitmap 1 lock pixels tc=1 for z=0 to 31 for x=0 to 31 col=point(x,z) h#=rgbr(col)/4.0 for m=0 to 7 set matrix height 1+m,x,z,h# set matrix tile 1+m,31-x,z,tc next m inc tc next x inc tc next z unlock pixels delete bitmap 1 for m=0 to 7 : update matrix 1+m : next m set current bitmap 0 rem Create high quality road surface load image "media\world\road.jpg",11 for r=0 to 7 make object plain 11+r,128,512 position object 11+r,256+10,0.025,512*r texture object 11+r,11 xrotate object 11+r,90 set object texture 11+r,1,1 scale object texture 11+r,200,800 next r rem Load sky and set it up set camera range 0.5,15000 load object "media\sky\os.x",1 position object 1,256,30,0 set object texture 1,2,1 set object light 1,0 set object cull 1,0 yrotate object 1,270 `scale object 1,125,125,125 scale object 1,250,250,250 rem Setup mountain range set image colorkey 255,0,255 load image "media\sky\mountains.bmp",4 make object plain 4,1024*20.5,128*20.5 set object texture 4,2,1 set object light 4,0 set object 4,1,1,1 texture object 4,4 rem Two cars for c=0 to 1 rem Load car obj=5+(c*100) if c=0 then load object "media\bike\bike.x",obj if c=1 then load object "media\bike\bike2.x",obj position object obj,256,2,500 scale object obj,1000,1000,1000 rotate object obj,0,180,0 fix object pivot obj rotate object obj,0,0,0 rem Create shadow for car make object plain obj+2,256,256 load image "media\bike\shadow.bmp",obj+2 scale object obj+2,15,15,15 texture object obj+2,obj+2 xrotate object obj+2,90 ghost object on obj+2,1 next c rem Create ten trees for road set image colorkey 0,0,0 load image "media\world\tree.bmp",501 for tr=1 to 10 make object plain 500+tr,128,128 r=rnd(1) if r=0 then position object 500+tr,160-rnd(400),64,51*(100+rnd(150)) if r=1 then position object 500+tr,370+rnd(400),64,51*(100+rnd(150)) texture object 500+tr,501 set object 500+tr,1,1,1 next tr rem Setup camera, light set point light 0,256,300,256 set camera fov 120 rotate camera 0,0,0 set ambient light 50 rem Load car sound load 3dsound "media\sounds\car.wav",1 : position sound 1,30000,30000,30000 : loop sound 1 load music "media\sounds\music.mp3",1 : loop music 1 rem Init car variables carx#=240 ss#=100 rem Main loop do rem car control carx#=wrapvalue(carx#+1.0) rem Move on road roadz#=roadz#+15.0 side#=wrapvalue(side#+0.3) if roadz#>=512.0 rem move camera back roadz#=roadz#-512.0 rem trees as relative for tr=1 to 10 position object 500+tr,object position x(500+tr),64,object position z(500+tr)-512 next tr endif position camera 256+(sin(side#)*10),12+(cos(side#)*5),roadz#+(sin(side#)*20) xrotate camera 10 rem Position main light position light 0,200,800,roadz# rem Make third matrix rise up over time position matrix 8,0,((512-roadz#)/10.0)*-1,512*7 rem Keep sky and mountains in place position object 1,256,15,roadz# position object 4,256,400,roadz#+(4684) yrotate object 1,wrapvalue(object angle y(1)-0.1) rem Keep car in place for c=0 to 1 rem Position car and parts if c=0 position object 5+(c*100),240+cos(carx#)*8,0,roadz#+35+(sin(ss#*15)*5) position object 7+(c*100),240+cos(carx#)*8,0.1,roadz#+35+(sin(ss#*15)*5) else position object 5+(c*100),270-cos(carx#)*8,0,roadz#+35+(cos(ss#*15)*5) position object 7+(c*100),270-cos(carx#)*8,0.1,roadz#+35+(cos(ss#*15)*5) endif zrotate object 5+(c*100),cos(carx#)*4 rem Rotate car wheels heada#=wrapvalue(heada#+2) if limb exist(5+(c*100),1)=1 t=2 : rotate limb 5+(c*100),t,0,wrapvalue(cos(heada#)*20),0 t=4 : rotate limb 5+(c*100),t,wrapvalue(limb angle x(5+(c*100),t)-35),0,0 t=6 : rotate limb 5+(c*100),t,wrapvalue(limb angle x(5+(c*100),t)-35),0,0 endif next c rem Move trees and wrap them for tr=1 to 10 rem move tree position object 500+tr,object position x(500+tr),64,object position z(500+tr)-15 rem wrap tree if object position z(500+tr)<-512 r=rnd(1) if r=0 then position object 500+tr,160-rnd(400),64,51*(100+rnd(150)) if r=1 then position object 500+tr,370+rnd(400),64,51*(100+rnd(150)) endif next tr rem Move mountains closer and closer if ss#<150 then ss#=ss#+0.05 scale object 4,ss#,ss#,ss# rem Set sound position for car position listener 256,5+(cos(side#)*5),roadz#+(sin(side#)*35) position sound 1,carx#,0,roadz#+35 scale listener 0.25 rem Move strap line gosub _control_strap rem Update screen sync rem Endloop loop rem Demo Subroutines _create_strap: load image "media\gfx\prompt.bmp",2 load image "media\gfx\strapblank.bmp",3 strapx1=0 : sprite 1,strapx1,480-63,2 strapx2=1024 : sprite 2,strapx2,480-63,2 set sprite alpha 1,196 : set sprite alpha 2,196 return _control_strap: dec strapx1 : if strapx1<=-1024 then strapx1=strapx2+1023 dec strapx2 : if strapx2<=-1023 then strapx2=strapx1+1024 sprite 1,strapx1,screen height()-63,2 sprite 2,strapx2,screen height()-63,3 return
Selecionar todo o Código
Ver este Download
Copyright © 2003 Dark Basic Software Limited.
Virtual Object Informática Ltda.®