Starwars scroller

Programmation d'applications complexes
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Starwars scroller

Message par bombseb »

Yeah !!!

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

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
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

excellent ! :P :P
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Génial, on se croirait au cinoche :D
Le texte est peut etre un peu rapide, mais l'effet est géant.

Bravo Bombseb 8)
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

c'est fou ce qu'on peut faire en 100 lignes avec pb...
Image
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

oui! c'est tres bon :D

je viens de voir que j'avais essayé ton prg, mais que j'ai oublié de laisser un commentaire :lol:
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

héhéhé

j'en avais déja fait un autre mais le texte était déformé à la main (pixel par pixel) inutile de dire que c'était bien plus lent 8O
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Je m'en suis remis un coup ce matin, tellement il est joli :D

Si tu pouvais ajouter 2/3 fonctions de plus :

1/ pouvoir mettre un vrai texte de noir de lignes qu'on pourrait lire au fur et à mesure, comme le vrai stars wars.

2/ Un reglage de la vitesse de defilement.

3/ Et une option pour mettre par exemple des etoiles a la place des boules qui tournent.(Parce que les boules c'est super classe, mais ça fait tourner la tete quand on essaye de lire :roll: )

Je ne sais pas si c'est possible et/ou dur a réaliser, c'est juste un avis perso.
Ce serait parfait, comme ça on pourrait l'utiliser (avec ton "autorisage" bien sur :wink: ) en intro d'un giciel.
Ou bien en aide simplifiée pour expliquer l'utilité d'un prg à un utilisateur.

Encore bravo en tout cas, t'es le CAID du graphisme 8)
Bonne journée à toi
Dernière modification par Kwai chang caine le mer. 27/juin/2007 12:11, modifié 1 fois.
Avatar de l’utilisateur
raven
Messages : 222
Inscription : jeu. 06/janv./2005 15:45

Message par raven »

exellent j'adore ce genre d'effet.

merci bombseb :D
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

ouaouh que de compliments :D

j'essayerais de le modifier... je mettrais à jour le code ici...
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

ouaouh que de compliments
Non non, c'est normal, tout tres bon travail mérite salaire :D

Merci Bombseb
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

tout tres bon travail mérite salaire
bon alors si je vous fait payer à l'heure je vais me faire des c*** en or :D
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

:lol:
Répondre