Page 1 sur 5

Matrix

Publié : mer. 26/mai/2004 23:53
par Backup
ce petit effet vous rapellera quelque chose !!
c'est pas parfait , mais bon ! le Soldat inconnu va nous en faire un extincteur d'ecran :D

Ps y pas tous les nom des inscrit sur le forum, je m'excuse pour ceux que j'oublie :D
il n'y a que 10 sprites , on peut en rajouter !!
pour les noms ,y a rien d'autre a faire que de les rajouter dans la variable nom$ ,le program va tenir compte tous seul des lettre rajouté !
:)



Code : Tout sélectionner

#dobro=1
#dobro2=2
#dobro3=3
#dobro4=4
#dobro5=5
#dobro6=6
#dobro7=7
#dobro8=8
#dobro9=9
#dobro10=10
#Police=1
Resultat = InitSprite() 

FontID = LoadFont(#Police, "arial", 18, #PB_Font_Bold ) 



WindowID = OpenWindow(1, 0, 0, 800, 600,  #PB_Window_SystemMenu|#PB_Window_BorderLess |#PB_Window_ScreenCentered , "hello") 

WindowID = WindowID(1) 


Result = OpenWindowedScreen(WindowID,0,0, 800, 600, 1, 0,0)


nom$="D,O,B,R,O, ,C,E,D,E,R,A,V,I,C,K, ,F,W,E,I,L, ,O,L,I,V, ,H,E,I,S, ,S,P,I,T,E,R, ,L,E, ,S,O,L,D,A,T, ,I,N,C,O,N,N,U, ,F,R,E,D, ,P,U,R,E,B,A,S,I,C"

de= Random(800) :; on tire une colonne au hazard

; on crée un sprite
Resultat = CreateSprite(#dobro, 24,24*Len(nom$),0)
While Index<=Len(nom$)+1
    Index=Index+1
    car$ = StringField(nom$, Index, ",")
    y=y+24:; pour que le text descende
    StartDrawing(SpriteOutput(#dobro)) 
    BackColor(0, 0,0) 
    FrontColor(0,255, 0)
    Locate(0, y)
    DrawingFont(FontID) 
    
    DrawText(car$) 
    StopDrawing() 
    
Wend
        
        
        CopySprite(#dobro, #dobro2) 
        CopySprite(#dobro, #dobro3) 
        CopySprite(#dobro, #dobro4) 
        CopySprite(#dobro, #dobro5) 
        CopySprite(#dobro, #dobro6) 
        CopySprite(#dobro, #dobro7) 
        CopySprite(#dobro, #dobro8) 
        CopySprite(#dobro, #dobro9) 
        CopySprite(#dobro, #dobro10) 
        
        
        
        ; ça c'est pour faire demarer les sprite a des hauteurs differentes
        ysprite=-800
        ysprite2=-900
        ysprite3=-850
        ysprite4=-830
        ysprite5=-880
        ysprite6=-890
        ysprite7=-810
        ysprite8=-840
        ysprite9=-820
        ysprite10=-805
        
        Repeat
            
            
            RandomSeed(Random(255)) 
            
            
            If ysprite>650
                ysprite=0-Random(1600)-800
                de= Random(800) :; on tire une colonne au hazard
            EndIf
            If ysprite2>650
                ysprite2=0-Random(1600)-800
                de2= Random(800) :; on tire une colonne au hazard
            EndIf
            If ysprite3>650
                ysprite3=0-Random(1600)-800
                de3= Random(800) :; on tire une colonne au hazard
            EndIf
            If ysprite4>650
                ysprite4=0-Random(1600)-800
                de4= Random(800) :; on tire une colonne au hazard
            EndIf
            If ysprite5>650
                ysprite5=0-Random(1600)-800
                de5= Random(800) :; on tire une colonne au hazard
            EndIf
            If ysprite6>650
                ysprite6=0-Random(1600)-800
                de6= Random(800) :; on tire une colonne au hazard
            EndIf
            If ysprite7>650
                ysprite7=0-Random(1600)-800
                de7= Random(800) :; on tire une colonne au hazard
            EndIf
            If ysprite8>650
                ysprite8=0-Random(1600)-800
                de8= Random(800) :; on tire une colonne au hazard
            EndIf
            If ysprite9>650
                ysprite9=0-Random(1600)-800
                de9= Random(800) :; on tire une colonne au hazard
            EndIf
            If ysprite10>650
                ysprite10=0-Random(1600)-800
                de10= Random(800) :; on tire une colonne au hazard
            EndIf
            
            ; petite bidouille pour garder un semblant de multitache !
            t=t+1
            
            If t=10
                event = WindowEvent() 
                t=0
            EndIf
            ;******************************
            
            ysprite+10:;vitesse de chaques sprites
            ysprite2+8
            ysprite3+10
            ysprite4+5
            ysprite5+9
            ysprite6+4:;ça c'est un escargot !
            ysprite7+12
            ysprite8+15
            ysprite9+6
            ysprite10+20:; lui va tres vite
            
            
            ; apres avoir essaye plusieur style de sprite
            ; c'est displaytransparent qui rent le mieux le style "matrix"
            DisplayTransparentSprite(#dobro, de, ysprite)
            DisplayTransparentSprite(#dobro2, de2, ysprite2)
            DisplayTransparentSprite(#dobro3, de3, ysprite3)
            DisplayTransparentSprite(#dobro4, de4, ysprite4)
            DisplayTransparentSprite(#dobro5, de5, ysprite5)
            DisplayTransparentSprite(#dobro6, de6, ysprite6)
            DisplayTransparentSprite(#dobro7, de7, ysprite7)
            DisplayTransparentSprite(#dobro8, de8, ysprite8)
            DisplayTransparentSprite(#dobro9, de9, ysprite9)
            DisplayTransparentSprite(#dobro10, de10, ysprite10)
             
            FlipBuffers()
            ClearScreen(0, 0,0) 
            
            
        Until event=#PB_Event_CloseWindow 
:D

Publié : jeu. 27/mai/2004 7:49
par cederavic
:lol: voilas le meme avec un fondu des nom :

Code : Tout sélectionner

#dobro=1 
#dobro2=2 
#dobro3=3 
#dobro4=4 
#dobro5=5 
#dobro6=6 
#dobro7=7 
#dobro8=8 
#dobro9=9 
#dobro10=10 
#Police=1 
Resultat = InitSprite() 

FontID = LoadFont(#Police, "arial", 18, #PB_Font_Bold ) 

WindowID = OpenWindow(1, 0, 0, 800, 600, #PB_Window_SystemMenu|#PB_Window_BorderLess |#PB_Window_ScreenCentered , "hello") 

WindowID = WindowID(1) 

Result = OpenWindowedScreen(WindowID,0,0, 800, 600, 1, 0,0) 

nom$="D,O,B,R,O, ,C,E,D,E,R,A,V,I,C, ,F,W,E,I,L, ,O,L,I,V, ,H,E,I,S, ,S,P,I,T,E,R, ,L,E, ,S,O,L,D,A,T, ,I,N,C,O,N,N,U, ,F,R,E,D, ,P,U,R,E,B,A,S,I,C" 

de= Random(800) :; on tire une colonne au hazard 

; on crée un sprite 
Resultat = CreateSprite(#dobro, 24,24*Len(nom$),0) 
While Index<=Len(nom$)+1 

  Index=Index+1 
  car$ = StringField(nom$, Index, ",") 
  y=y+24:; pour que le text descende 
  
  StartDrawing(SpriteOutput(#dobro)) 
    BackColor(0, 0,0) 
    c / 1.3
    If car$ = " " : c = 255 : EndIf
    FrontColor(0, c, 0) 
    Locate(0, y) 
    DrawingFont(FontID) 
    DrawText(car$) 
  StopDrawing() 

Wend 


CopySprite(#dobro, #dobro2) 
CopySprite(#dobro, #dobro3) 
CopySprite(#dobro, #dobro4) 
CopySprite(#dobro, #dobro5) 
CopySprite(#dobro, #dobro6) 
CopySprite(#dobro, #dobro7) 
CopySprite(#dobro, #dobro8) 
CopySprite(#dobro, #dobro9) 
CopySprite(#dobro, #dobro10) 



; ça c'est pour faire demarer les sprite a des hauteurs differentes 
ysprite=-800 
ysprite2=-900 
ysprite3=-850 
ysprite4=-830 
ysprite5=-880 
ysprite6=-890 
ysprite7=-810 
ysprite8=-840 
ysprite9=-820 
ysprite10=-805 

Repeat 


RandomSeed(Random(255)) 


If ysprite>650 
  ysprite=0-Random(1600)-800 
  de= Random(800) :; on tire une colonne au hazard 
EndIf 
If ysprite2>650 
  ysprite2=0-Random(1600)-800 
  de2= Random(800) :; on tire une colonne au hazard 
EndIf 
If ysprite3>650 
  ysprite3=0-Random(1600)-800 
  de3= Random(800) :; on tire une colonne au hazard 
EndIf 
If ysprite4>650 
  ysprite4=0-Random(1600)-800 
  de4= Random(800) :; on tire une colonne au hazard 
EndIf 
If ysprite5>650 
  ysprite5=0-Random(1600)-800 
  de5= Random(800) :; on tire une colonne au hazard 
EndIf 
If ysprite6>650 
  ysprite6=0-Random(1600)-800 
  de6= Random(800) :; on tire une colonne au hazard 
EndIf 
If ysprite7>650 
  ysprite7=0-Random(1600)-800 
  de7= Random(800) :; on tire une colonne au hazard 
EndIf 
If ysprite8>650 
  ysprite8=0-Random(1600)-800 
  de8= Random(800) :; on tire une colonne au hazard 
EndIf 
If ysprite9>650 
  ysprite9=0-Random(1600)-800 
  de9= Random(800) :; on tire une colonne au hazard 
EndIf 
If ysprite10>650 
  ysprite10=0-Random(1600)-800 
  de10= Random(800) :; on tire une colonne au hazard 
EndIf 

; petite bidouille pour garder un semblant de multitache ! 
t=t+1 

If t=10 
  event = WindowEvent() 
  t=0 
EndIf 
;****************************** 

ysprite+10:;vitesse de chaques sprites 
ysprite2+8 
ysprite3+10 
ysprite4+5 
ysprite5+9 
ysprite6+4:;ça c'est un escargot ! 
ysprite7+12 
ysprite8+15 
ysprite9+6 
ysprite10+20:; lui va tres vite 


; apres avoir essaye plusieur style de sprite 
; c'est displaytransparent qui rent le mieux le style "matrix" 
DisplayTransparentSprite(#dobro, de, ysprite) 
DisplayTransparentSprite(#dobro2, de2, ysprite2) 
DisplayTransparentSprite(#dobro3, de3, ysprite3) 
DisplayTransparentSprite(#dobro4, de4, ysprite4) 
DisplayTransparentSprite(#dobro5, de5, ysprite5) 
DisplayTransparentSprite(#dobro6, de6, ysprite6) 
DisplayTransparentSprite(#dobro7, de7, ysprite7) 
DisplayTransparentSprite(#dobro8, de8, ysprite8) 
DisplayTransparentSprite(#dobro9, de9, ysprite9) 
DisplayTransparentSprite(#dobro10, de10, ysprite10) 

FlipBuffers() 
ClearScreen(0, 0,0) 


Until event=#PB_Event_CloseWindow 

Publié : jeu. 27/mai/2004 7:58
par Anonyme2
Cool :D

Publié : jeu. 27/mai/2004 9:15
par Backup
oui ! :D c'est tout con , j'y avais meme pas pensé !! Merci :D

Publié : jeu. 27/mai/2004 9:28
par Le Soldat Inconnu
j'ajoute ma part à ce code bien sympa ;)

Code : Tout sélectionner

Structure SpriteInfo
  x.l
  y.l
  v.l ; vitesse de déplacement
EndStructure

#NbSprite = 70
#LongueurNom = 50

Dim Image.SpriteInfo(#NbSprite)




#Police = 1
Resultat = InitSprite()

FontID = LoadFont(#Police, "arial", 18, #PB_Font_Bold )

WindowID = OpenWindow(1, 0, 0, 800, 600, #PB_Window_SystemMenu | #PB_Window_BorderLess | #PB_Window_ScreenCentered, "hello")

WindowID = WindowID(1)

Result = OpenWindowedScreen(WindowID, 0, 0, 800, 600, 1, 0, 0)

#Longueur = 24 * #LongueurNom

For n = 1 To #NbSprite
  ; On crée un texte
  Nom.s = ""
  For nn = 1 To #LongueurNom
    Carac = Random(35) + 56
    If Carac < 65 : Carac = 32 : EndIf
    Nom = Nom + Chr(Carac)
  Next
  
  ; on crée un sprite
  CreateSprite(n, 24, #Longueur, 0)
  Index = #LongueurNom + 1
  y = #Longueur
  StartDrawing(SpriteOutput(n))
    BackColor(0, 0, 0)
    DrawingFont(FontID)
    While Index > 1
      
      Index = Index - 1
      car$ = Mid(Nom, Index, 1)
      y = y - 24 : ; pour que le text descende
  
      c = c * 0.9 ; on fonce la couleur
      If car$ = " " : c = 255 : EndIf ; on remet la couleur d'origine sur les espaces
      FrontColor(0, c, 0)
      Locate(0, y)
      DrawText(car$)
      
    Wend
  StopDrawing()
Next

; On initialise la position des sprites
For n = 1 To #NbSprite
  Image(n)\y = -Random(1600) - #Longueur
  Image(n)\x = Random(800 / 40) * 40
  Plus = 0 ; On décale le sprite si il en a déjà un sur la même ligne
  For nn = 1 To #NbSprite
    If Image(nn)\x = Image(n)\x + Plus And n <> nn
      Plus + 5
    EndIf
  Next
  Image(n)\x = Image(n)\x + Plus
  Image(n)\v = Random(8) + 3
Next

Repeat
  
  For n = 1 To #NbSprite
    If Image(n)\y > 600 ; Si le spriet est en bas de l'écran
      Image(n)\y = -Random(1600) - #Longueur
      Image(x)\x = Random(800 / 40) * 40
      Plus = 0 ; On décale le sprite si il en a déjà un sur la même ligne
      For nn = 1 To #NbSprite
        If Image(nn)\x = Image(n)\x + Plus And n <> nn
          Plus + 5
        EndIf
      Next
      Image(n)\x = Image(n)\x + Plus
      Image(n)\v = Random(8) + 3
    EndIf
    ; On fait avancer le sprite
    Image(n)\y = Image(n)\y + Image(n)\v
    ; On affiche le sprite
    DisplayTransparentSprite(1, Image(n)\x, Image(n)\y)
  Next
  
  FlipBuffers()
  ClearScreen(0, 0, 0)
  
Until WindowEvent() = #PB_Event_CloseWindow
j'ai augmenté le nombre de psrite, inversé le sens du dégradé de couleur, mis des textes aléatoire.
pour changer les options, voir les 2 constantes au début du prog

Publié : jeu. 27/mai/2004 9:46
par Le Soldat Inconnu
la version écran de veille :D

compiler sous le nom Matrix.scr par exemple (enfin toujours en *.scr quoi)

Code : Tout sélectionner

Structure SpriteInfo
  x.l
  y.l
  v.l ; vitesse de déplacement
EndStructure

#LongueurNom = 50




Param.s = Left(ProgramParameter(), 2)
If Param = "/p"
  End
EndIf

GetCursorPos_(SourisOrigine.POINT)
ShowCursor_(0)

#Police = 1
Resultat = InitSprite()

FontID = LoadFont(#Police, "arial", 18, #PB_Font_Bold )

EcranX = GetSystemMetrics_(#SM_CXSCREEN)
EcranY = GetSystemMetrics_(#SM_CYSCREEN)

NbSprite = EcranX / 40 * 3
Dim Image.SpriteInfo(NbSprite)

OpenWindow(1, 0, 0, EcranX, EcranY, #PB_Window_BorderLess | #PB_Window_Invisible, "Matrix")
SetWindowPos_(WindowID(), -1, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE) ; fenêtre toujours au premier plan

OpenWindowedScreen(WindowID(), 0, 0, EcranX, EcranY, 1, 0, 0)

#Longueur = 24 * #LongueurNom

For n = 1 To NbSprite
  ; On crée un texte
  Nom.s = ""
  For nn = 1 To #LongueurNom
    Carac = Random(35) + 56
    If Carac < 65 : Carac = 32 : EndIf
    Nom = Nom + Chr(Carac)
  Next
  
  ; on crée un sprite
  CreateSprite(n, 24, #Longueur, 0)
  Index = #LongueurNom + 1
  y = #Longueur
  StartDrawing(SpriteOutput(n))
    BackColor(0, 0, 0)
    DrawingFont(FontID)
    While Index > 1
      
      Index = Index - 1
      car$ = Mid(Nom, Index, 1)
      y = y - 24 : ; pour que le text descende
  
      c = c * 0.9 ; on fonce la couleur
      If car$ = " " : c = 255 : EndIf ; on remet la couleur d'origine sur les espaces
      FrontColor(0, c, 0)
      Locate(0, y)
      DrawText(car$)
      
    Wend
  StopDrawing()
Next

; On initialise la position des sprites
For n = 1 To NbSprite
  Image(n)\y = -Random(1600) - #Longueur
  Image(n)\x = Random(EcranX / 40) * 40
  Plus = 0 ; On décale le sprite si il en a déjà un sur la même ligne
  For nn = 1 To NbSprite
    If Image(nn)\x = Image(n)\x + Plus And n <> nn
      Plus + 5
    EndIf
  Next
  Image(n)\x = Image(n)\x + Plus
  Image(n)\v = Random(8) + 3
Next

HideWindow(1, 0) ; on affiche la fenêtre

Repeat
  
  For n = 1 To NbSprite
    If Image(n)\y > EcranY ; Si le sprite est en bas de l'écran
      Image(n)\y = -Random(1600) - #Longueur
      Image(x)\x = Random(EcranX / 40) * 40
      Plus = 0 ; On décale le sprite si il en a déjà un sur la même ligne
      For nn = 1 To NbSprite
        If Image(nn)\x = Image(n)\x + Plus And n <> nn
          Plus + 5
        EndIf
      Next
      Image(n)\x = Image(n)\x + Plus
      Image(n)\v = Random(8) + 3
    EndIf
    ; On fait avancer le sprite
    Image(n)\y = Image(n)\y + Image(n)\v
    ; On affiche le sprite
    DisplayTransparentSprite(1, Image(n)\x, Image(n)\y)
  Next
  
  FlipBuffers()
  ClearScreen(0, 0, 0)
  
  GetCursorPos_(Souris.POINT)
  
Until WindowEvent() = #PB_Event_CloseWindow Or Souris\x <> SourisOrigine\x Or Souris\y <> SourisOrigine\y

ShowCursor_(1)

Publié : jeu. 27/mai/2004 9:48
par Backup
aaaarg je venais juste d'optimiser mon source !! trop tard !!

Publié : jeu. 27/mai/2004 9:50
par Backup
ha bi je vois que tu t'en es occupé de l'obtimisation !!

Merci !! :D ça c'est du travail d'équipe !!!! :D :D :D :D

Soldat j'ai remodifié un peut ta version car je trouve que le fait de pouvoir ecrire des noms connus de nous c'est plus sympath que des nom generé aleatoirement , j'espere que tu m'en voudra pas !! :D
donc j'ai remis en service la variable NOM$ telle quelle etait au debut !!
Structure SpriteInfo
x.l
y.l
v.l ; vitesse de déplacement
EndStructure

#LongueurNom = 50




Param.s = Left(ProgramParameter(), 2)
If Param = "/p"
End
EndIf

GetCursorPos_(SourisOrigine.POINT)
ShowCursor_(0)

#Police = 1
Resultat = InitSprite()

FontID = LoadFont(#Police, "arial", 18, #PB_Font_Bold )

EcranX = GetSystemMetrics_(#SM_CXSCREEN)
EcranY = GetSystemMetrics_(#SM_CYSCREEN)

NbSprite = EcranX / 40 * 3
Dim Image.SpriteInfo(NbSprite)

OpenWindow(1, 0, 0, EcranX, EcranY, #PB_Window_BorderLess | #PB_Window_Invisible, "Matrix")
SetWindowPos_(WindowID(), -1, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE) ; fenêtre toujours au premier plan

OpenWindowedScreen(WindowID(), 0, 0, EcranX, EcranY, 1, 0, 0)

#Longueur = 24 * #LongueurNom

For n = 1 To NbSprite
; On crée un texte
nom$="D,O,B,R,O, ,C,E,D,E,R,A,V,I,C, ,F,W,E,I,L, ,O,L,I,V, ,H,E,I,S, ,S,P,I,T,E,R, ,L,E, ,S,O,L,D,A,T, ,I,N,C,O,N,N,U, ,F,R,E,D, ,P,U,R,E,B,A,S,I,C"

; on crée un sprite

Resultat = CreateSprite(n, 24,24*Len(nom$),0)
StartDrawing(SpriteOutput(n))
BackColor(0, 0, 0)
DrawingFont(FontID)
While Index<=Len(nom$)+1

Index=Index+1
car$ = StringField(nom$, Index, ",")
y=y+24:; pour que le text descende

c = c /1.3 ; on fonce la couleur
If car$ = " " : c = 255 : EndIf ; on remet la couleur d'origine sur les espaces
FrontColor(0, c, 0)
Locate(0, y)
DrawText(car$)

Wend
StopDrawing()
Next

; On initialise la position des sprites
For n = 1 To NbSprite
Image(n)\y = -Random(1600) - #Longueur
Image(n)\x = Random(EcranX / 40) * 40
Plus = 0 ; On décale le sprite si il en a déjà un sur la même ligne
For nn = 1 To NbSprite
If Image(nn)\x = Image(n)\x + Plus And n <> nn
Plus + 5
EndIf
Next
Image(n)\x = Image(n)\x + Plus
Image(n)\v = Random(8) + 3
Next

HideWindow(1, 0) ; on affiche la fenêtre

Repeat

For n = 1 To NbSprite
If Image(n)\y > EcranY ; Si le sprite est en bas de l'écran
Image(n)\y = -Random(1600) - #Longueur
Image(x)\x = Random(EcranX / 40) * 40
Plus = 0 ; On décale le sprite si il en a déjà un sur la même ligne
For nn = 1 To NbSprite
If Image(nn)\x = Image(n)\x + Plus And n <> nn
Plus + 5
EndIf
Next
Image(n)\x = Image(n)\x + Plus
Image(n)\v = Random(8) + 3
EndIf
; On fait avancer le sprite
Image(n)\y = Image(n)\y + Image(n)\v
; On affiche le sprite
DisplayTransparentSprite(1, Image(n)\x, Image(n)\y)
Next

FlipBuffers()
ClearScreen(0, 0, 0)

GetCursorPos_(Souris.POINT)

Until WindowEvent() = #PB_Event_CloseWindow Or Souris\x <> SourisOrigine\x Or Souris\y <> SourisOrigine\y

ShowCursor_(1)

Merci encore pour ta participation : tu peut mettre ce code dans le site des codes (ou tu devrai rajouter une rubrique screen saver) il commence a y en avoir maintenant !! :D :D

l'ideal serai que l'on puisse mettre une serie de nom dans les parametre du screen saver ; mais la je sais pas faire :(

Publié : jeu. 27/mai/2004 10:20
par Le Soldat Inconnu
une correction, j'avais fait des erreur

Code : Tout sélectionner

Structure SpriteInfo
  x.l
  y.l
  v.l ; vitesse de déplacement
EndStructure

#LongueurNom = 50




Param.s = Left(ProgramParameter(), 2)
If Param = "/p"
  End
EndIf

GetCursorPos_(SourisOrigine.POINT)
ShowCursor_(0)

#Police = 1
Resultat = InitSprite()

FontID = LoadFont(#Police, "Tahoma", 14, #PB_Font_HighQuality | #PB_Font_Bold)

EcranX = GetSystemMetrics_(#SM_CXSCREEN)
EcranY = GetSystemMetrics_(#SM_CYSCREEN)

NbSprite = EcranX / 40 * 3
Dim Image.SpriteInfo(NbSprite)

OpenWindow(1, 0, 0, EcranX, EcranY, #PB_Window_BorderLess | #PB_Window_Invisible, "Matrix")
SetWindowPos_(WindowID(), -1, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE) ; fenêtre toujours au premier plan

OpenWindowedScreen(WindowID(), 0, 0, EcranX, EcranY, 1, 0, 0)

#Longueur = 20* #LongueurNom

For n = 1 To NbSprite
  ; On crée un texte
  Nom.s = ""
  For nn = 1 To #LongueurNom
    Carac = Random(35) + 56
    If Carac < 65 : Carac = 32 : EndIf
    Nom = Nom + Chr(Carac)
  Next
  
  ; on crée un sprite
  CreateSprite(n, 24, #Longueur, 0)
  Index = #LongueurNom + 1
  y = #Longueur
  StartDrawing(SpriteOutput(n))
    BackColor(0, 0, 0)
    DrawingFont(FontID)
    While Index > 1
      
      Index = Index - 1
      car$ = Mid(Nom, Index, 1)
      y = y - 20 : ; pour que le text descende
  
      c = c * 0.9 ; on fonce la couleur
      If car$ = " " : c = 255 : EndIf ; on remet la couleur d'origine sur les espaces
      FrontColor(0, c, 0)
      Locate(0, y)
      DrawText(car$)
      
    Wend
  StopDrawing()
Next

; On initialise la position des sprites
For n = 1 To NbSprite
  Image(n)\y = -Random(1600) - #Longueur
  Image(n)\x = Random(EcranX / 40) * 40
  Plus = 0 ; On décale le sprite si il en a déjà un sur la même ligne
  For nn = 1 To NbSprite
    If Image(nn)\x = Image(n)\x + Plus And n <> nn
      Plus + 5
    EndIf
  Next
  Image(n)\x = Image(n)\x + Plus
  Image(n)\v = Random(10) + 4
Next

HideWindow(1, 0) ; on affiche la fenêtre

Repeat
  
  For n = 1 To NbSprite
    If Image(n)\y > EcranY ; Si le sprite est en bas de l'écran
      Image(n)\y = -Random(1600) - #Longueur
      Image(n)\x = Random(EcranX / 40) * 40
      Plus = 0 ; On décale le sprite si il en a déjà un sur la même ligne
      For nn = 1 To NbSprite
        If Image(nn)\x = Image(n)\x + Plus And n <> nn
          Plus + 5
        EndIf
      Next
      Image(n)\x = Image(n)\x + Plus
      Image(n)\v = Random(10) + 4
    EndIf
    ; On fait avancer le sprite
    Image(n)\y = Image(n)\y + Image(n)\v
    ; On affiche le sprite
    DisplayTransparentSprite(n, Image(n)\x, Image(n)\y)
  Next
  
  FlipBuffers()
  ClearScreen(0, 0, 0)
  
  GetCursorPos_(Souris.POINT)
  
Until WindowEvent() = #PB_Event_CloseWindow Or Souris\x <> SourisOrigine\x Or Souris\y <> SourisOrigine\y

ShowCursor_(1)

Publié : jeu. 27/mai/2004 10:30
par fweil
Ben voila ma contribution à moi :

Fred
Polux
Artemis
comtois
yukin
Patrick88
Oliv
Vyc
Keph
hackotedelaplaque
Cinderella
filperj
MacRain
Bernard
Denis
Snooze
Marcus
Dr. Dri
T€r$@k€n
melysoph
Pierre
Aranoth
Ombres
Chris
gaut
leoneo
Lukky
virtualys
Paneric
hteamspy
Jacqueline ZITO
DEF
brossden
---fred---
Crystal Noir
cookie
Heis Spiter
Le Soldat Inconnu
Flype
pg
Marc
julien
Berikco
TnPz
Dionyzos
killer7
Nadrak
philipus25110
freddix
remram44
cederavic
Orlanth
Guimauve
TEALC
nico
ZapMan
we7theboss
Jacques Stopinski
rollmops
clauded07
mgou
[JB]
ToX-007
Syszz
CORBASE
gansta93
Fiwip
KarLKoX
Yoop
patmaba
El_Choni
Jenova
Nells
france
newzig
Baka
flo
KiWin
Yves Rouquier
lionel_om
trikar
erix14
vanago
lazy
LavaLava
Silver
Necra
Jacobus
Sammael
aby56
Jean-Paul
thedoorp
sobriquet
le_pro_du_pure
gilles robert
CARTER
Patrick
chronomancien
jbernard13
blue
Mickey
Good07
RemyX
titimoby
Heero
Creepy
Dobro
jblaise.cs
DominiqueB
bugrane
pierre the noob of of bas
blackrock
rYn0
LE_Bassiste_Atitré
NoT
Yam
fweil
YourHead[^_-]
Galen
LOULOU25
micke
charly
garzul
Bloutiouf
DarkDragon
nemo
gillespeyrin
yann64

Capture réalisée avec mon captureur de contenu Web ... ! Ecrit en PureBasic

Publié : jeu. 27/mai/2004 12:31
par Le Soldat Inconnu
et avec une trainée sur les caractères :D

Code : Tout sélectionner

Structure SpriteInfo
  x.l
  y.l
  v.l ; vitesse de déplacement
EndStructure

#LongueurNom = 55
#Largeur_Carac = 11
#Hauteur_Carac = 14
#Espacement_Paquet = 4
#Longueur_Trainee = 16
#Espace_Trainee = 3
#Vitesse = 6
FontID = LoadFont(0, "symbol", 8, #PB_Font_HighQuality | #PB_Font_Bold)



Param.s = Left(ProgramParameter(), 2)
If Param = "/p"
  End
EndIf

GetCursorPos_(SourisOrigine.POINT)
ShowCursor_(0)

Resultat = InitSprite()

EcranX = GetSystemMetrics_(#SM_CXSCREEN)
EcranY = GetSystemMetrics_(#SM_CYSCREEN)

NbSprite = EcranX / #Largeur_Carac
Dim Image.SpriteInfo(NbSprite)

OpenWindow(1, 0, 0, EcranX, EcranY, #PB_Window_BorderLess, "Matrix")
SetWindowPos_(WindowID(), -1, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE) ; fenêtre toujours au premier plan

OpenWindowedScreen(WindowID(), 0, 0, EcranX, EcranY, 1, 0, 0)
ClearScreen(0, 0, 0)
FlipBuffers()

#Longueur = #Hauteur_Carac * #LongueurNom

For n = 1 To NbSprite
  ; On crée un texte
  Nom.s = ""
  For nn = 1 To #LongueurNom
    Carac = Random(35) + 56
    If Carac < 65 : Carac = 32 : EndIf
    Nom = Nom + Chr(Carac)
  Next
  
  ; on crée un sprite
  CreateSprite(n, #Largeur_Carac, #Longueur + #Longueur_Trainee * #Espace_Trainee, 0)
  StartDrawing(SpriteOutput(n))
    BackColor(0, 0, 0)
    DrawingMode(1)
    DrawingFont(FontID)
    For Trainee = #Longueur_Trainee To 0 Step - 1
      Index = #LongueurNom + 1
      y = #Longueur + #Longueur_Trainee * #Espace_Trainee - #Espace_Trainee * Trainee
      If Trainee > 0
        cmax = 150 - (150 / #Longueur_Trainee) * Trainee
      Else
        cmax = 255
      EndIf
      Image(n)\v = Random(#Vitesse) + #Vitesse
      cmax = cmax * Image(n)\v / (2 * #Vitesse)
      c = cmax
      While Index > 1
        
        Index = Index - 1
        car$ = Mid(Nom, Index, 1)
        
        c = c * 0.97 ; on fonce la couleur
        If car$ = " " : c = cmax : EndIf ; on remet la couleur d'origine sur les espaces
        FrontColor(0, c, 0)
        Locate(0, y)
        DrawText(car$)
        
        y = y - #Hauteur_Carac ; pour que le text descende
      Wend
    Next
    
    ; Si on bouge la souris
    GetCursorPos_(Souris.POINT)
    If Souris\x <> SourisOrigine\x Or Souris\y <> SourisOrigine\y
      End ; On quitte
    EndIf
    
  StopDrawing()
Next

; On initialise la position des sprites
For n = 1 To NbSprite
  Image(n)\y = -Random(#Longueur) - #Longueur
  Image(n)\x = Random(EcranX / (#Largeur_Carac * #Espacement_Paquet)) * #Largeur_Carac * #Espacement_Paquet
  Plus = 0 ; On décale le sprite si il en a déjà un sur la même ligne
  For nn = 1 To NbSprite
    If Image(nn)\x = Image(n)\x + Plus And n <> nn
      Plus + #Largeur_Carac
      nn = 0
    EndIf
  Next
  Image(n)\x = Image(n)\x + Plus
  ; Image(n)\v = Random(#Vitesse) + #Vitesse
Next

Repeat
  
  For n = 1 To NbSprite
    If Image(n)\y > EcranY ; Si le sprite est en bas de l'écran
      Image(n)\y = -Random(#Longueur) - #Longueur
      Image(n)\x = Random(EcranX / (#Largeur_Carac * #Espacement_Paquet)) * #Largeur_Carac * #Espacement_Paquet
      Plus = 0 ; On décale le sprite si il en a déjà un sur la même ligne
      For nn = 1 To NbSprite
        If Image(nn)\x = Image(n)\x + Plus And n <> nn
          Plus + #Largeur_Carac
          nn = 0
        EndIf
      Next
      Image(n)\x = Image(n)\x + Plus
      
      ; Image(n)\v = Random(#Vitesse) + #Vitesse
    EndIf
    ; On fait avancer le sprite
    Image(n)\y = Image(n)\y + Image(n)\v
    ; On affiche le sprite
    DisplayTransparentSprite(n, Image(n)\x, Image(n)\y)
  Next
  
  FlipBuffers()
  ClearScreen(0, 0, 0)
  
  GetCursorPos_(Souris.POINT)
  
Until WindowEvent() = #PB_Event_CloseWindow Or Souris\x <> SourisOrigine\x Or Souris\y <> SourisOrigine\y

ShowCursor_(1)
vous pouvez télécharger l'écran de veille ici :
http://perso.wanadoo.fr/lesoldatinconnu ... Matrix.scr (38ko)

J'ai édité pour mettre à jour ;)

Publié : jeu. 27/mai/2004 12:38
par nico
Sympa :D

C'est possible de mettre une image fixe du Film en arrière Plan !!!

:)

Publié : jeu. 27/mai/2004 13:59
par Guimauve
Première utilisation publique d'un petit programme pour générer ça en 1 ou 2 seconde.

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Déclaration du tableau >>>>>
Dim PseudoForum.s(127)

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Initialisation du tableau >>>>>

PseudoForum(0) = "Fred"
PseudoForum(1) = "Polux"
PseudoForum(2) = "Artemis"
PseudoForum(3) = "comtois"
PseudoForum(4) = "yukin"
PseudoForum(5) = "Patrick88"
PseudoForum(6) = "Oliv"
PseudoForum(7) = "Vyc"
PseudoForum(8) = "Keph"
PseudoForum(9) = "hackotedelaplaque"
PseudoForum(10) = "Cinderella"
PseudoForum(11) = "filperj"
PseudoForum(12) = "MacRain"
PseudoForum(13) = "Bernard"
PseudoForum(14) = "Denis"
PseudoForum(15) = "Snooze"
PseudoForum(16) = "Marcus"
PseudoForum(17) = "Dr. Dri"
PseudoForum(18) = "T€r$@k€n"
PseudoForum(19) = "melysoph"
PseudoForum(20) = "Pierre"
PseudoForum(21) = "Aranoth"
PseudoForum(22) = "Ombres"
PseudoForum(23) = "Chris"
PseudoForum(24) = "gaut"
PseudoForum(25) = "leoneo"
PseudoForum(26) = "Lukky"
PseudoForum(27) = "virtualys"
PseudoForum(28) = "Paneric"
PseudoForum(29) = "hteamspy"
PseudoForum(30) = "Jacqueline ZITO"
PseudoForum(31) = "DEF"
PseudoForum(32) = "brossden"
PseudoForum(33) = "---fred---"
PseudoForum(34) = "Crystal Noir"
PseudoForum(35) = "cookie"
PseudoForum(36) = "Heis Spiter"
PseudoForum(37) = "Le Soldat Inconnu"
PseudoForum(38) = "Flype"
PseudoForum(39) = "pg"
PseudoForum(40) = "Marc"
PseudoForum(41) = "julien"
PseudoForum(42) = "Berikco"
PseudoForum(43) = "TnPz"
PseudoForum(44) = "Dionyzos"
PseudoForum(45) = "killer7"
PseudoForum(46) = "Nadrak"
PseudoForum(47) = "philipus25110"
PseudoForum(48) = "freddix"
PseudoForum(49) = "remram44"
PseudoForum(50) = "cederavic"
PseudoForum(51) = "Orlanth"
PseudoForum(52) = "Guimauve"
PseudoForum(53) = "TEALC"
PseudoForum(54) = "nico"
PseudoForum(55) = "ZapMan"
PseudoForum(56) = "we7theboss"
PseudoForum(57) = "Jacques Stopinski"
PseudoForum(58) = "rollmops"
PseudoForum(59) = "clauded07"
PseudoForum(60) = "mgou"
PseudoForum(61) = "[JB]"
PseudoForum(62) = "ToX-007"
PseudoForum(63) = "Syszz"
PseudoForum(64) = "CORBASE"
PseudoForum(65) = "gansta93"
PseudoForum(66) = "Fiwip"
PseudoForum(67) = "KarLKoX"
PseudoForum(68) = "Yoop"
PseudoForum(69) = "patmaba"
PseudoForum(70) = "El_Choni"
PseudoForum(71) = "Jenova"
PseudoForum(72) = "Nells"
PseudoForum(73) = "france"
PseudoForum(74) = "newzig"
PseudoForum(75) = "Baka"
PseudoForum(76) = "flo"
PseudoForum(77) = "KiWin"
PseudoForum(78) = "Yves Rouquier"
PseudoForum(79) = "lionel_om"
PseudoForum(80) = "trikar"
PseudoForum(81) = "erix14"
PseudoForum(82) = "vanago"
PseudoForum(83) = "lazy"
PseudoForum(84) = "LavaLava"
PseudoForum(85) = "Silver"
PseudoForum(86) = "Necra"
PseudoForum(87) = "Jacobus"
PseudoForum(88) = "Sammael"
PseudoForum(89) = "aby56"
PseudoForum(90) = "Jean-Paul"
PseudoForum(91) = "thedoorp"
PseudoForum(92) = "sobriquet"
PseudoForum(93) = "le_pro_du_pure"
PseudoForum(94) = "gilles robert"
PseudoForum(95) = "CARTER"
PseudoForum(96) = "Patrick"
PseudoForum(97) = "chronomancien"
PseudoForum(98) = "jbernard13"
PseudoForum(99) = "blue"
PseudoForum(100) = "Mickey"
PseudoForum(101) = "Good07"
PseudoForum(102) = "RemyX"
PseudoForum(103) = "titimoby"
PseudoForum(104) = "Heero"
PseudoForum(105) = "Creepy"
PseudoForum(106) = "Dobro"
PseudoForum(107) = "jblaise.cs"
PseudoForum(108) = "DominiqueB"
PseudoForum(109) = "bugrane"
PseudoForum(110) = "pierre the noob of of bas"
PseudoForum(111) = "blackrock"
PseudoForum(112) = "rYn0"
PseudoForum(113) = "LE_Bassiste_Atitré"
PseudoForum(114) = "NoT"
PseudoForum(115) = "Yam"
PseudoForum(116) = "fweil"
PseudoForum(117) = "YourHead[^_-]"
PseudoForum(118) = "Galen"
PseudoForum(119) = "LOULOU25"
PseudoForum(120) = "micke"
PseudoForum(121) = "charly"
PseudoForum(122) = "garzul"
PseudoForum(123) = "Bloutiouf"
PseudoForum(124) = "DarkDragon"
PseudoForum(125) = "nemo"
PseudoForum(126) = "gillespeyrin"
PseudoForum(127) = "yann64"
A+
Guimauve

Publié : jeu. 27/mai/2004 15:31
par Oliv
marrant, parcontre, le dernier code de régis ne fonctionne pas chez moi

Publié : jeu. 27/mai/2004 17:28
par Le Soldat Inconnu
c'est un écran de veille, arrête de toucher à la souris :lol:

j'ai ajouté le premier carac en surbriance

Code : Tout sélectionner

Structure SpriteInfo
  x.l
  y.l
  v.l ; vitesse de déplacement
EndStructure

#Largeur_Carac = 11
#Hauteur_Carac = 14
#Espacement_Paquet = 4
#Longueur_Trainee = 16
#Espace_Trainee = 3
#Vitesse = 6
FontID = LoadFont(0, "symbol", 8, #PB_Font_HighQuality | #PB_Font_Bold)



Param.s = Left(ProgramParameter(), 2)
If Param = "/p"
  End
EndIf

GetCursorPos_(SourisOrigine.POINT)

Resultat = InitSprite()

EcranX = GetSystemMetrics_(#SM_CXSCREEN)
EcranY = GetSystemMetrics_(#SM_CYSCREEN)

NbSprite = EcranX / #Largeur_Carac
Dim Image.SpriteInfo(NbSprite)

OpenWindow(1, 0, 0, EcranX, EcranY, #PB_Window_BorderLess, "Matrix")
SetWindowPos_(WindowID(), -1, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE) ; fenêtre toujours au premier plan

OpenWindowedScreen(WindowID(), 0, 0, EcranX, EcranY, 1, 0, 0)
ClearScreen(0, 0, 0)
FlipBuffers()

ShowCursor_(0)

LongueurNom = EcranY / #Hauteur_Carac

For n = 1 To NbSprite
  ; On crée un texte
  Nom.s = ""
  For nn = 1 To LongueurNom
    Carac = Random(35) + 56
    If Carac < 65 : Carac = 32 : EndIf
    Nom = Nom + Chr(Carac)
  Next
  
  ; on crée un sprite
  CreateSprite(n, #Largeur_Carac, EcranY + #Longueur_Trainee * #Espace_Trainee, 0)
  StartDrawing(SpriteOutput(n))
    BackColor(0, 0, 0)
    DrawingMode(1)
    DrawingFont(FontID)
    For Trainee = #Longueur_Trainee To 0 Step - 1
      Index = LongueurNom + 1
      y = EcranY + #Longueur_Trainee * #Espace_Trainee - #Espace_Trainee * Trainee
      If Trainee > 0
        cmax = 150 - (150 / #Longueur_Trainee) * Trainee
      Else
        cmax = 255
      EndIf
      Image(n)\v = Random(#Vitesse) + #Vitesse
      cmax = cmax * Image(n)\v / (2 * #Vitesse)
      c = cmax
      Repeat
        
        y = y - #Hauteur_Carac ; pour que le text descende
        
        Index = Index - 1
        Car.s = Mid(Nom, Index, 1)
        
        c = c * 0.97 ; on fonce la couleur
        If Car = " " : c = cmax : EndIf ; on remet la couleur d'origine sur les espaces
        If Index = LongueurNom
          FrontColor(0.5 * c, c, 0.5 * c)
        ElseIf Index = LongueurNom - 1
          FrontColor(0.25 * c, c, 0.25 * c)
        Else
          FrontColor(0, c, 0)
        EndIf
        Locate(0, y)
        DrawText(Car)

      Until Index = 1
    Next
    
    ; Si on bouge la souris
    GetCursorPos_(Souris.POINT)
    If Souris\x <> SourisOrigine\x Or Souris\y <> SourisOrigine\y
      End ; On quitte
    EndIf
    
  StopDrawing()
Next

; On initialise la position des sprites
For n = 1 To NbSprite
  Image(n)\y = -Random(EcranY) - EcranY
  Image(n)\x = Random(EcranX / (#Largeur_Carac * #Espacement_Paquet)) * #Largeur_Carac * #Espacement_Paquet
  Plus = 0 ; On décale le sprite si il en a déjà un sur la même ligne
  For nn = 1 To NbSprite
    If Image(nn)\x = Image(n)\x + Plus And n <> nn
      Plus + #Largeur_Carac
      nn = 0
    EndIf
  Next
  Image(n)\x = Image(n)\x + Plus
  ; Image(n)\v = Random(#Vitesse) + #Vitesse
Next

Repeat
  
  For n = 1 To NbSprite
    If Image(n)\y > EcranY ; Si le sprite est en bas de l'écran
      Image(n)\y = -Random(EcranY) - EcranY
      Image(n)\x = Random(EcranX / (#Largeur_Carac * #Espacement_Paquet)) * #Largeur_Carac * #Espacement_Paquet
      Plus = 0 ; On décale le sprite si il en a déjà un sur la même ligne
      For nn = 1 To NbSprite
        If Image(nn)\x = Image(n)\x + Plus And n <> nn
          Plus + #Largeur_Carac
          nn = 0
        EndIf
      Next
      Image(n)\x = Image(n)\x + Plus
      
      ; Image(n)\v = Random(#Vitesse) + #Vitesse
    EndIf
    ; On fait avancer le sprite
    Image(n)\y = Image(n)\y + Image(n)\v
    ; On affiche le sprite
    DisplayTransparentSprite(n, Image(n)\x, Image(n)\y)
  Next
  
  FlipBuffers()
  ClearScreen(0, 0, 0)
  
  GetCursorPos_(Souris.POINT)
  
Until WindowEvent() = #PB_Event_CloseWindow Or Souris\x <> SourisOrigine\x Or Souris\y <> SourisOrigine\y

ShowCursor_(1)
vous pouvez télécharger l'écran de veille ici :
http://perso.wanadoo.fr/lesoldatinconnu ... Matrix.scr (38ko)

merci Dobro pour ton code de base, qu'est-ce que je m'amuse avec ça :D

je sais pas si vous avez regardé ce qui se fait un epu, voir ce qui se vends mais on les mets minables, je trouve :mrgreen: