
Graphics3D 800, 600, 32, 2
SetBuffer BackBuffer()
Global Camera = CreateCamera()
PositionEntity Camera, 0, 0, -5
Global CubeMesh = CreateMesh()
Global CubeSurface = CreateSurface(CubeMesh)
EntityFX CubeMesh, 34
CreateMap(10, 10, 500, 1)
; Für die frameunabhängige Programmierung
Global LastUpdate%, Difference%
Global MS%
Global FElapsed#, F%
Global TimeShift# = 1
LastUpdate = MilliSecs()
While Not KeyHit(1)
UpdateGame()
RenderWorld
Flip
Wend
Function UpdateGame()
; Zeitrechnungen
Difference = MilliSecs() - LastUpdate
LastUpdate = MilliSecs()
FElapsed = FElapsed + Difference * TimeShift
MS = MS + (Difference * TimeShift)
F = FElapsed
FElapsed = FElapsed - F
MoveEntity Camera, F*.01*(KeyDown(205)-KeyDown(203)), F*.01*(KeyDown(200)-KeyDown(208)), F*(.005 + KeyDown(57)*.01)
End Function
Function CreateCubeFast(X#, Y#, Z#, ScaleX#, ScaleY#, ScaleZ#)
V1% = AddVertex(CubeSurface, X - ScaleX, Y + ScaleY, Z - ScaleZ)
V2% = AddVertex(CubeSurface, X + ScaleX, Y + ScaleY, Z - ScaleZ)
V3% = AddVertex(CubeSurface, X + ScaleX, Y - ScaleY, Z - ScaleZ)
V4% = AddVertex(CubeSurface, X - ScaleX, Y - ScaleY, Z - ScaleZ)
V5% = AddVertex(CubeSurface, X - ScaleX, Y + ScaleY, Z + ScaleZ)
V6% = AddVertex(CubeSurface, X + ScaleX, Y + ScaleY, Z + ScaleZ)
V7% = AddVertex(CubeSurface, X + ScaleX, Y - ScaleY, Z + ScaleZ)
V8% = AddVertex(CubeSurface, X - ScaleX, Y - ScaleY, Z + ScaleZ)
VertexColor CubeSurface, V1, Rand(0, 255), Rand(0, 255), Rand(0, 255)
VertexColor CubeSurface, V2, Rand(0, 255), Rand(0, 255), Rand(0, 255)
VertexColor CubeSurface, V3, Rand(0, 255), Rand(0, 255), Rand(0, 255)
VertexColor CubeSurface, V4, Rand(0, 255), Rand(0, 255), Rand(0, 255)
VertexColor CubeSurface, V5, Rand(0, 255), Rand(0, 255), Rand(0, 255)
VertexColor CubeSurface, V6, Rand(0, 255), Rand(0, 255), Rand(0, 255)
VertexColor CubeSurface, V7, Rand(0, 255), Rand(0, 255), Rand(0, 255)
VertexColor CubeSurface, V8, Rand(0, 255), Rand(0, 255), Rand(0, 255)
AddTriangle(CubeSurface, V1, V2, V3)
AddTriangle(CubeSurface, V1, V3, V4)
AddTriangle(CubeSurface, V2, V7, V3)
AddTriangle(CubeSurface, V6, V7, V2)
AddTriangle(CubeSurface, V1, V4, V8)
AddTriangle(CubeSurface, V5, V1, V8)
AddTriangle(CubeSurface, V5, V2, V1)
AddTriangle(CubeSurface, V5, V6, V2)
AddTriangle(CubeSurface, V4, V3, V7)
AddTriangle(CubeSurface, V7, V8, V4)
End Function
Function CreateMap(Width%, Height%, Length%, Percent#)
For X% = -Width To Width
For Y% = -Height To Height
For Z% = 0 To Length
If Rnd(100) < Percent Then
CreateCubeFast (X, Y, Z, 1, 1, 1)
EndIf
Next
Next
Next
End Function