I read a post on one of the forums about creating a screensaver with DB V1. I'd never thought of writing one before, so I decided to have a bash. The program below is what I came up with after less than an hour, and I was quite impressed with it.
This is aimed primarily at newcomers to DB, so my apologies if you've seen it all before. If not, feel free to have a play with it. The actual concept is an old one and has been done many times before, so I don't claim any originality.
You will also need the three media files to compile it from
http://www.matedit.com/media.zip. Just unzip them into the same directory you save the source code.
Use Build Final and then in Windows Explorer change the filename from Filename.EXE to Filename.SCR and just drop it into the Windows directory. Use the Display properties panel to select the screensaver in Windows.
+ Code SnippetRem My First Screensaver - (c) TDK_Man Nov 2002
Set display mode 800,600,16
Sync on
Sync rate 0
Hide Mouse
Autocam off
Set camera range 1.0,900000.0
Rem ----- Load Images -----
Load Image "psycodelic.bmp",100
Load Image "water.bmp",101
Load Image "db.bmp",102
Rem ----- World Sphere -----
Make Object Sphere 1,100000
Texture Object 1,100
Set Object 1,1,1,0
YRotate Object 1,90.0
Rem ----- Water Plain -----
Make Object Plain 2,100000,100000
Texture Object 2,101
Scale Object Texture 2,6,8
Scale Limb Texture 2,0,5,2
Ghost Object On 2
XRotate Object 2,90
Rem ----- Main Cube -----
Make Object Cube 3,700
Position Object 3,0,300,0
Rem ----- Main Cube Reflection -----
Make Object Cube 4,700
Position Object 4,0,-1000,0
Rem ----- DB Cube -----
Make Object Cube 5,400
Position Object 5,-1000,300,0
ZRotate Object 5,180
Texture Object 5,102
Rem ----- DB Cube Reflection -----
Make Object Cube 6,400
Position Object 6,-1000,-1000,0
ZRotate Object 6,180
Texture Object 6,102
Rem ----- Camera -----
Position Camera -1000,500,-4000
Point camera 0,0,0
WaterLevel=-500: WaterLevelInc=1
Repeat
YRotate Object 1,Wrapvalue(Object Angle Y(1)+.01): Rem Rotate Psycodelic Sky
Get image 1,1,1,100,100: Rem Grab Bit Of Psycodelic Sky
TEXTURE Object 3,1: TEXTURE Object 4,1: Rem And use it to texture cubes
Water# = wrapValue(Water# + 0.02): Rem Move Water
Position Object 2, newxvalue(0,Water#,10000.0),WaterLevel,newzvalue(0,Water#,10000.0): Rem Move Water
XRotate Object 3,Wrapvalue(Object Angle X(3)+1): Rem X Rotate Main Cube
YRotate Object 3,Wrapvalue(Object Angle Y(3)+1): Rem Y Rotate Main Cube
ZRotate Object 3,Wrapvalue(Object Angle Z(3)+1): Rem Z Rotate Main Cube
XRotate Object 4,Wrapvalue(Object Angle X(4)-1): Rem X Rotate Main Cube Reflection
YRotate Object 4,Wrapvalue(Object Angle Y(4)+1): Rem Y Rotate Main Cube Reflection
ZRotate Object 4,Wrapvalue(Object Angle Z(4)-1): Rem Z Rotate Main Cube Reflection
Position Object 4,0,WaterLevel-600,0: Rem Position Water Level
XRotate Object 5,Wrapvalue(Object Angle X(5)+1): Rem X Rotate DB Cube
YRotate Object 5,Wrapvalue(Object Angle Y(5)+1): Rem Y Rotate DB Cube
ZRotate Object 5,Wrapvalue(Object Angle Z(5)+1): Rem Z Rotate DB Cube
XRotate Object 6,Wrapvalue(Object Angle X(6)-1): Rem X Rotate DB Cube Reflection
YRotate Object 6,Wrapvalue(Object Angle Y(6)+1): Rem Y Rotate DB Cube Reflection
ZRotate Object 6,Wrapvalue(Object Angle Z(6)-1): Rem Z Rotate DB Cube Reflection
DBCube# = wrapValue(DBCube# + .5)
Position Object 5, newxvalue(0,DBCube#,2000.0),300,newzvalue(0,DBCube#,2000.0): Rem Orbit DB Cube
Position Object 6, newxvalue(0,DBCube#,2000.0),WaterLevel-600,newzvalue(0,DBCube#,2000.0): Rem Orbit DB Cube Reflection
Rem ---------- Calculate Rise And Fall Of Water Level ----------
Inc WaterLevel,WaterLevelInc
If WaterLevel=-400 and WaterLevelInc=1 Then WaterLevelInc=-1
If WaterLevel=-700 and WaterLevelInc=-1 Then WaterLevelInc=1
Rem ---------- Watch For Keypress Or Mouse Movement ----------
if scancode() or mousemovex() or mousemovey() then Finished=1
sync: Rem Update Screen
Until Finished=1
End
TDK_Man