TGC Codebase Backup



DBPro 3D environment by Anonymous Coder

30th Nov 2004 18:36
Summary

This application generates a 3-Dimensional space.



Description

Project attached.
Documentation included.
Please feel free posting your tools.
Thank you.



Code
                                    ` This code was downloaded from The Game Creators
                                    ` It is reproduced here with full permission
                                    ` http://www.thegamecreators.com
                                    
                                    Rem Project: DBPro 3D environment
Rem Created: 28/11/2004 1:15:04 μμ

Rem ***** Main Source File *****

` Part of this source code was created by Yellow -MikeS- 6-4-04
` Although not necessary, it would be nice to be credited and
` notified at yellow1dbp@hotmail.com if this was used in a game
` Thanks, and I hope the tutorial helps.
` Part of routine , you'll be learning how to pick objects in 3D space.

` Most 'Mouse look and strafing' technique routine found in
` gamecreators.com with all credits given to their developers ,
` was used for moving around within the 3-Dimensional space of
` DBPro compiler.

dim cube_number(100) as cube_attributes

type cube_attributes
   index_number as integer
   color as dword
   name as string
   x as integer
   y as integer
   z as integer
   x_rotation#
   y_rotation#
   z_rotation#
endtype

tab_object=0

global camera_x#=0.0
global camera_y#=0.0
global camera_z#=0.0

Object_Start=1
Object_End=10

Color_Backdrop_Value=rgb(0,0,0)
Size=6
Width=800
Height=600
Depth=32

SET DISPLAY MODE Width, Height, Depth

sync on : sync rate 60
set text size 10

autocam off
backdrop on
COLOR BACKDROP Color_Backdrop_Value

hide mouse

for t=1 to 10 step 1
   make object cube t, Size
   cube_number(t).index_number=t
   cube_number(t).name="Cube"
   cube_number(t).color=rgb(rnd(255),rnd(255),rnd(255))
   COLOR OBJECT t, cube_number(t).color
   cube_number(t).x=rnd(100)
   cube_number(t).y=rnd(100)
   cube_number(t).z=rnd(100)
   POSITION OBJECT t ,cube_number(t).x,cube_number(t).y,cube_number(t).z
next t

camera_x# = camera position x()
camera_y# = camera position y()
camera_z# = camera position z()

do
position mouse Width/2 , Height/2
camera_x# = camera position x()
camera_y# = camera position y()
camera_z# = camera position z()

 `forwards (w)
 if keystate(17)=1
   camera_x# = newxvalue(camera_x#,wrapvalue(camera angle y()),1)
   camera_z# = newzvalue(camera_z#,wrapvalue(camera angle y()),1)
 endif
   `backwards (s)
 if keystate(31)=1
    camera_x# = newxvalue(camera_x#,wrapvalue(camera angle y()-180),1)
    camera_z# = newzvalue(camera_z#,wrapvalue(camera angle y()-180),1)
 endif
   `left (a)
 if keystate(30)=1
    camera_x# = newxvalue(camera_x#,wrapvalue(camera angle y()-90),1)
    camera_z# = newzvalue(camera_z#,wrapvalue(camera angle y()-90),1)
 endif
   `right (d)
 if keystate(32)=1
    camera_x# = newxvalue(camera_x#,wrapvalue(camera angle y()+90),1)
    camera_z# = newzvalue(camera_z#,wrapvalue(camera angle y()+90),1)
 endif

 yrotate camera camera angle y() + mousemovex()*0.3
 xrotate camera camera angle x() + mousemovey()*0.3
   rem stops mouse from going upside down
 if wrapvalue(camera angle x(0))>40 and wrapvalue(camera angle x(0))<180 then xrotate camera 0,40
 if wrapvalue(camera angle x(0))>180 and wrapvalue(camera angle x(0))<280 then xrotate camera 0,280

 position camera camera_x#,camera_y#,camera_z#

for odd=1 to 10 step 2
   ROTATE OBJECT odd, cube_number(odd).x_rotation# , cube_number(odd).y_rotation#, cube_number(odd).z_rotation#
   cube_number(odd).x_rotation#=cube_number(odd).x_rotation#+0.1
   cube_number(odd).y_rotation#=cube_number(odd).y_rotation#+0.1
   cube_number(odd).z_rotation#=cube_number(odd).z_rotation#+0.1
next odd

for even=2 to 10 step 2
   ROTATE OBJECT even, cube_number(even).x_rotation# , cube_number(even).y_rotation#, cube_number(even).z_rotation#
   cube_number(even).x_rotation#=cube_number(even).x_rotation#-0.1
   cube_number(even).y_rotation#=cube_number(even).y_rotation#-0.1
   cube_number(even).z_rotation#=cube_number(even).z_rotation#-0.1
next even


for t=1 to 10 step 1
   if (t=PICK OBJECT(mousex(),mousey(), Object_Start, Object_End))
      set cursor 0,90 :print "Object picked:"
      set cursor 0,105 :print cube_number(t).name
      set cursor 0,120 :print cube_number(t).index_number
   endif
next t

if (keystate(15)=1)
   if (button$="up")
      button$="down"
      tab_object=tab_object+1
      if (object exist(11)=1)
         delete object 11
         make object sphere 11,20
         set object 11,0,0,0
      else
         make object sphere 11,20
         set object 11,0,0,0
      endif
      if (tab_object>Object_End)then:tab_object=1
      POSITION OBJECT 11 ,cube_number(tab_object).x,cube_number(tab_object).y,cube_number(tab_object).z

   endif
else
      button$="up"
endif

set cursor 0,0 :print "Mouse movements rotate the camera angle."
set cursor 0,15 :print "'A','S','D' and 'W' keys position the camera."
set cursor 0,45 :print "Object:"
if (tab_object=0)
   set cursor 0,60 :print "No object loaded."
   set cursor 0,75 :print "Please press <Tab> key for loading object status."
else
set cursor 0,60 :print cube_number(tab_object).name
set cursor 0,75 :print cube_number(tab_object).index_number
endif

fastsync
loop
end