Basic Univers
If InitSprite() = 0 Or InitKeyboard()= 0 Or InitSprite3D() = 0
MessageRequester("Erreur", "Impossible d'initialiser directx", #PB_MessageRequester_Ok)
End
EndIf
#WindowWidth = 640
#WindowHeight = 480
If OpenScreen(#WindowWidth, #WindowHeight, 32, "Démo") = 0
MessageRequester("Erreur", "Impossible d'ouvrir l'écran", #PB_MessageRequester_Ok)
End
EndIf
Enumeration
#SpriteBuffer
#SpriteBuffer3D
#Sprite3D1
#tmpSprite
#Sprite1
#nbSprite = 200
EndEnumeration
Global compteur = 0
Global Dim a.f(#nbSprite)
Global Dim s(#nbSprite)
Global Dim vit.f(#nbSprite)
Procedure StarWars_Init()
CreateSprite(#SpriteBuffer, 256, 256, #PB_Sprite_Texture)
CreateSprite3D(#SpriteBuffer3D, #SpriteBuffer)
CreateSprite(#Sprite1, 32, 32, #PB_Sprite_Texture)
If StartDrawing(SpriteOutput(#Sprite1))
For t = 1 To 16
c = t * 16
Circle(16, 16, 16 - t, RGB(c, c, c))
Next
StopDrawing()
EndIf
CreateSprite3D(#Sprite3D1, #Sprite1)
For i = 0 To #nbSprite
a.f(i) = Random(360)
s(i) = Random(400)
vit.f(i) =(Random(100) - 50) / 500
Next
EndProcedure
Procedure StarWars_Main()
UseBuffer(#SpriteBuffer)
GrabSprite(#tmpSprite, 0, 0, 255, 255)
DisplaySprite(#tmpSprite, 0, - 1)
If compteur <= 0
If StartDrawing(SpriteOutput(#SpriteBuffer))
txt$ = "ceci est un Starwars scroller !"
DrawText((255 - TextWidth(txt$)) / 2, 235, txt$, RGB(255, 255, 255), 0)
compteur = 20
StopDrawing()
EndIf
EndIf
compteur = compteur - 1
CreateSprite3D(#SpriteBuffer3D, #SpriteBuffer)
UseBuffer(- 1)
ClearScreen(0)
If Start3D()
TransformSprite3D(#SpriteBuffer3D, 252, 240, 5, 640 - 252, 240, 5, 640, 550, 1, 0, 550, 1)
DisplaySprite3D(#SpriteBuffer3D, 0, 0, 255)
Sprite3DBlendingMode(5, 2)
For i = 0 To #nbSprite
DisplaySprite3D(#Sprite3D1, 320 + Cos(a(i)) * s(i), 240 + Sin(a(i)) * s(i), 100)
a.f(i) = a(i) + vit(i)
Next
Stop3D()
EndIf
FlipBuffers()
EndProcedure
StarWars_Init()
Repeat
StarWars_Main()
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
End