home *** CD-ROM | disk | FTP | other *** search
/ DarkBasic Professional / DarkBasicPro.iso / data1.cab / Lang_Files_(English) / Projects / RoadTerrain / RoadTerrain.dba next >
Encoding:
Text File  |  2004-09-22  |  5.7 KB  |  224 lines

  1. Rem Project: RoadTerrain
  2. Rem Created: 02/08/2002 17:53:00
  3.  
  4. rem Init for best performance
  5. sync on : sync rate 60 : backdrop off : hide mouse
  6. if check display mode(1024,768,32)=1 then set display mode 1024,768,32
  7.  
  8. rem Loading screen
  9. load bitmap "media\gfx\backdrop.jpg",1
  10. copy bitmap 1,0,0,640,480,0,0,0,screen width(),screen height()
  11. sync : delete bitmap 1
  12.  
  13. rem Setup strapline
  14. gosub _create_strap
  15.  
  16. rem Setup terrain
  17. load image "media\world\rock.bmp",1
  18. load bitmap "media\world\land.bmp",1
  19. for m=0 to 7
  20.  make matrix 1+m,512,512,32,32 : position matrix 1+m,0,-2,512*m
  21.  prepare matrix texture 1+m,1,33,33 : set matrix texture 1+m,2,1
  22. next m
  23. set current bitmap 1
  24. lock pixels
  25. tc=1
  26. for z=0 to 31
  27.  for x=0 to 31
  28.   col=point(x,z)
  29.   h#=rgbr(col)/4.0
  30.   for m=0 to 7
  31.    set matrix height 1+m,x,z,h#
  32.    set matrix tile 1+m,31-x,z,tc
  33.   next m
  34.   inc tc
  35.  next x
  36.  inc tc
  37. next z
  38. unlock pixels
  39. delete bitmap 1
  40. for m=0 to 7 : update matrix 1+m : next m
  41. set current bitmap 0
  42.  
  43. rem Create high quality road surface
  44. load image "media\world\road.jpg",11
  45. for r=0 to 7
  46.  make object plain 11+r,128,512
  47.  position object 11+r,256+10,0.025,512*r
  48.  texture object 11+r,11
  49.  xrotate object 11+r,90
  50.  set object texture 11+r,1,1
  51.  scale object texture 11+r,2,8
  52. next r
  53.  
  54. rem Load sky and set it up
  55. set camera range 2.5,15000
  56. load object "media\sky\os.x",1
  57. position object 1,256,30,0
  58. set object texture 1,2,1
  59. set object light 1,0
  60. set object cull 1,0
  61. yrotate object 1,270
  62. scale object 1,250,250,250
  63.  
  64. rem Setup mountain range
  65. set image colorkey 255,0,255
  66. load image "media\sky\mountains.bmp",4
  67. make object plain 4,1024*20.5,128*20.5
  68. set object texture 4,2,1
  69. set object light 4,0
  70. set object 4,1,1,0
  71. texture object 4,4
  72.  
  73. rem Two bikes
  74. for c=0 to 1
  75.  
  76.  rem Load bike
  77.  obj=5+(c*100)
  78.  if c=0 then load object "media\bike\bike.x",obj
  79.  if c=1 then load object "media\bike\bike2.x",obj
  80.  position object obj,256,2,500
  81.  scale object obj,1000,1000,1000
  82.  rotate object obj,0,180,0
  83.  fix object pivot obj
  84.  rotate object obj,0,0,0
  85.  set object light obj,0
  86.  
  87.  rem Create shadow for bike
  88.  make object plain obj+2,256,256
  89.  load image "media\bike\shadow.bmp",obj+2
  90.  scale object obj+2,15,15,15
  91.  texture object obj+2,obj+2
  92.  xrotate object obj+2,90
  93.  ghost object on obj+2,1
  94.  set object light obj+2,0
  95.  
  96. next c
  97.  
  98. rem Create ten trees for road
  99. set image colorkey 0,0,0
  100. load image "media\world\tree.bmp",501
  101. for tr=1 to 10
  102.  make object plain 500+tr,128,128
  103.  r=rnd(1)
  104.  if r=0 then position object 500+tr,160-rnd(400),64,51*(100+rnd(150))
  105.  if r=1 then position object 500+tr,370+rnd(400),64,51*(100+rnd(150))
  106.  texture object 500+tr,501
  107.  set object 500+tr,1,1,1
  108. next tr
  109.  
  110. rem Setup camera, light
  111. set point light 0,256,300,256
  112. set camera fov 120
  113. rotate camera 0,0,0
  114. set ambient light 50
  115.  
  116. rem Load bike sound
  117. load 3dsound "media\sounds\car.wav",1 : position sound 1,30000,30000,30000 : loop sound 1
  118. load music "media\sounds\music.mp3",1 : loop music 1
  119.  
  120. rem Init bike variables
  121. carx#=240
  122. ss#=100
  123.  
  124. rem Main loop
  125. do
  126.  
  127.  rem bike control
  128.  carx#=wrapvalue(carx#+1.0)
  129.  
  130.  rem Move on road
  131.  roadz#=roadz#+15.0
  132.  side#=wrapvalue(side#+0.3)
  133.  if roadz#>=512.0
  134.   rem move camera back
  135.   roadz#=roadz#-512.0
  136.   rem trees as relative
  137.   for tr=1 to 10
  138.    position object 500+tr,object position x(500+tr),64,object position z(500+tr)-512
  139.   next tr
  140.  endif
  141.  position camera 256+(sin(side#)*10),12+(cos(side#)*5),roadz#+(sin(side#)*20)
  142.  xrotate camera 10
  143.  
  144.  rem Position main light
  145.  position light 0,200,800,roadz#
  146.  
  147.  rem Make third matrix rise up over time
  148.  position matrix 8,0,-2+(((512-roadz#)/10.0)*-1),512*7
  149.  
  150.  rem Keep sky and mountains in place
  151.  position object 1,256,15,roadz#
  152.  position object 4,256,400,roadz#+(4684)
  153.  yrotate object 1,wrapvalue(object angle y(1)-0.1)
  154.  
  155.  rem Keep bike in place
  156.  for c=0 to 1
  157.  
  158.   rem Position bike and parts
  159.   if c=0
  160.    position object 5+(c*100),240+cos(carx#)*8,0,roadz#+35+(sin(ss#*15)*5)
  161.    position object 7+(c*100),240+cos(carx#)*8,0.1,roadz#+35+(sin(ss#*15)*5)
  162.   else
  163.    position object 5+(c*100),270-cos(carx#)*8,0,roadz#+35+(cos(ss#*15)*5)
  164.    position object 7+(c*100),270-cos(carx#)*8,0.1,roadz#+35+(cos(ss#*15)*5)
  165.   endif
  166.   zrotate object 5+(c*100),cos(carx#)*4
  167.  
  168.   rem Rotate bike wheels
  169.   heada#=wrapvalue(heada#+2)
  170.   if limb exist(5+(c*100),1)=1
  171.    t=7 : rotate limb 5+(c*100),t,0,wrapvalue(cos(heada#)*20),0
  172.    t=3 : rotate limb 5+(c*100),t,wrapvalue(limb angle x(5+(c*100),t)-35),0,0
  173.    t=5 : rotate limb 5+(c*100),t,wrapvalue(limb angle x(5+(c*100),t)-35),0,0
  174.   endif
  175.  
  176.  next c
  177.  
  178.  rem Move trees and wrap them
  179.  for tr=1 to 10
  180.   rem move tree
  181.   position object 500+tr,object position x(500+tr),64,object position z(500+tr)-15
  182.   rem wrap tree
  183.   if object position z(500+tr)<-512
  184.    r=rnd(1)
  185.    if r=0 then position object 500+tr,160-rnd(400),64,51*(100+rnd(150))
  186.    if r=1 then position object 500+tr,370+rnd(400),64,51*(100+rnd(150))
  187.   endif
  188.  next tr
  189.  
  190.  rem Move mountains closer and closer
  191.  if ss#<150 then ss#=ss#+0.05
  192.  scale object 4,ss#,ss#,ss#
  193.  
  194.  rem Set sound position for bike
  195.  position listener 256,5+(cos(side#)*5),roadz#+(sin(side#)*35)
  196.  position sound 1,carx#,0,roadz#+35
  197.  scale listener 0.25
  198.  
  199.  rem Move strap line
  200.  gosub _control_strap
  201.  
  202.  rem Update screen
  203.  sync
  204.  
  205. rem Endloop
  206. loop
  207.  
  208. rem Demo Subroutines
  209. _create_strap:
  210.  load image "media\gfx\prompt.bmp",2
  211.  load image "media\gfx\strapblank.bmp",3
  212.  strapx1=0 : sprite 1,strapx1,480-63,2
  213.  strapx2=1024 : sprite 2,strapx2,480-63,2
  214.  set sprite alpha 1,196 : set sprite alpha 2,196
  215. return
  216.  
  217. _control_strap:
  218.  dec strapx1 : if strapx1<=-1024 then strapx1=strapx2+1023
  219.  dec strapx2 : if strapx2<=-1023 then strapx2=strapx1+1024
  220.  sprite 1,strapx1,screen height()-63,2
  221.  sprite 2,strapx2,screen height()-63,3
  222. return
  223.  
  224.