But I can't get it to work like the Original.
Any help would be great, Thanks.
Code: Select all
; ----------------------------------------------------------
; BlitzMax Animated Chequerboard Pattern Converted To PB
; ----------------------------------------------------------
#xres = 1024
#yres = 768
InitSprite()
Global Whdc = OpenWindow(0,0,0,#xres,#yres,"3D",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
;{ Declarations
Declare SetGrid()
Declare DrawGrid()
;}
Global Grid.i = 30
Global Size.i = 150
Global halfX = 512
Global halfY = 384
Global Move.d = 0.0
Global Dim GridX.d(Grid,Grid)
Global Dim GridY.d(Grid,Grid)
Global Dim GridZ.d(Grid,Grid)
SetGrid()
Repeat
ClearScreen($FFFFFF)
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
DrawGrid()
Move + 0.025 : If Move >= 0.5 : Move -0.5 : EndIf
FlipBuffers()
Until GetAsyncKeyState_(#VK_ESCAPE) Or Quit
End
Procedure DrawGrid()
Static Z.i
Static X.i
Static TX.i
Static TY.i
Static Clr.i
Static Shade.i
Static ClrStrt.i
ClrStrt = 1
Static Dim PolyTransform.f(8)
DC = StartDrawing(WindowOutput(0))
For Z = 0 To Grid - 2
ClrStrt + 1 : If ClrStrt > 2 : ClrStrt = 1 : EndIf
Clr = ClrStrt
For X = 0 To Grid - 2
Clr + 1 : If Clr > 2 : Clr = 1 : EndIf
TX = (GridX(X,Z) / (GridZ(X,Z)-Move)) + halfX
TY = (GridY(X,Z) / (GridZ(X,Z)-Move)) + halfY
PolyTransform(0) = TX
PolyTransform(1) = TY
TX = (GridX(X+1,Z) / (GridZ(X+1,Z)-Move)) + halfX
TY = (GridY(X+1,Z) / (GridZ(X+1,Z)-Move)) + halfY
PolyTransform(2) = TX
PolyTransform(3) = TY
TX = (GridX(X+1,Z+1) / (GridZ(X+1,Z+1)-Move)) + halfX
TY = (GridY(X+1,Z+1) / (GridZ(X+1,Z+1)-Move)) + halfY
PolyTransform(4) = TX
PolyTransform(5) = TY
TX = (GridX(X,Z+1) / (GridZ(X,Z+1)-Move)) + halfX
TY = (GridY(X,Z+1) / (GridZ(X,Z+1)-Move)) + halfY
PolyTransform(6) = TX
PolyTransform(7) = TY
Shade=(TY/4) - 75 : If Shade < 0 : Shade = 0 : EndIf
; ----- Not Implemented! -----
If Clr =1 : Color =(RGB(Shade,Shade,Shade)) : EndIf
If Clr =2 : Color =(RGB(0, 0, Shade)) : EndIf
Polygon_(DC,@PolyTransform(),5)
Next
Next
StopDrawing()
EndProcedure
Procedure SetGrid()
Static Xpos.d
Static Zpos.d
Static Ypos.d
Static Jump.d
Static Xscale.d
Static Z.i
Static X.i
Jump = Size / Grid
Xscale = 55
Ypos = 500
Zpos = 8.4
For Z = 0 To Grid -1
Xpos = -((Size*Xscale) /2)
For X = 0 To Grid -1
GridX(X, Z) = Xpos
GridY(X, Z) = Ypos
GridZ(X, Z) = Zpos
Xpos = Xpos + (Jump * Xscale)
Next
Zpos = Zpos - (Jump / 20)
Next
EndProcedure
Code: Select all
Strict
SetGraphicsDriver GLMax2DDriver()
Const xres = 1024
Const yres = 768
Const halfX = 512
Const halfY = 384
Graphics xres,yres,32,60,GRAPHICS_BACKBUFFER
Const Grid = 30:Int
Const Size = 150 : Int
Global GridX : Double[Grid,Grid]
Global GridY : Double[Grid,Grid]
Global GridZ : Double[Grid,Grid]
Global Move : Double
Move = 0.0
SetGrid()
Repeat
SetColor (255,255,255)
DrawGrid()
Move = Move + .025
If Move >= .5 Then Move =Move -.5
Flip(-1)
Cls
Until KeyDown(KEY_ESCAPE)
EndGraphics
End
Function DrawGrid()
Local Z:Int
Local X : Int
Local TX : Int
Local TY : Int
Local Clr : Int
Local Shade : Int
Local ClrStrt : Int
ClrStrt=1
Local PolyTransform : Float [8]
For Z = 0 To Grid-2
ClrStrt=ClrStrt+1
If ClrStrt>2 Then ClrStrt=1
Clr = ClrStrt
For X = 0 To Grid-2
Clr=Clr+1
If Clr>2 Then Clr=1
TX = (GridX[X,Z] / (GridZ[X,Z]-Move))+HalfX
TY = (GridY[X,Z] / (GridZ[X,Z]-Move))+HalfY
Polytransform[0]=TX
Polytransform[1]=TY
TX = (GridX[X+1,Z] / (GridZ[X+1,Z]-Move))+HalfX
TY = (GridY[X+1,Z] / (GridZ[X+1,Z]-Move))+HalfY
Polytransform[2]=TX
Polytransform[3]=TY
TX = (GridX[X+1,Z+1] / (GridZ[X+1,Z+1]-Move))+HalfX
TY = (GridY[X+1,Z+1] / (GridZ[X+1,Z+1]-Move))+HalfY
Polytransform[4]=TX
Polytransform[5]=TY
TX = (GridX[X,Z+1] / (GridZ[X,Z+1]-Move))+HalfX
TY = (GridY[X,Z+1] / (GridZ[X,Z+1]-Move))+HalfY
Polytransform[6]=TX
Polytransform[7]=TY
shade=(ty/4)-75
If shade<0 Then shade=0
If Clr =1 Then SetColor(Shade,Shade,Shade)
If Clr =2 Then SetColor( 0, 0,Shade)
DrawPoly(Polytransform)
Next
Next
End Function
Function SetGrid()
Local Xpos : Double
Local Zpos : Double
Local Ypos : Double
Local Jump : Double
Local Xscale : Double
Local Z:Int
Local X:Int
JUMP = Size / Grid
Xscale = 55
Ypos = 500
Zpos = 8.4
For Z = 0 To Grid -1
Xpos = -((Size*Xscale) /2)
For X = 0 To Grid -1
GridX[X, Z] = Xpos
GridY[X, Z] = Ypos
GridZ[X, Z] = Zpos
Xpos = Xpos + (JUMP * Xscale)
Next
Zpos = Zpos - (JUMP / 20)
Next
End Function