[2D] particules

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

[2D] particules

Message par blendman »

salut

savez-vous s'il existe une lib ou des exemples de particules utilisables en 2D ?
Car l'exemple particules, bien que fort sympathique, utilise l'engine3D() et j'aurai aimé savoir s'il existait ce genre de choses en 2D (je sais que je pourrais le faire moi-même mais si ça existe, ça m'évitera de le refaire ;)).

Merci bien :D
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [2D] particules

Message par blendman »

Salut

Je me permets de faire un petit up de ce sujet.

Voilà, j'ai trouvé un exemple plutôt sympa sur le forum anglais pour faire de la neige :
http://www.purebasic.fr/english/viewtop ... t=particle

Je vais faire quelques essais dans quelques temps pour créer ce genre d'effets avec les particules (moteur 2D, et sprite3D, pas avec Ogre et l'engine3D, sinon, j'utiliserai l'exemple particule.pb :)):
- du feu
- de la fumée (très proche)
- des particules qui tournent suivant un cercle elliptique (une ellipse)
- des particules qui volent au grès du vent

Si vous avez des exemples dans ce genre -là avec des sprites3D (ou sprite) n'héistez pas à les poster, ça peut être sympa d'avoir un sujet regroupant les informations comme ça :).

EDIT :
un autre exemple de particules :
http://www.purebasic.fr/english/viewtop ... t=particle

Des exemples de FireWroks :
http://www.purebasic.fr/english/viewtop ... t=particle
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [2D] particules

Message par blendman »

ben alors, ça intéresse personne les particules 2D ? mh ? :D

Allez, comme je suis hyper sympathique, je vous poste deux petits essais de codes que j'ai fait ce matin.

Ils sont sans doute mal codés, n'hésitez pas à partir de ces codes et à les modifier pour obtenir d'autres effets, ou à les corriger si vous voyez des erreurs plus grosses qu'un éléphant :D.

Le sprite que vous pouvez utiliser avec ces codes :
Image

Un feu (avec des sprites3D) :

Code : Tout sélectionner

;**************************************************************
;{  informations
; particule system : Fire
; blendman
; date : 29/04/2011
; pb 4.60
;**************************************************************
;}

;**************************************************************
;{  variable
;**************************************************************
ShowCursor_(1)
Global inscreen=1
Global CheckTime
#FPS_LIMIT = 60
;}

;**************************************************************
;{  structure, array
;**************************************************************
; DirectX9 - merci G-tom
Structure D3DTLVERTEX
   x.f:y.f:z.f
   rhw.f:Color.l
   tu.f:tv.f
EndStructure

Structure PB_DX9Sprite3D
;merci G-rom
   TexRes.i                    ; TexRes
   Vertice.D3DTLVERTEX[4]      ; The 4 vertices for the rectangle sprite
   TmpVertice.D3DTLVERTEX[4]   ; The 4 vertices for the rectangle sprite
   Width.l                     ; width set with ZoomSprite3D()
   Height.l                    ; height set with ZoomSprite3D()
   RealWidth.l
   RealHeight.l
   Angle.f
   Transformed.l
 EndStructure
 
 Structure particule
   id.i
   size.f
   position_x.f
   position_y.f
   life.i
   vitesse.i 
   create.i
   alpha.f
   color.i
 EndStructure
Global Dim particule.particule(0,0)


Procedure SetColor(Sprite3D, Color.l)
; merci G-rom
   Protected *Sprite3D.PB_DX9Sprite3D = IsSprite3D(Sprite3D)
   With *Sprite3D
      \Vertice[0]\Color = Color.l
      \Vertice[1]\Color = Color.l
      \Vertice[2]\Color = Color.l
      \Vertice[3]\Color = Color.l
   EndWith
EndProcedure
;}


;**************************************************************
;{  declare
;**************************************************************
Declare gestion_souris()
Declare main()
Declare createParticleSystem(id.i,pos_x,pos_y,color.i,life.i=30,vitesse.i = 2,randpos.i=3,nb.i=10,size.i=1,alpha.i=50)
Declare drawParticuleSysteme(id.i,nb.i)
;}


;**************************************************************
;{  init
;**************************************************************
If InitSprite() And InitSprite3D() And InitKeyboard()And InitMouse() And UsePNGImageDecoder()
  ;
EndIf
;}


;**************************************************************
;{ openwindow
;**************************************************************
If OpenWindow(0,0,0,800,600,"particule",#PB_Window_ScreenCentered|#PB_Window_MaximizeGadget)
  If OpenWindowedScreen(WindowID(0),0,0,800,600,0,0,0)
  EndIf
EndIf
;}


;**************************************************************
;{  loading
;**************************************************************
LoadSprite(0,"part02.png",#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
CreateSprite3D(0,0)
;}


;**************************************************************
;{  Loop - repeat..
;**************************************************************
Repeat  
  If (ElapsedMilliseconds() > CheckTime + 1000 / #FPS_LIMIT)
    CheckTime = ElapsedMilliseconds() 
    ClearScreen(RGB(125,125,125)) 
    createParticleSystem(0,400,450,RGB(49,155,235),10,2,20,20,3,150)
    ;createParticleSystem(1,400,450,RGB(73,225,177),10,2,20,30,3,50)    
    drawParticuleSysteme(0,20)
    ;drawParticuleSysteme(1,30)
  Else
    Delay(16)
  EndIf
    event = WindowEvent() 
    main() 
    gestion_souris()       
    FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or event = #PB_Event_CloseWindow
End
;}


;**************************************************************
;{ procedures
;**************************************************************

Procedure gestion_souris()
  ; by netmaestro !!
  mx = WindowMouseX(0):my = WindowMouseY(0)
  If inscreen = 1
    If mx> WindowWidth(0)-2 Or my> WindowHeight(0)-2 Or mx<1 Or my<1
      inscreen = 0
      ReleaseMouse(1) ; on libère la souris
    EndIf    
  ElseIf mx <WindowWidth(0)-1 And my < WindowHeight(0)-1 And mx > 0 And my > 0
    ReleaseMouse(0)   
    MouseLocate(mx,my)
    inscreen = 1
  EndIf
EndProcedure

Procedure main()  
  If ExamineMouse()
  EndIf    
  If ExamineKeyboard()
  EndIf    
EndProcedure

Procedure createParticleSystem(id.i,pos_x,pos_y,color.i,life.i=30,vitesse.i = 2,randpos.i=3,nb.i=10,size.i=1,alpha.i=50)
  ReDim particule(id,nb)
  
  For i = 1 To nb
    With particule(id,i)
      If \life < -(40+Random(60)) Or \create =0
        \create = 1
        \id = i
        \size = 1/(1+Random(size))
        \position_x = pos_x + Random(randpos)
        \position_y = pos_y + Random(randpos)/2
        \life = Random(life)
        \vitesse = Random(vitesse)
        \alpha = Random(85)+ alpha
        \color = color
      EndIf      
    EndWith  
  Next i  
EndProcedure


Procedure drawParticuleSysteme(id.i,nb.i)
  For i=1 To nb
    With particule(id,i)
      \life -Random(2)
      If \life > - 10 -Random(40)
        \position_x + Random(\vitesse) - Random(\vitesse)
        \position_y + Random(\vitesse/2) - Random(\vitesse/2)
        
    ElseIf \life <= - Random(10)
      \position_x + Random(\vitesse) - Random(\vitesse)
      ;\position_x + Random(\vitesse/2) - Random(\vitesse/2)
      \position_y - 3*\vitesse
      \alpha -1
      EndIf        
    EndWith
  Next i  
  
  Start3D()
  Sprite3DBlendingMode(5,7);5,7 - 7,2
  For i=1 To nb
    With particule(id,i) 
      ;ZoomSprite3D(0,0.5*SpriteWidth(0)*\size,0.5*SpriteHeight(0)*\size)
      If \alpha >1
        DisplaySprite3D(0,\position_x,\position_y,\alpha);+Random(50))
        ;SetColor(0, RGB(255,125,169)) violet
        SetColor(0, \color) ;violet
        ;ZoomSprite3D(0,SpriteWidth(0),SpriteHeight(0))
      EndIf    
    EndWith
  Next i
  Sprite3DBlendingMode(5,6)
  Stop3D()    
  EndProcedure
  ;}
Des lucioles (idem) :

Code : Tout sélectionner

;**************************************************************
;{  informations
; particule system :
; blendman 2011/04
; souris : netmaestro
; date : 29/04/2011
; pb 4.60
;**************************************************************
;}

;**************************************************************
;{  variable
;**************************************************************
ShowCursor_(1)
Global inscreen=1
Global CheckTime

#FPS_LIMIT = 60
;}


;**************************************************************
;{  structure, array
;**************************************************************
Structure particule
  size.i
  position_x.l
  position_y.l
  life.i
  vitesse.i  
EndStructure

Global Dim particule.particule(0)
;}


;**************************************************************
;{  declare
;**************************************************************
Declare gestion_souris()
Declare main()
Declare createParticleSystem(pos_x,pos_y,life.i=30,vitesse.i = 2,randpos.i=3,nb.i=10,size.i=1)
Declare drawParticuleSysteme(nb.i)
;}


;**************************************************************
;{  init
;**************************************************************
If InitSprite() And InitSprite3D() And InitKeyboard()And InitMouse() And UsePNGImageDecoder()
  ;
EndIf
;}


;**************************************************************
;{ openwindow
;**************************************************************
If OpenWindow(0,0,0,800,600,"particule",#PB_Window_ScreenCentered|#PB_Window_MaximizeGadget)
  If OpenWindowedScreen(WindowID(0),0,0,800,600,0,0,0)
  EndIf
EndIf
;}


;**************************************************************
;{  loading
;**************************************************************
LoadSprite(0,"part02.png",#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
CreateSprite3D(0,0)
;}


;**************************************************************
;{  Loop - repeat..
;**************************************************************
createParticleSystem(300,300,30,1,120,10,15)
Repeat
    If (ElapsedMilliseconds() > CheckTime + 1000 / #FPS_LIMIT)
    CheckTime = ElapsedMilliseconds() 
    ClearScreen(RGB(125,125,125))  
    drawParticuleSysteme(10)  
  Else
    Delay(16)
  EndIf  
    event = WindowEvent() 
    main() 
    gestion_souris()      
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or event = #PB_Event_CloseWindow
End
;}


;**************************************************************
;{ procedures
;**************************************************************

Procedure gestion_souris()
    ; by netmaestro !!
  mx = WindowMouseX(0):my = WindowMouseY(0)
  If inscreen = 1
    If mx> WindowWidth(0)-2 Or my> WindowHeight(0)-2 Or mx<1 Or my<1
      inscreen = 0
      ReleaseMouse(1) ; on libère la souris
    EndIf    
  ElseIf mx <WindowWidth(0)-1 And my < WindowHeight(0)-1 And mx > 0 And my > 0
    ReleaseMouse(0)   
    MouseLocate(mx,my)
    inscreen = 1
  EndIf    
EndProcedure

Procedure main()
  If ExamineMouse()
  EndIf    
  If ExamineKeyboard()
  EndIf    
EndProcedure

Procedure createParticleSystem(pos_x,pos_y,life.i=30,vitesse.i = 2,randpos.i=3,nb.i=10,size.i=1)
  ReDim particule(nb)
  For i = 1 To nb
    With particule(i)
      \size = 1/(1+Random(size))
      \position_x = pos_x + Random(randpos) - Random(randpos)
      \position_y = pos_y + Random(randpos) - Random(randpos)
      \life = life
      \vitesse =vitesse
    EndWith  
  Next i    
EndProcedure

Procedure drawParticuleSysteme(nb.i)
  For i=1 To nb
    With particule(i)
      \life -1
      ;If \life >1
      \position_x + (Random(\vitesse) - Random(\vitesse)) *Random(2)
      \position_y + (Random(\vitesse) - Random(\vitesse)) *Random(2)     
    EndWith
  Next i
    
  Start3D()
  Sprite3DBlendingMode(5,7);5,7 - 7,2
  For i=1 To nb
    With particule(i) 
      ;ZoomSprite3D(0,0.5*SpriteWidth(0)*\size,0.5*SpriteHeight(0)*\size)
      DisplaySprite3D(0,\position_x,\position_y,50);+Random(50))
      ;ZoomSprite3D(0,SpriteWidth(0),SpriteHeight(0))
    EndWith
  Next i
  Sprite3DBlendingMode(5,6)
  Stop3D()  
  EndProcedure
 ;}
Ppour le code Fire, j'ai essayé de créer plusieurs systèmes de particules, mais je n'ai pas réussi à le faire :P.
Si vous avez une idée pour ça, ça m'intéresse ;).

N'hésitez pas à faire des tests, corriger mon code (sans doute pas terrible), ajouter des trucs ou en modifier et poster vos exemples, ce serait vraiment classe un sujet regroupant des codes liés aux particules et effets de ce genre :D.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [2D] particules

Message par falsam »

Hep hep Mister Blendman il est possible d'avoir les images ? sous la forme par exemple

Code : Tout sélectionner

ReceiveHTTPFile("http://data.unionbytes.de/part02.png", GetTemporaryDirectory()+"part02.png")


ou dans un zip :) Merciiiiiii
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [2D] particules

Message par blendman »

heu, ben, c'était dans le post :D

Image

Code : Tout sélectionner

ReceiveHTTPFile("http://blendman.free.fr/game/part02.png", GetTemporaryDirectory()+"part02.png") 
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: [2D] particules

Message par Cool Dji »

Pas mal :D
Je prends dans ma besace :D :D

Merci Blendman
Only PureBasic makes it possible
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [2D] particules

Message par falsam »

blendman a écrit :heu, ben, c'était dans le post :D
Ooopssss :oops:
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [2D] particules

Message par falsam »

Pas mal du tout Blendman :) Les lucioles on dirait une vue de microbes au microscope :p
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [2D] particules

Message par blendman »

Falsam : oui, les lucioles, ça fait microbes c'est vrai.
Je n'ai pas encore réussir réussir à faire un système de particules qui semblent flotter (avec des trajectoires longues, lentes, aléatoires et courbe :)

D'ailleurs, si vous savez comment faire pour créer une sorte de trajectoire courbe, ça m'intéresse :D

ça pourrait servir pour créer un système de particule genre circulaire, ou avec des mouvements courbes ;)
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: [2D] particules

Message par Cool Dji »

Pour faire une trajectoire courbe suivi par un objet : cherche sur le forum courbe de beziers.

il y a quelques exemples assez sympa, j'ai les codes à la maison, si tu trouves pas, je les ressortirai ce soir...
Only PureBasic makes it possible
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [2D] particules

Message par blendman »

oki, j'ai regardé ça :).

Sinon, je me demandais comment on pouvait faire suivre une trajectoire elliptique :P.
Je n'ai pas trouvé d'exemples encore pour ça. Donc, si vous en avez, n'hésitez point bonnes gens :D
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Re: [2D] particules

Message par Huitbit »

Hep !

C'était un de mes premiers post :P !

Code : Tout sélectionner

;cercle, ellipes, sinus, cosinus...
OpenWindow(0, 0, 0, 360,240,  "3 secondes, ça vient!")
StartDrawing(WindowOutput(0))
x = 40                              ;valeur initiale de x égale au rayon du cercle
y = 0                               ;valeur initiale de y
#pas=0.1
  For i = 1 To 240
     x = x - y * #pas                ;calcul de x 
   y = y + x * #pas                  ;calcul de y 
   Plot(x+60,y+160,$0000FF)          ;tracé du cercle
   Plot(1.5 * x+270,y+160,0)         ;tracé d'une ellipse horizontale 
   Plot(x+160,1.5 * y+160,$F0000F)   ;tracé d'une ellipse verticale
   Plot (i+50,y+50,$0000FF)          ;tracé du sinus 
   Plot (i+50, x+50,$00FF00)         ;tracé du cosinus 
  Next i
StopDrawing()    
Delay(3000)  ;affichage de l'image durant trois secondes

  

Particularité : ellipses droites ou inclinées. Toutes les explications là:
http://www.purebasic.fr/french/viewtopi ... lin%C3%A9e

Sinon, tu peux tout simplement utiliser les coordonnées polaires:
Exemple de trajectoire "spéciale"
http://www.purebasic.fr/french/viewtopi ... =engrenage

Un code qui fonctionne avec la 4.60, par contre, je n'y ai pas touché depuis 2006(les commentaires sont de Dobro) !

Code : Tout sélectionner

; *********** initialisation ********* 
x.f = 50          ;variables  x et y qui vont permettrent de calculer xe et ye                              
y.f = 0 
xe.f =0           ;coordonnées xe et ye de l'ellipse 
ye.f=0                              
da.f=0.04          ; pas ou variation de l'angle a 
Xmax.f=4             ;demi axe horizontal de l'ellipse 
Ymax.f=3             ;demi axe vertical de l'ellipse 
cosphi.f=Cos(#PI/4);  cos et sin du déphasage (ici ~pi/4) 
sinphi.f= Sin(#PI/4) 
; ****************************** 


InitMouse () 


; ******** ** pour le sprite ***************** 
InitSprite () 
; *************************************** 



OpenWindow (1, 1,1, 800, 600 , "test" , #PB_Window_SystemMenu) ; on ouvre une fenetre 
OpenWindowedScreen ( WindowID (1) , 0, 0, 800, 600, 1, 1, 1) ; on met un ecran dedans !! 

; *********** on va creer le sprite !! ***************** 
CreateSprite (1,32,32) ; on cree un sprite de 16*16 
StartDrawing ( SpriteOutput (1)) ; on va dessiner dedans un rond jaune ! 
For i= 16 To 1 Step -1
Circle (16,16, i, RGB(163-i*5, 46, 92)) ; le voila le beau rond jaune 
Next i 
StopDrawing () 
; ********* le sprite est termine on va jouer avec !! ****** 
; 


Repeat ; boucle principale 
Delay(1)
Event= WaitWindowEvent () ; on regarde si quelqu'un a cliqué sur la croix pour quitter 

; 
;************************* ton prog ici **************** 
i=i+1 
ExamineMouse () 
If MouseButton (2) ; le bouton de souris droit fait quitter ! 
End 
EndIf 
x = x - y * da               ;calcul de x 
y = y + x * da              ;calcul de y 





;*************************lignes à rajouter*********************************** 
xe=xe-Xmax*y*da                  ;calcul de xe 
ye=ye+Ymax*da*(x*cosphi-y*Sinphi)        ; calcul de ye 
DisplayTransparentSprite (1,3*x+200,5*y+300); affichage du sprite 
DisplayTransparentSprite (1, (xe+500)/1.2,ye+350); affichage du sprite 
DisplayTransparentSprite (1, xe+500,(ye+350)/1.2); affichage du sprite 
DisplayTransparentSprite (1, (xe+500)/1.2,(ye+350)/1.2); affichage du sprite 
;******************************************************************************* 



;FlipBuffers () ; <---- ceci pour voir le dessin se faire +Lent !! 
;ClearScreen (RGB(0,0,0)) ; <--- ceci efface l'ecran !! 
; *************************************************** 

FlipBuffers() ;<--- c'est la place normale pour le flipbuffer 
;ClearScreen (RGB(241, 246, 152)); <--- c'est la place normale pour le clearscreen !! 
Until Event= #PB_Event_CloseWindow  Or i=1200
End
Hasta la vista !
Elevé au MSX !
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: [2D] particules

Message par Cool Dji »

Bon, j'ai essayé de reproduire la démarche de Pippa à l'aide de particles 2D mais ça ne donne rien :( , ça manque de relief ...bon, je sors

Plus sérieusement, j'ai intégré ça dans un scrolling étoilé, ça le fait bien...
Only PureBasic makes it possible
Avatar de l’utilisateur
gildev
Messages : 380
Inscription : mar. 19/juin/2007 10:28
Localisation : Picardie (France)

Re: [2D] particules

Message par gildev »

Très intéressant. Merci blendman. :D
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [2D] particules

Message par blendman »

Huitbit,génial tes 2 codes, c'est exactement ce que je cherchais pour mes sorts (pour mon jeu en 2D iso :)) !

et en plus c'était tout simple, mince :P.

Un grand merci à toi !

EDIT :
J'ai modifié un peu le code de Huitbit (& Dobro) pour créer une spirale :)
C'est classe :

Code : Tout sélectionner

; *********** initialisation *********
x.f = 10         ;variables  x et y qui vont permettent de calculer xe et ye                             
y.f = 0
xe.f =0           ;coordonnées xe et ye de l'ellipse
ye.f=0 
da.f=0.04          ; pas ou variation de l'angle a
Xmax.f=4             ;demi axe horizontal de l'ellipse
Ymax.f=3             ;demi axe vertical de l'ellipse
cosphi.f=Cos(#PI/4);  cos et sin du déphasage (ici ~pi/4)
sinphi.f= Sin(#PI/4)




; ******************************
InitMouse ()
InitKeyboard()

; ******** ** pour le sprite *****************
InitSprite ()
; ***************************************

OpenWindow (1, 1,1, 800, 600 , "test" , #PB_Window_SystemMenu) ; on ouvre une fenetre
OpenWindowedScreen ( WindowID (1) , 0, 0, 800, 600, 1, 1, 1) ; on met un ecran dedans !!

; *********** on va creer le sprite !! *****************
CreateSprite (1,8,8) ; on cree un sprite de 16*16
StartDrawing ( SpriteOutput (1)) ; on va dessiner dedans un rond jaune !
For i= 16 To 1 Step -1
Circle (16,16, i, RGB(163-i*5, 46, 92)) ; le voila le beau rond jaune
Next i
StopDrawing ()

; ********* le sprite est termine on va jouer avec !! ******
;


Repeat ; boucle principale
Delay(1)
Event= WaitWindowEvent () ; on regarde si quelqu'un a cliqué sur la croix pour quitter


;************************* ton prog ici ****************
i=i+1
ExamineMouse ()
ExamineKeyboard()

If MouseButton (2) Or KeyboardPushed(#PB_Key_Escape); le bouton de souris droit fait quitter !
End
EndIf
x = 1.004*(x - y * da)               ;calcul de x
y = (y + x * da)              ;calcul de y

;*************************lignes à rajouter***********************************

xe=xe-Xmax*y*da                  ;calcul de xe
ye=ye+Ymax*da*(x*cosphi-y*Sinphi)        ; calcul de ye
DisplayTransparentSprite (1,2*x+300,y+200); affichage du sprite
;DisplayTransparentSprite (1, (xe+500)/1.2,ye+350); affichage du sprite
;DisplayTransparentSprite (1, xe+500,(ye+350)/1.2); affichage du sprite
;DisplayTransparentSprite (1, (xe+500)/1.2,(ye+350)/1.2); affichage du sprite

;*******************************************************************************
;FlipBuffers () ; <---- ceci pour voir le dessin se faire +Lent !!
;ClearScreen (RGB(0,0,0)) ; <--- ceci efface l'ecran !!
; ***************************************************

FlipBuffers() ;<--- c'est la place normale pour le flipbuffer
;ClearScreen (RGB(125,125,125)); <--- c'est la place normale pour le clearscreen !!
Until Event= #PB_Event_CloseWindow  Or i=1200
End 
Plus sérieusement, j'ai intégré ça dans un scrolling étoilé, ça le fait bien...
tu peux nous montrer ce que ça donne ? :D
Répondre