Page 2 sur 5

Publié : jeu. 27/mai/2004 21:17
par Oliv
c'était pas moi mais le chat :wink:

Publié : ven. 28/mai/2004 0:52
par Backup
bon j'ai refait une version a ma sauce

ou je simule une animation des caracteres ; car apres revisu de la video
les caracteres en tombant change !!! :)

alors j'ai pas voulu me casser la tete sur ma carte graphique l'effet animation fonctionne (attention c'est une petite arnaque) :)
dites moi si sur vos carte graphique l'effet passe bien !
prenez un peut de recul par rapport a votre moniteur pour aprecier
mais faite gaffe derriere vous :)

ne touchez pas votre souris c'est toujours un extincteur d'ecran
:D
Ps: maintenant tous les abonnée du forum sont dans la matrice ! :D
c'est ilisible mais bon !!
voici le code :
Dim ysprite(1000)
Dim de(1000)
Dim nom$(12)
Dim liste(1000)
Dim index(1000)
Dim y(1000)
sprite=1
#Police=1

;*********** pour le screensaver
Param.s = Left(ProgramParameter(), 2)
If Param = "/p"
End
EndIf

GetCursorPos_(SourisOrigine.POINT)
ShowCursor_(0)
; ***********************************



Resultat = InitSprite()

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

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

;NbSprite = EcranX / 40 * 3
NbSprite =12


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)


nom$(1)="F,r,e,d, ,P,o,l,u,x, ,A,r,t,e,m,i,s, ,c,o,m,t,o,i,s, ,y,u,k,i,n, ,P,a,t,r,i,c,k,8,8, ,O,l,i,v, ,V,y,c, ,K,e,p,h, ,h,a,c,k,o,t,e,d,e,l,a,p,l,a,q,u,e, ,C,i,n,d,e,r,e,l,l,a, ,f,i,l,p,e,r,j, ,M,a,c,R,a,i,n,*,"
nom$(2)="B,e,r,n,a,r,d, ,D,e,n,i,s, ,S,n,o,o,z,e, ,M,a,r,c,u,s, ,D,r,., ,D,r,i, ,T,€,r,$,@,k,€,n, ,m,e,l,y,s,o,p,h, ,P,i,e,r,r,e, ,A,r,a,n,o,t,h, ,O,m,b,r,e,s, ,C,h,r,i,s,*,"
nom$(3)="g,a,u,t, ,l,e,o,n,e,o, ,L,u,k,k,y, ,v,i,r,t,u,a,l,y,s, ,P,a,n,e,r,i,c, ,h,t,e,a,m,s,p,y, ,D,E,F, ,b,r,o,s,s,d,e,n, ,-,-,-,f,r,e,d,-,-,-, ,C,r,y,s,t,a,l, ,N,o,i,r, ,c,o,o,k,i,e,*,"
nom$(4)="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,l,y,p,e, ,p,g, ,M,a,r,c, ,j,u,l,i,e,n, ,B,e,r,i,k,c,o, ,T,n,P,z, ,D,i,o,n,y,z,o,s, ,k,i,l,l,e,r,7,*,"
nom$(5)="N,a,d,r,a,k, ,p,h,i,l,i,p,u,s,2,5,1,1,0, ,f,r,e,d,d,i,x, ,r,e,m,r,a,m,4,4, ,c,e,d,e,r,a,v,i,c, ,O,r,l,a,n,t,h, ,G,u,i,m,a,u,v,e, ,T,E,A,L,C, ,n,i,c,o,*,"
nom$(6)="Z,a,p,M,a,n, ,w,e,7,t,h,e,b,o,s,s, ,J,a,c,q,u,e,s, ,S,t,o,p,i,n,s,k,i, ,r,o,l,l,m,o,p,s, ,c,l,a,u,d,e,d,0,7, ,m,g,o,u, ,[,J,B,],T,o,X,-,0,0,7, , ,S,y,s,z,z, ,C,O,R,B,A,S,E,*,"
nom$(7)="g,a,n,s,t,a,9,3, ,F,i,w,i,p, ,K,a,r,L,K,o,X, ,Y,o,o,p, ,p,a,t,m,a,b,a, ,E,l,_,C,h,o,n,i, ,J,e,n,o,v,a, ,N,e,l,l,s, ,f,r,a,n,c,e, ,n,e,w,z,i,g, ,B,a,k,a, ,f,l,o, , ,K,i,W,i,n,*,"
nom$( 8 )="Y,v,e,s, ,R,o,u,q,u,i,e,r, ,l,i,o,n,e,l,_,o,m, ,t,r,i,k,a,r, ,e,r,i,x,1,4, ,v,a,n,a,g,o, ,l,a,z,y, ,L,a,v,a,L,a,v,a, ,S,i,l,v,e,r, ,N,e,c,r,a, ,J,a,c,o,b,u,s, ,S,a,m,m,a,e,l,*,"
nom$(9)="a,b,y,5,6, ,J,e,a,n,-,P,a,u,l, ,t,h,e,d,o,o,r,p, ,s,o,b,r,i,q,u,e,t, ,l,e,_,p,r,o,_,d,u,_,p,u,r,e, ,g,i,l,l,e,s, ,r,o,b,e,r,t, ,C,A,R,T,E,R, ,P,a,t,r,i,c,k, ,c,h,r,o,n,o,m,a,n,c,i,e,n,*,"
nom$(10)="j,b,e,r,n,a,r,d,1,3, ,b,l,u,e, ,M,i,c,k,e,y, ,G,o,o,d,0,7, ,R,e,m,y,X, ,t,i,t,i,m,o,b,y, ,H,e,e,r,o, ,C,r,e,e,p,y, ,j,b,l,a,i,s,e,.,c,s, ,D,o,m,i,n,i,q,u,e,B, ,b,u,g,r,a,n,e,*,"
nom$(11)="P,i,e,r,r,e, ,t,h,e, ,n,o,o,b, ,o,f, ,o,f, ,b,a,s, ,b,l,a,c,k,r,o,c,k, ,r,Y,n,0, ,L,E,_,B,a,s,s,i,s,t,e,_,A,t,i,t,r,é, , ,N,o,T, ,Y,a,m, ,f,w,e,i,l, ,Y,o,u,r,H,e,a,d,[,^,_,-,],*,"
nom$(12)="G,a,l,e,n, ,L,O,U,L,O,U,2,5, ,m,i,c,k,e, ,c,h,a,r,l,y, ,g,a,r,z,u,l, ,B,l,o,u,t,i,o,u,f, ,D,a,r,k,D,r,a,g,o,n, ,n,e,m,o, ,g,i,l,l,e,s,p,e,y,r,i,n, ,y,a,n,n,6,4, ,D,o,b,r,o,*,"

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

; on crée un sprite
For spr=1 To 12
Resultat = CreateSprite(spr, 24,24*Len(nom$(spr)),0 )

While index(spr)<=Len(nom$(spr))+1

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

StartDrawing(SpriteOutput(spr))
BackColor(0, 0,0)
c = c *1.4 :; on eclaircie la couleur !!
If c>255:c=0:EndIf
If car$ = " "
c = 10

EndIf ; on remet la couleur d'origine sur les espaces
;c=255

FrontColor(0, c, 0)
Locate(0, y(spr))
DrawingFont(FontID)
DrawText(car$)
StopDrawing()
Wend
Next spr

;***********************************
For ind=1 To 100
ysprite(ind)=0-Random(900)-900:; on tire une ligne de depart au dessus de l'ecran
de(ind)= Random(EcranX)*24
liste(ind)=de(ind)

Next ind
For ind=1 To 12

Next ind

Repeat

RandomSeed(Random(255))


For ind=1 To 50
; si le sprite sort en bas
If ysprite(ind)>EcranY
ysprite(ind)=-Random(1900)-900:; on tire une ligne de depart au dessus de l'ecran
de(ind)= Random(EcranX)+27 :; on tire une colonne au hazard (on en profite)
EndIf
spr=spr+1
If spr>12
spr=1
EndIf


ysprite(ind)=ysprite(ind)+Random(7)+5

DisplayTransparentSprite(spr, de(ind), ysprite(ind))

Next ind




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)

@le soldat : Merci ! :D

Publié : ven. 28/mai/2004 8:56
par Lukky
Moi je vois pas mon Pseudo ??

Remarque si je regarde bien je m'aperçois que l'écran est tout noir, ça doit être pour ça :-)

JL

Publié : ven. 28/mai/2004 9:08
par Backup
pourtant c'est le 3em nom de la variable nom$(3)

comment ça ton ecran est tout noir ?? tu voix pas les lettres tomber ?? :(


sinon change
c = c *1.4 :; on eclaircie la couleur !!
If c>255:c=0:EndIf
If car$ = " "
c = 10
cette portion de code determine la couleur de depart et celle d'arrivé (Merci CEDERAVICK ! :) ) (plus clair) en principe si tu met c=80 la couleur la plus foncé va s'eclaircir !!
quant a
c = c *1.4
ça represente le pas d'eclaircissement !
donc c'est imposssible que tu ne vois pas :D

heu ! retire moi d'un doute : ton moniteur est branché a la prise au moins ???

8O :D :D :D

Publié : ven. 28/mai/2004 9:30
par Lukky
Haha nan j'déconne, j'ai pas d'affichage (je te rassure mon moniteur est branché, note que j'ai moult problèmes de ce genre chez des clients, on rigole mais on trouve toujours plus con que soit, dixit harakiri), un bel écran noir, mais l'applic n'est pas plantée, la souris réanime mon bureau.

Ma config Radeon 9000, Athlon 2400, 1go de SDRam, 250 Go de HDD.

JL

Publié : ven. 28/mai/2004 10:47
par Backup
il faut attendre quelques secondes avant que les lettres arrivent
c'est peut etre un manque de patience de ta part ?? :)

parcequ'il n'y a rian dans ce listing qui empeche qu tu vois les lettres tomber !!!! verifie tu verra c'est assez simple !

:)


il est vrai que sur mon P4 a 2,8 Go j'attent 4 secondes avant de voir arriver les lettres , et que j'ai programmer ça vers les 1 heures du mat
en plein dans le noir !! et quand plein jours on dicerne assez mal les lettres
t'a essayé de monter le niveau de lumiere de ton moniteur, ou de modifier les parametres comme j'indique plus haut ??

sinon pour etre sur tu décommente la ligne
;c=255
ça forcera les lettre a la couleur verte !!

mais en principe je vois pas pourquoi cela ne marche pas chez toi !!!
y a t'il quelqu'un d'autre ayant ce probleme ??? :(


ps j'utilise la version 3.80 de pure !! je vais installer la derniere pour tester

Publié : ven. 28/mai/2004 15:58
par Backup
.............

Publié : ven. 28/mai/2004 16:45
par Chris
Une question bête: Pourquoi t'as pas mis des Data, pour les noms?

(Remarque, la réponse est peut-être dans le code, mais comme je ne l'ai pas encore regardé de près :oops: )

Par contre, ça fonctionne bien! (Ben oui, j'ai essayé, quand même :wink: )

Chris :)

Publié : ven. 28/mai/2004 17:00
par Backup
parce que j'ai utilisé "StringField"
c'est comme les datas :D

comme je ne lit q'une seule fois les caracteres pour creer des images de sprites, c'est pratique "StringField" .. je trouve que c'est une des fonctions les plus inovante que le pure propose, une sorte de data moderne !
:D

cherche pas trop la petite bete , car comme je l'ai deja dit sur ce forum
je program basic a l'ancienne ,et les structure et autre liste chainée sont du chinois pour moi ! :D
et pis j'ai pas cherché l'optimisation !

pis les noms ils etaient en REM , je les aient viré !!

Publié : ven. 28/mai/2004 17:07
par Chris
Dobro a écrit :cherche pas trop la petite bete , car comme je l'ai deja dit sur ce forum
je program basic a l'ancienne ,et les structure et autre liste chainée sont du chinois pour moi !
et pis j'ai pas cherché l'optimisation !
Pour le StringField, j'avais pas vu: Puis c'était juste une question comme ça. :roll:

Pour les Datas, je te signale qu'ils étaient déjà présents sur le Basic du MO5. Si ça, c'est pas du basic à l'ancienne :lol:

Chris :)

Publié : sam. 29/mai/2004 10:18
par Jacobus
:D Salut à tous !
Vraiment sympa ce petit prog,
Félicitations Dobro, idée lumineuse :idea:
Bravo à la complicité des autres !

Entre nous, j'aime bien la musique....
je me commet dans la compo numérique,
aussi j'ai eu envie de mettre du son sur ce
screensaver et du son à moi.
je ne peux vous en faire profiter compte tenu
de la taille des fichiers wav et mon bas débit,
mais voilà de quoi sonorisé avec votre musique
préférée. vous reconnaîtrez les portions ajoutées
au code initial, facile à comprendre.

Encore Bravo et merci,
Jacobus.

Code : Tout sélectionner

; Matrix Cree Par Dobro 

Dim ysprite(1000) 
Dim de(1000) 
Dim nom$(30) 
Dim liste(1000) 
Dim index(1000) 
Dim y(1000) 
sprite=1 
#Police=1 

;===========constante son========
Enumeration 
#son_1
EndEnumeration 
;================================

;*********** pour le screensaver 
Param.s = Left(ProgramParameter(), 2) 
If Param = "/p" 
    End 
EndIf 

GetCursorPos_(SourisOrigine.POINT) 
ShowCursor_(0) 
; *********************************** 



Resultat = InitSprite() 

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

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

;NbSprite = EcranX / 40 * 3 
NbSprite =12 

;===initialisation et chargement du son=============
 Result = InitSound()
   son1.s ="C:\Mes documents\Ma musique\Mes mix\mix0002.wav" ;choisir un wav qui vous plaît
      If LoadSound(#son_1,son1)
         PlaySound(#son_1,1);O si vous voulez l'entendre qu'une fois, 1 pour l'écoute en continu.
      EndIf 
;======c'est tout============

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) 



nom$(1)="h,o,g,o,f,g,h,6,+,8,3,5,f,s,g,4,6,8,4,3,f,s,*,g,°" 
nom$(2)="R,O,L,N,R,H,D,F,G,J,K,L,H,G,F,.,/,M,P,%,M,L,*,K,°" 
nom$(3)="E,B,I,C,E,E,R,T,I,U,T,K,G,S,M,K,M,O,S,G,J,S,*,O,°" 
nom$(4)="D,R,V,O,D,d,f,g,d,d,f,g,d,x,v,c,b,,,u,r,y,z,*,r,°" 
nom$(5)=":,O,:,N,D,q,d,y,e,p,o,x,c,b,:,;,z,e,z,e,t,w,*,x,°" 
nom$(6)="P,:,E,U,I,:,:,F,G,H,O,G,K,B,¨,B,J,K,S,G,?,S,*,D,°" 
nom$(7)="O,R,L,:,X,:,e,t,i,u,t, ,p,t,z,u,r,z,t,_,ç,e,*,r,°" 
nom$( 8 )="L,O,:,D,D,H,I,9,U,R,:,0,8,9,T,Z,R,T,P,R, ,P,*,Z,°" 
nom$(9)="U,U,C,E,D,m,s,k,l,d,f,m,p,ç,o,r,j,t,m,z,g,j,*,s,°" 
nom$(10)="X,Q,H,N,R,o,o,h,s,r,f,i,h,s,r,f,g,i,h, ,d,f,*,h,°" 
nom$(11)="g,U,l,O,I,F,D,O,I,H,F,B,L,K, ,%,P,I,J,3,5, ,*,0,°" 
nom$(12)="A,I,u,N,S,D,F,O,0,8,R,G,%,I,R,E,H,P,9,H,P,9,*,O,°" 
nom$(13)="R,E,k,I,:,R,G,D,H,O,I,F,D,B,O,%,I, ,V,B,P,Z,*,Q,°" 
nom$(14)="T,R,k,:,F,I,O,I,:,X,N,F,B, ,F,B,D,O,P,I,D,F,*,B,°" 
nom$(15)="E, ,k,J,L, ,H,R,F,T,J,D,G,N, ,X,F,J,E,<,<,S,*,F,°" 
nom$(16)="M,C,k,E,Y,K,Y,R,J,S,R,F,?,N,F,G,W,F,P,G,K, ,*,W,°" 
nom$(17)="I,H,k,N,P,A,£,¨,M,£,¨,M,F,G,J,X,W,F,G,J,X,F,*,G,°" 
nom$( 18 )="S,R,k,O,E,R,T,D, ,H,I,J, ,I,E,J,H,Q,P,E,T,H,*,J,°" 
nom$(19)=" ,I,k,V, ,K,E,R,P,9,I,E,Q,R,P,Q, ,E,U,R,P, ,*,H,°" 
nom$(20)="C,S,k,A,H,O,E,R, ,Q,R,Y,U, ,Q,Ë,0,9,U,Q, ,E,*,0,°" 
nom$(21)="O, ,k, ,E,X,E,R,Y, ,Q,E,R,Y, ,Q,E,R,Y,Q,E,R,*,P,°" 
nom$(22)="M,Z,k,L,I, ,E,R,Y,Q,E,R,Y,P,S,E,U,S,%,P,E,Y,*,9,°" 
nom$(23)="T,A,k,E,S,T,S,R,E,T,S,T,R,U,Y,S,R,T,P,U,I,S,*,R,°" 
nom$(24)="O,P,k, ,S,Y,S,R,U,S,R,T,U,S,R,T,U,S,R,T,U,9,*,S,°" 
nom$(25)="I,M,k,S,P,U,5,S,R,¨,0,8,U, ,Q,R,Y,E,0,5,4,5,*,Y,°" 
nom$(26)="S,A,k,O,I,I,R,S,U,S,R,Y,U,2,5,4,3,2,6,5,3,S,*,Y,°" 
nom$(27)=" ,N,k,L,T,R,E,R,Y,Q,E,R,z,I,Q,E,4,Y,Q,E,T,+,*,R,°" 
nom$( 28 )="8,u,k,D,E,S,E,R,Q,Y,P,9,8,Z,E,a,T,8,3,Q, ,8,*,U,°" 
nom$(29)="8,o,k,A,R,G,E,5,Q,E,5,z,Y,8,U,E,R,Z,¨,0,U,3,*,4,°" 
nom$(30)="8,f,k,T,s,D,E,5,Y,3,5,Q,8,Q,Z,R,¨,8,E,5,Q,0,*,9,°" 








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

; on crée un sprite 
For spr=1 To 30 
    Resultat = CreateSprite(spr, 24,24*Len(nom$(spr)),0  ) 
    ;couleur =couleur+8 
    ;If couleur >255 
    ;   couleur=255 
    ;EndIf 
    
    ; While index(spr)<=Len(nom$(spr))+1 
    While StringField(nom$(spr), index(spr), ",")<>"°" 
        index(spr)=index(spr)+1 
        car$ = StringField(nom$(spr), index(spr), ",") 
        y(spr)=y(spr)+24:; pour que le text descende 
        
        StartDrawing(SpriteOutput(spr)) 
        BackColor(0, 0,0 ) 
        c = c +7 :; on eclaircie la couleur !! 
        If c>255:c=0:EndIf 
        If car$ = "°" 
            c = 20 
        EndIf 
        FrontColor(0, c, 0) 
        If car$ = "*" 
            index(spr)=index(spr)+1 
            car$ = StringField(nom$(spr), index(spr), ",") 
            FrontColor(100, c,100 ) 
            
        EndIf 
        ;c=couleur 
        
        Locate(0, y(spr)) 
        DrawingFont(FontID) 
        DrawText(car$) 
        StopDrawing() 
    Wend 
Next spr 
;ceci prepare les colonne qui vont etre solicite pour l'affichage, un "precalcul" en fait 
If EcranX=640 
    col$="54,81,108,135,162,189,216,243,270,297,324,351,378,405,432,459,486,513,540,567,594,621,640,27" 
EndIf 
If EcranX=800 
    col$="54,81,108,135,162,189,216,243,270,297,324,351,378,405,432,459,486,513,540,567,594,621,648,675,702,729,756,783,800,27" 
EndIf 
If EcranX=1024 
    col$="54,81,108,135,162,189,216,243,270,297,324,351,378,405,432,459,486,513,540,567,594,621,648,675,702,729,756,783,810,837,864,891,918,945,972,999,1024,27" 
EndIf 
;*********************************** 
indexc=0 

For ind=1 To 100 
    
    ysprite(ind)=0-Random(900)-900:; on tire une ligne de depart au dessus de l'ecran 
    
    
    If StringField(col$, indexc, ",")<>"27" 
        indexc=indexc+1 
        carcol$ = StringField(col$, indexc, ",") 
        de(ind)=Val(carcol$) 
        If carcol$="" 
            de(ind)=135 
        EndIf 
        
    Else 
        indexc=0 
    EndIf 
    
    
Next ind 
indexc=0 
Repeat 
    
    RandomSeed(Random(255)) 
    
    
    For ind=1 To 100 
        
        ; si le sprite sort en bas 
        If ysprite(ind)>EcranY 
            ysprite(ind)=-Random(1900)-900:; on tire une ligne de depart au dessus de l'ecran 
            
            
        EndIf 
        
        
        spr=spr+1 
        If spr>29 
            spr=1 
        EndIf 
        ;spr=1 
        ; vitesse des sprites 
        ysprite(ind)=ysprite(ind)+Random( 8 )+5 
        
        DisplayTransparentSprite(spr, de(ind), ysprite(ind)) 
        
        
    Next ind 
    
    
    
    
    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é : sam. 29/mai/2004 18:30
par Backup
Merci ! :D

Publié : sam. 29/mai/2004 18:45
par Lukky
Re, bon j'ai attendu et je ne suis pas aveugle ce qui déjà me rassure, donc ça ne fonctionne pas chez moi.

Plus fort !

Pour les deux derniers codes je vois le défilement mais concentré sur une seule colonne !! Le tout à 10cm du bord gauche de mon écran !!

Et bien sur c'est illisible puisque tout s'affiche sur une seule colonne le reste étant noir.

Bizarre tout de même, peut-être ma réso, je suis en 1600x1400.

La j'ai pas le temps, je regarderais le code dès que j'aurais un moment, faites comme si j'avais rien dis, mais ça m'épatoume tout de même !

JL

Publié : sam. 29/mai/2004 18:47
par cederavic
j'ai le meme probleme que lukky, le tout sur une seul colone pour les derniers codes... ma config : Radeon 9600, win 2k

Publié : sam. 29/mai/2004 18:55
par Backup
tenez essaye celui-ci !! il est plus propre pour la gestion des colonnes

attendez je le poste !!!!!


:)