DBPro 3D environment by Anonymous Coder30th Nov 2004 18:36
|
---|
Summary This application generates a 3-Dimensional space. Description Project attached. 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 |