problème starfield
Publié : jeu. 30/mars/2017 17:34
bonjour,
j'ai un petit soucis avec ce code(code du tuto ar-s/djes),j'ai un affichage d'étoile qui reste figé.
pourtant avec le 2éme code je n'ai pas ce soucis.je comprend pas ce qui ne va pas dans le 1er code surtout que c'est quasiment les codes.
j'ai testé avec la version de purebasic 5.60,5.50,5.44lts x86,mais je pense pas que ce soit un soucis de version de purebasic .
merci pour votre aide.
2éme code:
j'ai un petit soucis avec ce code(code du tuto ar-s/djes),j'ai un affichage d'étoile qui reste figé.
pourtant avec le 2éme code je n'ai pas ce soucis.je comprend pas ce qui ne va pas dans le 1er code surtout que c'est quasiment les codes.
j'ai testé avec la version de purebasic 5.60,5.50,5.44lts x86,mais je pense pas que ce soit un soucis de version de purebasic .
merci pour votre aide.
Code : Tout sélectionner
EnableExplicit
InitSprite()
InitKeyboard()
Enumeration
#etoile
#etoile2
#etoile3
EndEnumeration
Enumeration fenetre
#fenetre
EndEnumeration
#largeur_ecran=800
#hauteur_ecran=600
#Nbstar=49
Structure etoile
Xpos.i
Ypos.i
vitesse.i
couleur.b
EndStructure
Global event,i,Letoiles,Hetoiles
Global Dim etoiles.etoile(#Nbstar) ;tableau
Letoiles = 520
Hetoiles = 170
;--procedure etoiles--
Procedure dessine_star()
CreateSprite(#etoile,1,1)
CreateSprite(#etoile2,1,1)
CreateSprite(#etoile3,1,1)
StartDrawing(SpriteOutput(#etoile))
Box(0,0,1,1,$CC99FF)
StopDrawing()
StartDrawing(SpriteOutput(#etoile2))
Box(0,0,1,1,$FFFF00)
StopDrawing()
StartDrawing(SpriteOutput(#etoile3))
Box(0,0,1,1,$FF3399)
StopDrawing()
EndProcedure
Procedure init_etoile()
With etoiles(i)
For i = 0 To #Nbstar
\Xpos = Random(Letoiles,0)
\Ypos = Random(Hetoiles,70)
\vitesse=Random(4.2)
\couleur=Random(2,0)
Next
EndWith
EndProcedure
Procedure affiche_etoile()
For i=0 To #Nbstar
DisplayTransparentSprite(etoiles(i)\couleur,etoiles(i)\Xpos,etoiles(i)\Ypos)
etoiles(i)\Xpos-etoiles(i)\vitesse
If etoiles(i)\Xpos<=150
etoiles(i)\Xpos+Letoiles
EndIf
Next
EndProcedure
OpenWindow(#fenetre,0,0,#largeur_ecran,#hauteur_ecran,"test etoile",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(#fenetre),0,0,#largeur_ecran,#hauteur_ecran)
dessine_star()
init_etoile()
Repeat
Repeat
event = WindowEvent()
Select event
Case #PB_Event_CloseWindow
End
EndSelect
Until event = 0
FlipBuffers()
ClearScreen(RGB(0,0,0))
affiche_etoile()
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape) Or event = #PB_Event_CloseWindow
End
Code : Tout sélectionner
EnableExplicit
InitSprite()
InitKeyboard()
Enumeration
#etoile
#etoile2
#etoile3
EndEnumeration
Enumeration fenetre
#fenetre
EndEnumeration
#largeur_ecran = 800
#hauteur_ecran = 600
#NBR_star = 49
Structure Star
X_star.i
Y_star.i
vitesse.i
couleur.b
EndStructure
Global event,i,Lstar,Hstar
;--tableau etoile--
Global Dim stars.star(#NBR_star)
Lstar = 520
Hstar = 170
;--procedure etoiles--
Procedure dessine_star()
CreateSprite(#etoile,1,1)
CreateSprite(#etoile2,1,1)
CreateSprite(#etoile3,1,1)
StartDrawing(SpriteOutput(#etoile))
Box(0,0,1,1,$00FFFF)
StopDrawing()
StartDrawing(SpriteOutput(#etoile2))
Box(0,0,1,1,$0033FF)
StopDrawing()
StartDrawing(SpriteOutput(#etoile3))
Box(0,0,1,1,$FFCC00)
StopDrawing()
EndProcedure
Procedure initialisation()
With stars(i)
For i = 0 To #nbr_star
\X_star = Random(Lstar,0)
\Y_star = Random(Hstar,70)
\vitesse= Random(4,2)
\couleur = Random(2,0)
Next
EndWith
EndProcedure
Procedure affiche_star()
For i= 0 To #nbr_star
DisplayTransparentSprite(stars(i)\couleur,stars(i)\X_star,stars(i)\Y_star)
stars(i)\X_star - stars(i)\vitesse
If stars(i)\X_star < = 150
stars(i)\X_star + Lstar
EndIf
Next
EndProcedure
OpenWindow(#fenetre,0,0,#largeur_ecran,#hauteur_ecran,"test etoile",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(#fenetre),0,0,#largeur_ecran,#hauteur_ecran)
dessine_star()
initialisation()
Repeat
Repeat
event = WindowEvent()
Select event
Case #PB_Event_CloseWindow
End
EndSelect
Until event = 0
FlipBuffers()
ClearScreen(RGB(0,0,0))
affiche_star()
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape) Or event = #PB_Event_CloseWindow
End