Display Sprite avec Ombre (1er resultat)
Publié : dim. 12/sept./2004 6:48
voici une procedure qui permet de faire des sprites qui inclu une transparence ainsi qu'une ombre avec dégradé voilà un exemple de sprite

le pb dans mon truc c'est comment faire un truc du genre
"if couleur est de tendance violet" je suis sur qu'il y a une solution qui eviterait ce if avec plein de Or. Si quelqu'un a une idée ... qu'il n'hesite pas !
Mais en attendant voilà le code
A savoir : Soit un sprite 0 qui est le fond et le sprite 600 un sprite temporaire.
No: numero du sprite
X: coordonée X
Y: Coordonée Y
Bon le code est brut il peu surment être optimisé

le pb dans mon truc c'est comment faire un truc du genre
"if couleur est de tendance violet" je suis sur qu'il y a une solution qui eviterait ce if avec plein de Or. Si quelqu'un a une idée ... qu'il n'hesite pas !
Mais en attendant voilà le code
A savoir : Soit un sprite 0 qui est le fond et le sprite 600 un sprite temporaire.
No: numero du sprite
X: coordonée X
Y: Coordonée Y
Bon le code est brut il peu surment être optimisé
Code : Tout sélectionner
Procedure Special(No.l,X,Y)
z=CopySprite(No,600,0)
For v = 0 To SpriteHeight(600)-1
For u = 0 To (SpriteWidth(600) - 1 )
StartDrawing(SpriteOutput(0))
Coul1 = Point(u+X, v+Y)
StopDrawing()
StartDrawing(SpriteOutput(600))
Coul2 = Point(u, v)
r1=Red(Coul1):v1=Green(Coul1):b1=Blue(Coul1)
r2=Red(Coul2):v2=Green(Coul2):b2=Blue(Coul2)
If r2=255 And v2=0 And b2=255 ; si couleur transparente
r3=r2:v3=v2:b3=b2
ElseIf Coul2=RGB(255,255,255) Or Coul2=RGB(255,239,255) Or Coul2=RGB(255,222,247) Or Coul2=RGB(255,206,247) Or Coul2=RGB(255,189,239) Or Coul2=RGB(255,173,239) Or Coul2=RGB(255,156,231) Or Coul2=RGB(255,140,231) Or Coul2=RGB(255,123,222) Or Coul2=RGB(255,107,222) Or Coul2=RGB(255,90,214) Or Coul2=RGB(255,74,214) Or Coul2=RGB(255,57,206) Or Coul2=RGB(255,41,206) Or Coul2=RGB(255,24,198) Or Coul2=RGB(255,8,198) Or Coul2=RGB(198,0,148) Or Coul2=RGB(181,0,132) Or Coul2=RGB(214,0,156) Or Coul2=RGB(165,0,123) Or Coul2=RGB(148,0,107) Or Coul2=RGB(115,0,82) Or Coul2=RGB(99,0,74) Or Coul2=RGB(82,0,57) Or Coul2=RGB(49,0,33) Or Coul2=RGB(66,0,49) ; bon là faut simplifier en gros dégradé de couleur violet
fondu=Int((r2+v2+b2)/3)
fondu=255-fondu-50
If fondu<0:fondu=0:EndIf
r3=Int((r1-fondu))
v3=Int((v1-fondu))
b3=Int((b1-fondu))
Else
r3=r2:v3=v2:b3=b2
EndIf
Plot(u,v,RGB(r3,v3,b3))
StopDrawing()
Next
Next
DisplaySprite(600,X,Y)
EndProcedure