Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Feux d'artifice | |
| | Auteur | Message |
---|
jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Feux d'artifice Mar 29 Mai 2018 - 9:15 | |
| Le 14 juillet est encore loin mais on peut déjà s'y préparer avec ce petit programme pour FBPano - Code:
-
' Feu d'artifice - D'apres le forum FreeBASIC ' ----------------------------------------------------------------------
' written by BasicCoder with improvements by counting_pine 28th May 2018
const Pi = 4 * atn(1) const DtoR = Pi / 180 ' degrees * DtoR = radians const N = 100 const FPS = 30
type SPARK = (px, py, vx, vy, c%, a%, exploding%)
dim sparks<SPARK>(N) dim total%
fb_form 640, 480, "Feu d'artifice... Pressez ESC pour arreter"
randomize timer
fb_animate adr(draw_frame), adr(event_keyboard), , FPS
sub drawSparks()
if total = 0 then exit_sub
dim i%, j%, dx, dy, angle, rr
fb_cls
for i = 0 to total - 1 if i < total - N then i = total - N with sparks(i mod N) if .py < 240 then .exploding = TRUE ' random sparks within circle radius rr fb_pen_color .c for j = 0 to 29 rr = int(rnd * .a) ' gets wider each time angle = int(Rnd * 360) * DtoR dx = cos(angle) * rr dy = sin(angle) * rr fb_pie .px + dx, .py + dy, int(rnd * 2) + 1 next j .px = .px + .vx .py = .py + .vy .vy = .vy + 0.1 ' gravity if .exploding then .a = .a + 1 ' increase width end_with next i end_sub
sub draw_frame(done%)
dim r%, g%, b%
if int(rnd * 50) = 0 then with sparks(total mod N) .a = 2 .px = 320 ' position (px, py) .py = 430 .vx = int(rnd * 5) - 2 ' speed (vx, vy) .vy = -8 .exploding = FALSE hsvtorgb (rnd * 360), 1, 1, r, g, b .c = rgb(r,g,b) ' color end_with total = total + 1 end if
drawSparks() end_sub
sub event_keyboard(event_type%, keycode%, done%) done = (keycode = 27) end sub
| |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Feux d'artifice Mar 29 Mai 2018 - 16:32 | |
| Ce feu d’artifice est beaucoup mieux que le mien. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Feux d'artifice Mar 29 Mai 2018 - 17:51 | |
| Oui c'est un vrai feu d'artifice et très joli. Le tien, Papydall n'était pas si mal ! J'ai passé au moins 2 heures à bidouiller le code pour obtenir un feu d'artifice en plein écran. Cela n'a pas été de la tarte, mais je suis parvenu à un résultat satisfaisant. Voici le code modifié (Pour l'éditeur FB_Pano) - Code:
-
' Feu d'artifice - D'apres le forum FreeBASIC ' ----------------------------------------------------------------------
' written by BasicCoder with improvements by counting_pine 28th May 2018
const Pi = 4 * atn(1) const DtoR = Pi / 180 ' degrees * DtoR = radians const N = 250 ' FPS=30 const FPS = 50
type SPARK = (px, py, vx, vy, c%, a%, exploding%)
dim sparks<SPARK>(N) dim total%
fb_form 1460, 960, "Feu d'artifice... Pressez ESC pour arreter"
randomize timer
fb_animate adr(draw_frame), adr(event_keyboard), , FPS
sub drawSparks()
if total = 0 then exit_sub
dim i%, j%, dx, dy, angle, rr
fb_cls
for i = 0 to total - 1 if i < total - N then i = total - N with sparks(i mod N) if .py < 240 then .exploding = TRUE ' random sparks within circle radius rr fb_pen_color .c for j = 0 to 50 rr = int(rnd * .a) ' gets wider each time angle = int(Rnd * 360) * DtoR dx = cos(angle) * rr dy = sin(angle) * rr fb_pie .px + dx, .py + dy, int(rnd * 1) + 1.3 next j .px = .px + .vx .py = .py + .vy ' .vy = .vy + 0.1 .vy = .vy + 0.08 ' gravity ' if .exploding then .a = .a + 1 ' increase width if .exploding then .a = .a + 1.2 ' increase width end_with next i end_sub
sub draw_frame(done%)
dim r%, g%, b%
if int(rnd * 30) = 0 then with sparks(total mod N) .a = 4
' .px = 320 ' position (px, py) ' .py = 430
.px = 720 ' position (px, py) .py = 800
' .vx = int(rnd * 5) - 2 ' speed (vx, vy) ' .vy = -8
.vx = int(rnd * 10) - 4 ' speed (vx, vy) .vy = -10 .exploding = FALSE hsvtorgb (rnd * 360), 1, 1, r, g, b .c = rgb(r,g,b) ' color end_with total = total + 12 end if
drawSparks() end_sub
sub event_keyboard(event_type%, keycode%, done%) done = (keycode = 27) end sub A+ | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Feux d'artifice Mar 29 Mai 2018 - 17:56 | |
| Il ne reste plus qu'à y mettre du Boum Boum ! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Feux d'artifice Mar 29 Mai 2018 - 18:01 | |
| Oui ce serait sympa ! J'ai conservé le code, un jour il faudra que j'essai de sonoriser la chose. Mais je n'est pas encore tenté de coder avec FB_Pano. En ce moment je n'ai de temps que pour tester et m'amuser à bidouiller. A+ | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Feux d'artifice Mar 29 Mai 2018 - 18:41 | |
| Encore un peu de bidouillage. Je me suis arrangé pour que les explosions ne soit pas toujours à la même hauteur. C'est plus réaliste ! Voici le code modifié (Pour l'éditeur FB_Pano) - Code:
-
' Feu d'artifice - D'apres le forum FreeBASIC ' ----------------------------------------------------------------------
' written by BasicCoder with improvements by counting_pine 28th May 2018
const Pi = 4 * atn(1) const DtoR = Pi / 180 ' degrees * DtoR = radians const N = 250 ' FPS=30 const FPS = 50
type SPARK = (px, py, vx, vy, c%, a%, exploding%)
dim sparks<SPARK>(N) dim total%
fb_form 1460, 960, "Feu d'artifice... Pressez ESC pour arreter"
randomize timer
fb_animate adr(draw_frame), adr(event_keyboard), , FPS
sub drawSparks()
if total = 0 then exit_sub
dim i%, j%, dx, dy, angle, rr, expl%
fb_cls
expl%=800
for i = 0 to total - 1 if i < total - N then i = total - N with sparks(i mod N) expl%=expl% - 50 if expl%<200 then expl%=800 if .py < expl% then .exploding = TRUE ' random sparks within circle radius rr fb_pen_color .c for j = 0 to 50 rr = int(rnd * .a) ' gets wider each time angle = int(Rnd * 360) * DtoR dx = cos(angle) * rr dy = sin(angle) * rr fb_pie .px + dx, .py + dy, int(rnd * 1) + 1.3 next j .px = .px + .vx .py = .py + .vy ' .vy = .vy + 0.1 .vy = .vy + 0.08 ' gravity ' if .exploding then .a = .a + 1 ' increase width if .exploding then .a = .a + 1.2 ' increase width end_with next i end_sub
sub draw_frame(done%)
dim r%, g%, b%
if int(rnd * 30) = 0 then with sparks(total mod N) .a = 4
' .px = 320 ' position (px, py) ' .py = 430
.px = 720 ' position (px, py) .py = 800
' .vx = int(rnd * 5) - 2 ' speed (vx, vy) ' .vy = -8
.vx = int(rnd * 10) - 4 ' speed (vx, vy) .vy = -10 .exploding = FALSE hsvtorgb (rnd * 360), 1, 1, r, g, b .c = rgb(r,g,b) ' color end_with total = total + 12 end if
drawSparks() end_sub
sub event_keyboard(event_type%, keycode%, done%) done = (keycode = 27) end sub | |
| | | Ouf_ca_passe
Nombre de messages : 285 Age : 76 Localisation : Villeneuve d'Ascq (59-Dpt du NORD) France Date d'inscription : 21/12/2015
| Sujet: BOUM ! Mer 30 Mai 2018 - 8:24 | |
| J'ai changé la résolution pour l'adapter à mon écran (1920 x 1080)
And you know what ?
Ca a marché.
Sauf que ce programme prend la main sur ma personnalisation de luminosité d'écran. Mais bon ...
Grand merci aux divers contributeurs et bonne journée. | |
| | | Ouf_ca_passe
Nombre de messages : 285 Age : 76 Localisation : Villeneuve d'Ascq (59-Dpt du NORD) France Date d'inscription : 21/12/2015
| Sujet: Pyramide renversée pour 3d holographique Mer 30 Mai 2018 - 9:06 | |
| Dis monsieur
Pouvez-vous adapter le programme pour mon écran (posé à l'horizontale) pour que je puisse m'émerveiller de l'animation en 3D holographique ?
oui, je sais, j'en demande beaucoup. | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Feux d'artifice Mer 30 Mai 2018 - 9:16 | |
| Merci pour vos tests et vos améliorations ! L'avantage de ce type de programme, c'est qu'ils sont très simples tout en permettant beaucoup d'expérimentations. Pour la sonorisation, D. J. Peters a fait une très belle bibliothèque pour FreeBASIC : https://freebasic.net/forum/viewtopic.php?f=14&t=17740On peut jouer des musiques en fond sonore pendant une animation. ça marche très bien Reste à l'adapter à FBPano... | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Feux d'artifice Mer 30 Mai 2018 - 9:20 | |
| - Ouf_ca_passe a écrit:
Pouvez-vous adapter le programme pour mon écran (posé à l'horizontale) pour que je puisse m'émerveiller de l'animation en 3D holographique ?
Très simple : mettez des pétards dans l'ordinateur et allumez la mèche. Rien ne vaut l'ordinateur analogique ! | |
| | | Contenu sponsorisé
| Sujet: Re: Feux d'artifice | |
| |
| | | | Feux d'artifice | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |