Voici un scroll text à la star wars....
j'ai mis vite fait un autre effet par dessus mais c'est du vite fait

Code : Tout sélectionner
;{--------------------------- Init Sprite & Init Keyboard -------------------------------
If InitSprite () = 0 Or InitKeyboard()= 0 Or InitSprite3D() = 0
MessageRequester ("Erreur", "Impossible d'initialiser directx",#PB_MessageRequester_Ok)
End
EndIf
;}---------------------------------------------------------------------------------------
;{----------------------------------- Plein écran --------------------------------------
#WindowWidth = 640 ; Vous pouvez utiliser ces constantes dans vos effet si besoin est
#WindowHeight = 480 ; Que pensez vous du 640*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