Basic Univers

;{--------------------------- 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