Petit cercle "emflammé"

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Re: Petit cercle "emflammé"

Message par SPH »

Ollivier a écrit : jeu. 18/août/2022 20:55 @sph

peut-être que des fois tes questions sont un peu bizarres. Je ne te juge pas (dixeris "mytho ou à plaindre" : paies ton choix...).
Mes questions sont peut etre bizzare parce que tu a des reponses bizzares. Vivre sous un escalier avec un ordi et du 12V, ca me laisse plus que perplexe. Alors, moi, SPH, comment formuler une question "normale" !!?

Bref, je n'insisterais plus, désolé pour la gene occasionnée :idea:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Petit cercle "emflammé"

Message par Ollivier »

Petit rappel de la réalité :

Jour -7 : Des projets qui obtiennent validation
Jour 1 : Des magasins vidés
Jour 2 : Une isolation sanitaire par n'importe quel procédé.

Puis des mails successifs qui informent que les projets n'existeront jamais.

Laisse tomber tes seuls deux choix aussi insolites que moqueurs (Réponse 1/2 = Se plaindre; Réponse 2/2 = Être un mythomane).

Ça s'appelle la vie personnelle, et tu n'es pas autorisé à en répéter abusivement un détail passager, à moins que je vois ton adresse mail dans la messagerie privé du forum anglais.
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Petit cercle "emflammé"

Message par GallyHC »

Bonjour;

@SPH > vous êtes tout les deux sur des monologues a deux, donc aucun intérêt pour l'un comme pour l'autre.

@Ollivier > Après ce n'est pas une grande révélation (beaucoup, tout comme moi le savent).

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Re: Petit cercle "emflammé"

Message par SPH »

Ollivier, je n'ai rien contre toi; je tiens à te rassurer. Simplement, j'ai toujours pensé (avant d'avoir un doute récement) qu'a tes dires, tu étais quelqu'un à plaindre. :idea:

Vala vala :P

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Petit cercle "emflammé"

Message par Ollivier »

Mon pseudo c'est Olli sur le fofo anglais. Ça sera mieux de converser en mp sph.

Un petit bonjour à gallyhc.

Si quelqu'un a envie de << prendre le flambeau >> en présentant un petit code, ça sera sûrement intéressant.
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Petit cercle "enflammé"

Message par djes »

threedslider a écrit : dim. 24/juil./2022 14:29 Petite mise à jour, peut être avec cela c'est mieux ? Un peu plus correct comme enflammé je pense ^^

Code : Tout sélectionner

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Created by threedslider 24/07/2022
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

InitSprite()
InitKeyboard()

OpenWindow(1, 0,0,800,600,"Circle as little fire simulation", #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(1),0,0,800,600,0,0,0)
SetFrameRate(30)

Repeat
  ExamineKeyboard()
  event = WindowEvent()
  ClearScreen(RGB(255,200,0))
  
  StartDrawing(ScreenOutput())
  For x = 0 To 3600
    
    move.f  +  1/10000
    
      wave_x.f =  Cos(move-x/200) * 120
      
      wave_y.f =  Sin(move-x/200) * 120
     
      Line( Cos(wave_x+move)*2+wave_x+400, Sin(wave_y)*8+wave_y+300, 1, 1, RGB(255, 0, 0) )
         
  Next
    
  StopDrawing()
  
  Delay(1) : FlipBuffers()
  
Until event = #PB_Event_CloseWindow Or KeyboardPushed(#PB_Key_Escape)
End
Lequel de ces deux codes est mieux ?
Chouette, un nouvel afficionado des sinus (atchoum)

Ollivier> Super ton effet ! :o
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Petit cercle "emflammé"

Message par Ollivier »

Merci djes ! À la base, je voulais un papier vieilli par un algo. - Ça choisit un pixel au hasard
- Ça augmente une ou plusieurs des composantes de la couleur de ce pixel
- Avec la couleur obtenue, ça affiche un trident grâce à line.

Conclusion : beaucoup plus rapide que prévu, le papier s'est mis à brûler.
nemerod
Messages : 40
Inscription : mer. 24/août/2022 0:58

Re: Petit cercle "emflammé"

Message par nemerod »

Bon on va faire plus simple, au moins je sais que tous le monde sera du meme avis

Code : Tout sélectionner

OpenWindow(0,100,100,512,800,"test defo")
CanvasGadget(0,0,0,512,800)
CreateImage(0,512,800,24,0)
Repeat:eee=WindowEvent()
  If eee=0:
    mpoafs1=ElapsedMilliseconds()
    If (mpoafs1-mpoafs2)>=20:mpoafs2=mpoafs1
      fpsm=ElapsedMilliseconds()
      If StartDrawing(CanvasOutput(0))
        If p=2:p=0
          Box(0,0,512,800,0)
          GrabDrawingImage(0,0,0,512,800)
        EndIf
        DrawAlphaImage(ImageID(0),  0,  0,$e0)
        DrawAlphaImage(ImageID(0), -2, -2,$90)
        DrawAlphaImage(ImageID(0),  2, -2,$60)
        DrawingMode($10)
        If p=1
          mx=WindowMouseX(0)-1
          my=WindowMouseY(0)-1
        EndIf
        If lll=1:lll=0
          rx=Random(2)
          ry=Random(2)
        Else:lll+1
        EndIf
        x=mx+rx
        y=my+ry
        c=RGBA($ff,Random(2)<<6,$00,$ff)
        Circle(x,y, 8,c|$ff004000)
        Circle(x,y, 5,  $ff0000ff)
        For a = 0 To 511
          If Random(2)=0
            Line(a,798,2,2,RGBA($ff,Random(2)<<6,$00,$ff))
          Else
            Line(a,798,2,2,$ff000000)
          EndIf
        Next:a=0
        GrabDrawingImage(0,0,0,512,800)
        For a = 0 To 512 Step 2
          If tm=255:tm=0:Else:tm+1:EndIf
          tz=((tm*(512-a))/256)
          For b = 0 To 360 Step 9
            m=3
            If a<128
              m=((100*Sin(Radian(a)))/100)*100
            EndIf
            x=(Cos(Radian(b))*m)+(Sin(Radian(tz*1.40625))*2)
            y=(Sin(Radian(b))*((m+1)/5))+a
            Line(x+256,y+256,1,1,$FFFF008D)
          Next:b=0
        Next:a=0
        fpst1+1
        If fpsb<>fpsa:fpsb=fpsa
          fps1=fpst1:fpst1=0
          fps2=fpst2:fpst2=0
          fps3=fpst3:fpst3=0
          fps4=fpst3:fpst4=0
        EndIf:fpsa=Date()
        DrawText(10,10,RSet(Str(fps1       ),6,"0")+" I",$ff00ffff,$00000000)
        DrawText(10,30,RSet(Str(fps2       ),6,"0")+" G",$ff00ffff,$00000000)
        DrawText(10,50,RSet(Str(fps3       ),6,"0")+" E",$ff00ffff,$00000000)
        DrawText(10,70,RSet(Str(ElapsedMilliseconds()-fpsm),6,"0")+" ms",$ff00ffff,$00000000)
        StopDrawing()
      EndIf
      mpoafs2=mpoafs1
    Else:Delay(1)
    EndIf
  Else:fpst3+1
    Select eee
      Case $201:p=1
      Case $202:p=0
      Case $203:p=2
    EndSelect
  EndIf:fpst2+1
Until eee=$10
Image

mode d'emplois
simple clic = déplace la petit boule de feu
double clic = reset le background
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Petit cercle "emflammé"

Message par Ollivier »

Bonjour Nemerod, ça l'air sympa l'aperçu. Si j'ai un peu de temps, je teste ton code (et celui de threedslider). En tout cas, merci pour cet effort.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Petit cercle "emflammé"

Message par Ollivier »

Code testé : c'est artistique. Mais ça manque un peu de réalisme. Pour la source ponctuelle, c'est réussi, mais, est-ce que ça ne prend pas trop de ressources CPU. Peut-être donne un peu ton parcours de connaissances des librairies pureBasic : as-tu vu les sprites ? la librairie Ogre ? OpenGL ?

En tout cas, merci pour ce partage.
nemerod
Messages : 40
Inscription : mer. 24/août/2022 0:58

Re: Petit cercle "emflammé"

Message par nemerod »

En faite, je ne voulais pas utilisé le GPU, je voulais 100% avec le CPU car quant un de mes code fais un rendu, meme une seul image, c'est sur une machine qui n'a pas de GPU, et n'a meme pas d'interface video

donc soit j'utilise pas les sprite, mais justement, je doit ne pas les utilisé, car je passe par une image et le openscreen ne marche pas et encore moins la version dans la fenêtre, mais rien d’interdit de changé un peu le code, pour l'avoir avec des sprite et un support du GPU

c'est cadeau et gratuit ;)
au moins j'ai donné se que j'avais sous la main, je peu que t'encouragé a modifier le code et de mixé avec d'autre chose :)
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Petit cercle "emflammé"

Message par Ollivier »

Combien il consomme ton matériel ? Moi, je suis à 10W crête.
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Re: Petit cercle "emflammé"

Message par SPH »

@nemerod : "I", "G" et "E", ça veux dire quoi ?

Et cette fleur, elle représente quoi ?

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
nemerod
Messages : 40
Inscription : mer. 24/août/2022 0:58

Re: Petit cercle "emflammé"

Message par nemerod »

le I veux dire le total d'image rendu durant la dernier seconde
le G veux dire le total d'event qu'il a traité durent la dernier seconde
le E veux dire le total d'event qu'il a eu sur la seconde
et le ms c'est le temps qu'il a prise pour faire tout les operation avec le cpu
ensuit la fleur c'est pas une fleur mais un champignon fais en direct par une suite d'operation, en temps normal se sont des operation que tu donne en temps normal a une sorti analogique pour l'avoir sur un oscilloscope
Avatar de l’utilisateur
threedslider
Messages : 452
Inscription : dim. 01/juil./2018 22:38

Re: Petit cercle "emflammé"

Message par threedslider »

Ollivier a écrit : dim. 24/juil./2022 23:07 Pas facile de représenter un élément tel que le feu...

Code : Tout sélectionner

DisableDebugger
InitSprite()
InitKeyboard()
ExamineDesktops()
OpenScreen(DesktopWidth(0), DesktopHeight(0), 32, "")
CreateSprite(0, ScreenWidth() / 4, ScreenHeight() / 4)
Procedure drawAdditivePixel(xArea, yArea, wArea, hArea, ci)
    x = xArea + Random(wArea - 1)
    y = yArea + Random(hArea - 1)
    pc = ci & $FFFFFFFF
    nc = ci >> 32 & $FFFFFFFF
    ic = Point(x, y)
    r = Red(ic)
    g = Green(ic)
    b = Blue(ic)
    pr = Red(pc)
    pg = Green(pc)
    pb = Blue(pc)
    nr = Red(nc)
    ng = Green(nc)
    nb = Blue(nc)
    r + pr - nr
    g + pg - ng
    b + pb - nb
    If r > 255: r = 0: EndIf
    If g > 255: g = 0: EndIf
    If b > 255: b = 0: EndIf
    If r < 0: r = 0: EndIf
    If g < 0: g = 0: EndIf
    If b < 0: b = 0: EndIf
    c = RGB(r, g, b)
    delta0 = 1
    delta1 = 2
    LineXY(x - delta0*2, y - delta0, x, y, c)
    LineXY(x, y, x + delta0, y - delta0, c)
    LineXY(x, y - delta1, x, y, c)
EndProcedure
Procedure drawBox(x, y, w, h, c)
        Box(x, y, w, h, c)
EndProcedure
Procedure updateFloor(sprite, *draw, xScale.D, yScale.D, wScale.D, hScale.D, c, times = 1)
    If StartDrawing(SpriteOutput(sprite) )
        x.I = Int(OutputWidth() * xScale)
        y.I = Int(OutputHeight() * yScale)
        w.I = Int(OutputWidth() * wScale)
        h.I = Int(OutputHeight() * hScale)
        For i = 1 To times
            CallFunctionFast(*draw, x, y, w, h, c)
        Next
        StopDrawing()
    EndIf
EndProcedure
updateFloor(0, @drawBox(), 0.0, 0.0, 1.0, 1.0, RGB($FF, $FF, $00) )
updateFloor(0, @drawAdditivePixel(), 0.0, 0.0, 1.0, 1.0, RGB(2, 0, 1) << 32 | RGB(8, 8, 8), 1 << 15)
ZoomSprite(0, ScreenWidth(), ScreenHeight() )
SpriteQuality(1)
Repeat
    Delay(2)
    ClearScreen(0)
    ExamineKeyboard()
    updateFloor(0, @drawAdditivePixel(), 0.0, 0.0, 1.0, 1.0, RGB(0, 0, 0) << 32 | RGB(1, 1, 1), 1 << 15)
    DisplaySprite(0, 0, 0)
    FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
Cool j'avais pas testé ton code, il est génial merci du partage :)

nemerod a écrit : jeu. 25/août/2022 6:19 Bon on va faire plus simple, au moins je sais que tous le monde sera du meme avis

Code : Tout sélectionner

OpenWindow(0,100,100,512,800,"test defo")
CanvasGadget(0,0,0,512,800)
CreateImage(0,512,800,24,0)
Repeat:eee=WindowEvent()
  If eee=0:
    mpoafs1=ElapsedMilliseconds()
    If (mpoafs1-mpoafs2)>=20:mpoafs2=mpoafs1
      fpsm=ElapsedMilliseconds()
      If StartDrawing(CanvasOutput(0))
        If p=2:p=0
          Box(0,0,512,800,0)
          GrabDrawingImage(0,0,0,512,800)
        EndIf
        DrawAlphaImage(ImageID(0),  0,  0,$e0)
        DrawAlphaImage(ImageID(0), -2, -2,$90)
        DrawAlphaImage(ImageID(0),  2, -2,$60)
        DrawingMode($10)
        If p=1
          mx=WindowMouseX(0)-1
          my=WindowMouseY(0)-1
        EndIf
        If lll=1:lll=0
          rx=Random(2)
          ry=Random(2)
        Else:lll+1
        EndIf
        x=mx+rx
        y=my+ry
        c=RGBA($ff,Random(2)<<6,$00,$ff)
        Circle(x,y, 8,c|$ff004000)
        Circle(x,y, 5,  $ff0000ff)
        For a = 0 To 511
          If Random(2)=0
            Line(a,798,2,2,RGBA($ff,Random(2)<<6,$00,$ff))
          Else
            Line(a,798,2,2,$ff000000)
          EndIf
        Next:a=0
        GrabDrawingImage(0,0,0,512,800)
        For a = 0 To 512 Step 2
          If tm=255:tm=0:Else:tm+1:EndIf
          tz=((tm*(512-a))/256)
          For b = 0 To 360 Step 9
            m=3
            If a<128
              m=((100*Sin(Radian(a)))/100)*100
            EndIf
            x=(Cos(Radian(b))*m)+(Sin(Radian(tz*1.40625))*2)
            y=(Sin(Radian(b))*((m+1)/5))+a
            Line(x+256,y+256,1,1,$FFFF008D)
          Next:b=0
        Next:a=0
        fpst1+1
        If fpsb<>fpsa:fpsb=fpsa
          fps1=fpst1:fpst1=0
          fps2=fpst2:fpst2=0
          fps3=fpst3:fpst3=0
          fps4=fpst3:fpst4=0
        EndIf:fpsa=Date()
        DrawText(10,10,RSet(Str(fps1       ),6,"0")+" I",$ff00ffff,$00000000)
        DrawText(10,30,RSet(Str(fps2       ),6,"0")+" G",$ff00ffff,$00000000)
        DrawText(10,50,RSet(Str(fps3       ),6,"0")+" E",$ff00ffff,$00000000)
        DrawText(10,70,RSet(Str(ElapsedMilliseconds()-fpsm),6,"0")+" ms",$ff00ffff,$00000000)
        StopDrawing()
      EndIf
      mpoafs2=mpoafs1
    Else:Delay(1)
    EndIf
  Else:fpst3+1
    Select eee
      Case $201:p=1
      Case $202:p=0
      Case $203:p=2
    EndSelect
  EndIf:fpst2+1
Until eee=$10
Image

mode d'emplois
simple clic = déplace la petit boule de feu
double clic = reset le background
Ah oué pareil j'avais pas testé celui là, trop cool aussi ^^


Est ce que parmi vous a réussi à faire le feu en OpenGL pur ?? :P
Répondre