sprite qui disparait
sprite qui disparait
Bonjour,
je continue mes essais de demomaking, j'ai dans mon projet un affichage simultané d'un starfield, un sinusscroll et un logo affiché par DisplayTransparentSprite
j'ai dans mon Enumeration mes constantes concernant les sprites #sprite1 #sprite2 etc ...
j'arrive au bout de mon projet et je constate un truc bizarre, lors de l'affichage du dernier écran avec starfield, sinus et logo le logo à disparu .....
j'ai donc tout repris pour voir où j'ai pu me planter, j'affiche le sinus scroll, en premier, j'ajoute ensuite le starfield et ensuite le logo, ok tout va bien ,
j'avais mis en commentaire les lignes Enumeration des sprites non utilisés je n'en laisse qu'un , celui de mon logo , c'est ok
je décommente une ligne de Enumeration en enlevant le ; devant #sprite2 par exemple, je relance le prog , je n'ai plus que le starfield et le sinus, plus de sprite (qui lui est bien enuméré , initialisé et censé s'afficher avec le DisplayTransparentSprite)
je remets mon ; tout refonctionne !..... une constante énumérée non utilisée bloque l'affichage du sprite ????? pourtant le sinus scroll est affiché avec DisplaytransparentSprite et est tjrs là lui !!!
je peux fournir le snippet des trois effets simultanés si j'ai pas été assez clair .... est ce un bug ? ou c'est de moi que vient le bug (plus probable...)
Merci
je continue mes essais de demomaking, j'ai dans mon projet un affichage simultané d'un starfield, un sinusscroll et un logo affiché par DisplayTransparentSprite
j'ai dans mon Enumeration mes constantes concernant les sprites #sprite1 #sprite2 etc ...
j'arrive au bout de mon projet et je constate un truc bizarre, lors de l'affichage du dernier écran avec starfield, sinus et logo le logo à disparu .....
j'ai donc tout repris pour voir où j'ai pu me planter, j'affiche le sinus scroll, en premier, j'ajoute ensuite le starfield et ensuite le logo, ok tout va bien ,
j'avais mis en commentaire les lignes Enumeration des sprites non utilisés je n'en laisse qu'un , celui de mon logo , c'est ok
je décommente une ligne de Enumeration en enlevant le ; devant #sprite2 par exemple, je relance le prog , je n'ai plus que le starfield et le sinus, plus de sprite (qui lui est bien enuméré , initialisé et censé s'afficher avec le DisplayTransparentSprite)
je remets mon ; tout refonctionne !..... une constante énumérée non utilisée bloque l'affichage du sprite ????? pourtant le sinus scroll est affiché avec DisplaytransparentSprite et est tjrs là lui !!!
je peux fournir le snippet des trois effets simultanés si j'ai pas été assez clair .... est ce un bug ? ou c'est de moi que vient le bug (plus probable...)
Merci
Re: sprite qui disparait
poste des codes ! Faut pas demander si des codes sont nécessaires, quand c'est bizarre, poste un code.
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel
)
Mon site : CeriseCode (Attention Chantier perpétuel

Re: sprite qui disparait
C'est surement un soucis de numérotation de sprite lors de tes affichages.
As tu bien regardé les différentes possibilités d'énumration dans la doc (Enumeration [nom] [<constante> [Step <constante>]] ) ça peut s'avérer pratique et plus lisible qu'une énumération de base. Après ça peut être une histoire de flipbuffer, de clearscreen etc..
Mais pour aller plus loin, du code ! comme le dit Graph100.
On est pas devin mais on peut tout de même dire que probablement tu as raison sur ce point :
As tu bien regardé les différentes possibilités d'énumration dans la doc (Enumeration [nom] [<constante> [Step <constante>]] ) ça peut s'avérer pratique et plus lisible qu'une énumération de base. Après ça peut être une histoire de flipbuffer, de clearscreen etc..
Mais pour aller plus loin, du code ! comme le dit Graph100.
On est pas devin mais on peut tout de même dire que probablement tu as raison sur ce point :
est ce un bug ? ou c'est de moi que vient le bug (plus probable...)

~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: sprite qui disparait

j'ai bien pensé au flipbuffer() mais , c'est vraiment quand je mets un #sprite non utilisé....

merci bien ,
Re: sprite qui disparait
je mets un lien pour le code + les .jpg / png si vous voulez compiler et tester
http://www.sendspace.com/file/69xp9y
http://www.sendspace.com/file/69xp9y
Code : Tout sélectionner
Global xres.w , yres.w , loop.w ,xp.w , yp.w , t.s , tptr.w , sco.b
#ScreenWidth = 800 : #ScreenHeight = 600 : #ScreenDepth = 32
#scrw = 800
#scrh = 600
#centerofscrw = #scrw/2
#centerofscrh = #scrh/2
#scrd = 32
sco = 0
tptr = 1
t.s = " "
t.s = t.s + "SINUS SCROLL JMG@2014 PUREBASIC !!!..............."
t.s = t.s + "POUR DU BASIC ...... "
t.s = t.s + "C'EST PLUTOT FLUIDE ............ "
t.s = t.s + " "
UsePNGImageDecoder()
SSum.w = 8000 ; Amount of Stars
Cspeed.f=22
CameraZ.f=0
Enumeration
;#sprite ; si je décommente cette ligne par exemple , #sprite3 ne s'affiche plus .....
;#sprite2
#sprite3
;#spritetxt
;#spritetxt2
EndEnumeration
Gosub InitStarField
;----------------
InitSprite()
InitKeyboard()
InitMouse()
OpenWindow(0,400,300,#scrw,#scrh,"Preview")
OpenWindowedScreen(WindowID(0),0,0,800,600)
SetFrameRate(60)
LoadSprite(#sprite3, "logobio5.png")
font = LoadSprite (#PB_Any, "1.PNG")
For i = 0 To 29
GrabSprite(i + 1, i * 8, i* 16, 240 - i * 8, 16)
Next
CentreX = (#ScreenWidth - SpriteWidth(1)) / 2
CentreY = (#ScreenHeight - SpriteHeight(1)) / 2
Vitesse.f = 1.7
Angle.f = 0
Amplitude = 280
Pas.f = 3.8
;-------- MainLoop --------
Repeat
Event= WaitWindowEvent(2)
FPS_Counter + 1
If FPS_Counter >= FPS
FPS = FPS_Counter * 1000 / (ElapsedMilliseconds() - FPS_ElapsedTime) ; init FPS
FPS_Counter = 0
FPS_ElapsedTime = ElapsedMilliseconds()
EndIf
For i = 1 To 30
DisplayTransparentSprite(i, CentreX + i * 4, CentreY + Sin((Angle + i * Pas * 2) * 0.0174533) * Amplitude)
Next i ; Go Sine
Angle + Vitesse
Event= WaitWindowEvent(2)
;//////////////////////////////
cco = 0
For cc = 0 To 25
letter = Asc(Mid(t.s, tptr+cc, 1))-31
yCharPos = letter / 10
xCharPos = letter % 10
If xCharPos = -1 : xCharPos = 9
ElseIf xCharPos > 0 : xCharPos = xCharPos - 1
EndIf
ClipSprite(font, xCharPos*32, yCharPos*33, 31, 32)
DisplayTransparentSprite(font, sco+cco, 300+50*Sin((cc+cco+sco+m)/120))
cco = cco + 32
Next
m = m -5
sco = sco -3
;
If sco < -32
tptr = tptr + 1
sco = sco + 32
EndIf
;
If tptr > Len(t.s)-30
tptr = 1
EndIf
;-----------------------------------starfield--------------------------------------------------------------------------------------
StartDrawing(ScreenOutput())
Gosub DrawStarField
DrawText(0, 0, "FPS : " + StrD(FPS, 1)) ;display FPS
StopDrawing()
Gosub MoveCamera
FlipBuffers()
ClearScreen($0)
ExamineKeyboard()
DisplayTransparentSprite(#sprite3,40,350,50) ; Display logo bio
Until KeyboardPushed(#PB_Key_Escape)
End
;--------- Procs Starfield -------------
InitStarField:
; Structure of a star ...
Structure _3DStar
x.f ; X-Coordinate
y.f ; Y-Coordinate
z.f ; Z-Coordinate
EndStructure
; Init Starfield ...
Dim Stars._3DStar(SSum)
For dummy = 0 To SSum
Stars(dummy)\x = Random(10000)-5000
Stars(dummy)\y = Random(10000)-5000
Stars(dummy)\z = 100 + Random(1000)
Next dummy
Return
; ### Move Camera ###
MoveCamera:
If CameraZ>2000
Direction=-1
ElseIf CameraZ<-2000
Direction=1
EndIf
If Direction=1 And Cspeed<10
Cspeed=Cspeed+0.1
ElseIf Direction=-1 And Cspeed>-10
Cspeed=Cspeed-0.1
EndIf
CameraZ=CameraZ+Cspeed
Return
; #### Draw StarField ####
DrawStarField:
For dummy = 0 To SSum
If Stars(dummy)\z<CameraZ
Stars(dummy)\z=CameraZ+1000
ElseIf Stars(dummy)\z>(CameraZ+1000)
Stars(dummy)\z=CameraZ
EndIf
SX = Stars(dummy)\x / (Stars(dummy)\z-CameraZ)*100+#centerofscrw
SY = Stars(dummy)\y / (Stars(dummy)\z-CameraZ)*100+#centerofscrh
If (SX<#scrw) And (SY<#scrh) And (SX>1) And (SY>1)
b.f = 255-(((Stars(dummy)\z)-CameraZ)*(255./1000.))
c=Int(b)
Plot ( SX, SY, RGB(c,c,c))
EndIf
Next dummy
Return
; Epb
Re: sprite qui disparait
Code : Tout sélectionner
For i = 0 To 29
GrabSprite(i + 1, i * 8, i* 16, 240 - i * 8, 16)
Next
Si tu dé-commente, #sprite3 est égale à 1 donc il y a un souci avec les sprites que tu initialise avec la boucle au dessus (ces sprites s'initialisent depuis le numéro 1 à 30 !!)
Tu écrase ton #sprite3 de cette manière.

Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Version de PB : 6.00LTS - 64 bits
Re: sprite qui disparait
raaah zut ! ça c'est censé n'être que pour la fonte de char pas interférer avec les autres sprites
merci !!
merci !!
Re: sprite qui disparait
Très sympa ton starfield, par contre, si je peux me permettre, je ne comprend pas pourquoi tu clip les lettres de ton scroll à chaque tour de boucle.
Tu devrais pouvoir les graber avant la boucle principale une bonne fois pour toute de 32 à 58 par exemple. (ça économiserai du temps)
Mais enfin, ça fonctionne bien comme ça, on a hâte de voir la suite
Tu devrais pouvoir les graber avant la boucle principale une bonne fois pour toute de 32 à 58 par exemple. (ça économiserai du temps)
Mais enfin, ça fonctionne bien comme ça, on a hâte de voir la suite

Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Version de PB : 6.00LTS - 64 bits
Re: sprite qui disparait
le starfield, je l'ai trouvé je ne sais plus où, je l'ai modifié car il n'etait pas comme ça au départ, je fixerais le grab des sprites bientôt , c'est une question de compréhension et d'optimisation,
je suis déjà moins débutant....ça suis son cours
il faut que je time tout ça pour synchro avec les musiques etc ....
je suis déjà moins débutant....ça suis son cours
plutôt le début, c'est censé être la dernière phase, j'ai du stuff avant que je n'ai pas mis pour se concentrer sur la partie qui n'allait pas ,Fig a écrit : on a hâte de voir la suite
il faut que je time tout ça pour synchro avec les musiques etc ....
Re: sprite qui disparait
surement tiré de ce code !jmg49 a écrit :le starfield, je l'ai trouvé je ne sais plus où, .
http://www.purebasic.fr/french/viewtopi ... 25#p159525

Re: sprite qui disparait
certainement, pas de credits pour les auteurs , je ne les ai pas trouvé du moins, et on avait l'autorisation de les utiliser...
j'ai fixé l'id de mon sprite écrasé à 100 , du coup ça passe et y'a de la marge,
j'ai fixé l'id de mon sprite écrasé à 100 , du coup ça passe et y'a de la marge,
Re: sprite qui disparait
les Auteurs sont cités dans le codejmg49 a écrit :certainement, pas de credits pour les auteurs , je ne les ai pas trouvé du moins, et on avait l'autorisation de les utiliser...
seul le Starfield n'avait pas d'auteurs cité
il provient de ce topic
http://forums.purebasic.com/english/vie ... =14&t=6182
une proposition de "starax" , surement tiré du code de "Keph_"
donc c'est l'un des deux l'auteur du StarField
pour les autres codes, le nom des auteurs respectifs, se trouve dans le listing ...
inutile d'etre sur la défensive, je ne t'ai rien reprochéjmg49 a écrit :et on avait l'autorisation de les utiliser...

je répondais juste a ta question :
jmg49 a écrit :le starfield, je l'ai trouvé je ne sais plus où, .
Re: sprite qui disparait
Très sympa.
Par contre mets moins d'alpha sur ton logo "bio", il est vraiment trop sombre ainsi.
Par contre mets moins d'alpha sur ton logo "bio", il est vraiment trop sombre ainsi.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: sprite qui disparait
Pour ton utilisation des sprites de cette manière, le mieux est d'utiliser les index dynamiques : #pb_any
puis de les stocker dans un tableau. De cette manière tu es sur qu'aucun index n'est déjà pris avant.
Évidemment cette méthode implique de bien gérer les sprites, de manière à ne pas avoir de fuite de mémoire
puis de les stocker dans un tableau. De cette manière tu es sur qu'aucun index n'est déjà pris avant.
Évidemment cette méthode implique de bien gérer les sprites, de manière à ne pas avoir de fuite de mémoire
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel
)
Mon site : CeriseCode (Attention Chantier perpétuel
