Depuis les quelques dernières versions de PureBasic, il y a eu des changements dans les sprites niveau alpha.
Personnellement, je n'y comprend rien du tout.
Voici un code qui affiche 5 grosses billes (qui devraient être rouges) et 5 billes plus petites (qui devraient être vertes). Hors, je ne comprend pas comment régler leurs couleurs. La seule chose qui marche, c'est que la couleur noire est transparente.
Code : Tout sélectionner
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;; debut du code : le 10 novembre 2025
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
InitSprite()
InitKeyboard()
ExamineDesktops()
drx = DesktopWidth(0)
dry = DesktopHeight(0)
OpenScreen(drx,dry,32,"Sprite")
;Création du sprite
CreateSprite(1,drx,dry)
StartDrawing(SpriteOutput(1))
r=Random(55)
v=Random(55)
b=Random(55)
r2=Random(1)*2-1
v2=Random(1)*4-2
b2=Random(1)*6-3
For i=0 To dry
LineXY(0,i,drx,i,RGB(r,v,b))
r+r2
If r>100 Or r<0
r2*-1
r+r2
EndIf
v+v2
If v>100 Or v<0
v2*-1
v+v2
EndIf
b+b2
If b>100 Or b<0
b2*-1
b+b2
EndIf
Next
StopDrawing()
;;;;;;;;;;;
CreateSprite(0,drx,dry,#PB_Sprite_AlphaBlending | #PB_Sprite_Transparent )
StartDrawing(SpriteOutput(0))
DrawingMode( #PB_2DDrawing_AlphaBlend )
For i=1 To 100
a=Random(drx)
b=400+Random(dry)
c=Random(drx)
d=400+Random(dry)
LineXY(a,b,c,d,RGBA(1+Random(254),Random(255),Random(255),255))
LineXY(a,b+1,c,d+1,RGBA(1+Random(254),Random(255),Random(255),255))
Next
LineXY(0,0,60,dry,RGBA(255,255,255,255))
LineXY(drx,0,drx-60,dry,RGBA(255,255,255,255))
LineXY(10,200,500,230,RGBA(255,255,255,255))
LineXY(512,230,800,180,RGBA(255,255,255,255))
LineXY(0,dry-30,drx,dry-30,RGBA(255,255,255,255))
StopDrawing()
;;;;;;;;;;;
CreateSprite(2,11,11,#PB_Sprite_AlphaBlending | #PB_Sprite_Transparent )
StartDrawing(SpriteOutput(2))
DrawingMode(#PB_2DDrawing_Gradient | #PB_2DDrawing_AlphaBlend )
Circle(5,5,5,RGBA(255,0,0,255))
StopDrawing()
;;;;;;;;;;;
StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Gradient | #PB_2DDrawing_AlphaBlend )
Circle(5,7,3,RGBA(0,255,0,255))
StopDrawing()
GrabSprite(3,0,0,11,11, #PB_Sprite_AlphaBlending)
;Affichage du sprite
;DisplayTransparentSprite(0, 0, 0)
;FlipBuffers()
;Delay(2400)
;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;
;ClearScreen(0)
;DisplayTransparentSprite(0, 0, 0)
Dim p.b(drx,dry)
StartDrawing(SpriteOutput(0))
For i=0 To drx-1
For u=0 To dry-1
If Point(i,u)<>0
p(i,u)=1
EndIf
Next
Next
StopDrawing()
TempsDepart.q = ElapsedMilliseconds() ; Récupère la valeur actuelle
; StartDrawing(ScreenOutput())
; For i=0 To 1919
; For u=0 To 1079
; If P(i,u)<>0
; Plot(i,u,RGB(255,255,255))
; EndIf
;
; Next
; Next
; StopDrawing()
DisplayTransparentSprite(0, 0, 0)
TempsEcoule.q = ElapsedMilliseconds()-TempsDepart ; La valeur 'TempsEcoule' devrait être d'environ 1000 millisecondes
; Debug "Temps écoulé : "+Str(TempsEcoule)+" millisecondes"
;FlipBuffers()
;Delay(1000)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; D E B U T ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
cmb_de_bestioles=10
Dim lax(cmb_de_bestioles)
Dim lay(cmb_de_bestioles)
Dim sens(cmb_de_bestioles)
For i=1 To cmb_de_bestioles
lax(i)=Random(500)+400
lay(i)=Random(100)+10
sens(i)=Random(1)*2-1
Next
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;; G O
;;;
Repeat
DisplaySprite(1,0,0)
DisplayTransparentSprite(0, 0, 0)
For u=1 To cmb_de_bestioles
laz.b=0
For i=1 To 3
flag.b=0
For o=-5 To 5
If p(lax(u)+o,lay(u)+1)=0
flag+1
EndIf
Next
If flag=11
lay(u)+1
Else
laz=1:Goto la1
EndIf
Next
;;;
la1:
If laz=1 ; si on est sur du sol
flag2.b=0
escalier.b=0
For o=0 To 10
If p(lax(u)+5*sens(u),lay(u)-o)=0
flag2+1
Else
escalier=o
EndIf
Next
If flag2=11 ; si on peux avancer
lax(u)+sens(u)
Else
If escalier<=1
lax(u)+sens(u)
lay(u)-escalier
Else
sens(u)*-1
EndIf
EndIf
EndIf
If u<6
DisplayTransparentSprite(2, lax(u)-5,lay(u)-10)
Else
DisplayTransparentSprite(3, lax(u)-5,lay(u)-10)
EndIf
Next u
FlipBuffers()
;Delay(1)
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)