Basic Univers
Define .f
bitplanes.b = 32
If ExamineDesktops(): Global SCREENWIDTH = DesktopWidth(0), SCREENHEIGHT = DesktopHeight(0)
Else: Global SCREENWIDTH = GetSystemMetrics_(#SM_CXSCREEN), SCREENHEIGHT = GetSystemMetrics_(#SM_CYSCREEN)
EndIf
If InitSprite()= 0 Or InitSprite3D()= 0 Or InitKeyboard()= 0
MessageRequester("Error", "Can't access DirectX", 0): End
EndIf
desktop.l = CreateImage(0, SCREENWIDTH, SCREENHEIGHT)
hdc.l = StartDrawing(ImageOutput(0))
SelectObject_(hdc, desktop)
BitBlt_(hdc, 0, 0, SCREENWIDTH, SCREENHEIGHT, GetDC_(GetDesktopWindow_()), 0, 0, #SRCCOPY)
StopDrawing()
DeleteDC_(hdc)
While OpenScreen(SCREENWIDTH, SCREENHEIGHT, bitplanes.b, "FullScreen")= 0
If bitplanes.b>16: bitplanes.b - 8
ElseIf SCREENHEIGHT>600: SCREENWIDTH = 800: SCREENHEIGHT = 600
ElseIf SCREENHEIGHT>480: SCREENWIDTH = 640: SCREENHEIGHT = 480
ElseIf SCREENHEIGHT>400: SCREENWIDTH = 640: SCREENHEIGHT = 400
ElseIf SCREENHEIGHT>240: SCREENWIDTH = 320: SCREENHEIGHT = 240
ElseIf SCREENHEIGHT>200: SCREENWIDTH = 320: SCREENHEIGHT = 200
Else: MessageRequester("Listen:", "Can't open Screen!", 0): End
EndIf
Wend
w = SCREENWIDTH: h = SCREENHEIGHT: z = 1000/Sqr(3): perspw = w: PerspectiveAngle.d =#PI/16
CreateSprite(0, w, h, #PB_Sprite_Texture)
StartDrawing(SpriteOutput(0))
DrawImage(ImageID(0), 0, 0)
StopDrawing()
DisplaySprite(0, 0, 0): FlipBuffers(0): DisplaySprite(0, 0, 0)
CreateSprite3D(0, 0)
DataSection
Data.f 0.005, 0.005, 0.0045
EndDataSection
x3 = w - 1: x4 = 0: y3 = h: y4 = h: z3 = z: z4 = z
For t.b = 1 To 3
omega =- omega: Read alfa
Repeat
ExamineKeyboard(): ClearScreen(0)
Incrz = h*Sin(Angle)
x1 = Incrz*Tan(PerspectiveAngle): x2 = x3 - x1
y1 = h - h*Cos(Angle): y2 = y1
z1 = z + Incrz/4.75: z2 = z1
Start3D()
TransformSprite3D(0, x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4)
DisplaySprite3D(0, 0, 0, 255)
Stop3D()
omega + alfa
If omega<0: Angle - Pow(omega, 2): Else: Angle + Pow(omega, 2): EndIf
If Angle<0 Or Angle>4/5*#PI: Break: EndIf
FlipBuffers(): Delay(16)
Until KeyboardPushed(#PB_Key_Escape)
Next
DisplaySprite(0, 0, 0): FlipBuffers(): Delay(16): DisplaySprite(0, 0, 0)