Page 2 sur 3
Re: Petit cercle "emflammé"
Publié : jeu. 18/août/2022 22:04
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

Re: Petit cercle "emflammé"
Publié : jeu. 18/août/2022 23:15
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.
Re: Petit cercle "emflammé"
Publié : ven. 19/août/2022 10:47
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
Re: Petit cercle "emflammé"
Publié : ven. 19/août/2022 11:37
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.
Vala vala

Re: Petit cercle "emflammé"
Publié : ven. 19/août/2022 21:46
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.
Re: Petit cercle "enflammé"
Publié : lun. 22/août/2022 20:07
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 !

Re: Petit cercle "emflammé"
Publié : jeu. 25/août/2022 0:21
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.
Re: Petit cercle "emflammé"
Publié : jeu. 25/août/2022 6:19
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
mode d'emplois
simple clic = déplace la petit boule de feu
double clic = reset le background
Re: Petit cercle "emflammé"
Publié : mer. 31/août/2022 11:22
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.
Re: Petit cercle "emflammé"
Publié : dim. 04/sept./2022 9:11
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.
Re: Petit cercle "emflammé"
Publié : dim. 04/sept./2022 15:58
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

Re: Petit cercle "emflammé"
Publié : dim. 04/sept./2022 17:10
par Ollivier
Combien il consomme ton matériel ? Moi, je suis à 10W crête.
Re: Petit cercle "emflammé"
Publié : dim. 04/sept./2022 19:48
par SPH
@nemerod : "I", "G" et "E", ça veux dire quoi ?
Et cette fleur, elle représente quoi ?
Re: Petit cercle "emflammé"
Publié : sam. 10/sept./2022 0:12
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
Re: Petit cercle "emflammé"
Publié : dim. 22/janv./2023 8:11
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
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 ??
