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 |
|
|
| Générateur de paysages | |
|
+5Minibug Jean Claude Yannick Jicehel papydall 9 participants | Auteur | Message |
---|
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Générateur de paysages Sam 22 Aoû 2015 - 19:12 | |
| Du Panoramic, rien que du panoramic! - Code:
-
rem ============================================================================ rem Landscape_Generator.bas rem Générateur de paysages rem Par Papydall rem ============================================================================ rem Pour des chaînes de montagnes normales, utiliser startval1 = 256 et startval2 = 2 rem Pour des paysages étranges utiliser startval1 = 500 et startval2 = 6 rem Jouez avec ces paramètres pour essayer des dunes ou des paysages marins rem ============================================================================
Init() Draw_Mountain() caption 20,"!!! *** A D M I R E Z C E P A Y S A G E *** !!!"
end rem ============================================================================ SUB Init() dim w : w = screen_x *.8 dim h : h = screen_y *.8 dim range(4096) dim lowr : lowr = 10 dim col : col = 240 : ' 200 dim delta_col : delta_col = 40 dim rand : rand = rnd(1) dim lowmount : lowmount = 0 dim startval1 : startval1 = 256 : ' 500 dim startval2 : startval2 = 2 : ' 6 dim newval1, newval2, amplitude, frequence, oldx, oldrange dim lacr, lacg, lacb, decrease, a, seed, k,sw if rand < .5 then sw = 0 : else : sw = 1 full_space 0 : color 0,220,180,220 : caption 0,"Générateur de paysages par Papydall" picture 10 : width 10,w : height 10,h : top 10,(height(0) - h)/2 : left 10,(width(0)-w)/2 color 10,200,200,255 : 2d_target_is 10 alpha 20 : top 20,20 : left 20,w/3: font_bold 20 : font_size 20,24 caption 20,"V E U I L L E Z P A T I E N T E R ..... " END_SUB rem ============================================================================ ' Dessiner 6 chaînes de montagnes SUB Draw_Mountain() dim_local n, inc, i for n = 1 to 6 pause 1 : newval1 = startval1 : newval2 = startval2 ' Chaque chaîne de montagnes est produite par 6 fonctions "Bruit de Perlin" ' avec diminution de l'amplitude et croissance de la fréquence for inc = 1 to 6 newval1 = newval1/2 : newval2 = newval2*2 : k = 0 : seed = rnd(1) amplitude = newval1 : frequence = newval2 : oldx = 0 : Perlin() next inc ' Dessiner la chaîne de montagnes oldrange = range(0) : 2d_pen_color col,col,col for i = 0 to w-1 2d_line i-1,oldrange+lowmount,i,range(i)+lowmount 2d_line i-1,oldrange+lowmount,i-1,h oldrange = range(i) next i lowmount = lowmount + lowr : lowr = lowr + 25 ' Pour la chaîne suivante for i = 0 to w-1 : range(i) = 0 : next i ' Couleur plus sombre col = col - delta_col next n ' Dessinez un lac brumeux lacr = col + delta_col : lacg = col + delta_col : lacb = 255 decrease = (lacb-(col + delta_col))/100 for i = 1 to 100 2d_pen_color lacr,lacg,lacb : 2d_line 0,h-i,w,h-i lacb = lacb - decrease next i END_SUB rem ============================================================================ ' Fonction Bruit de Perlin SUB Perlin() dim_local zz,x,pointa,pointb, f,ft,interp, pi : pi = acos(-1) MyRnd() : pointb = a for zz= 1 to frequence pointa = pointb : MyRnd() : pointb = a for x = 0 to 1 step (1/(w/frequence)) if sw = 1 ft = x * pi : f = (1 - cos(ft)) * .5 interp = pointa*(1-f) + pointb*f else interp = pointa*(1-x) + pointb*x end_if range(k) = range(k)+(interp*amplitude) : k = k + 1 next x oldx = oldx + (w/frequence) next zz END_SUB rem ============================================================================ ' Ma valeur aléatoire SUB MyRnd() seed = (221*seed) + 2113 : seed = seed-(INT(seed/10000)*10000) a = seed/10000 END_SUB rem ============================================================================
| |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Générateur de paysages Sam 22 Aoû 2015 - 21:45 | |
| | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 22 Aoû 2015 - 22:43 | |
| Je le verrai bien avec du vert... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Générateur de paysages Dim 23 Aoû 2015 - 8:14 | |
| Tes désirs Ygeronimi sont des ordres. - Code:
-
rem ============================================================================ rem Landscape_Generator.bas rem Générateur de paysages rem Par Papydall rem ============================================================================ rem Pour des chaînes de montagnes normales, utiliser startval1 = 256 et startval2 = 2 rem Pour des paysages étranges utiliser startval1 = 500 et startval2 = 6 rem Jouez avec ces paramètres pour essayer des dunes ou des paysages marins rem ============================================================================
Init() Draw_Mountain() caption 20,"!!! *** A D M I R E Z C E P A Y S A G E *** !!!"
end rem ============================================================================ SUB Init() dim w : w = screen_x *.8 dim h : h = screen_y *.8 dim range(4096) dim lowr : lowr = 10 dim col : col = 240 : ' 200 dim delta_col : delta_col = 48 dim rand : rand = rnd(1) dim lowmount : lowmount = 0 dim startval1 : startval1 = 300 : ' 500 dim startval2 : startval2 = 3 : ' 6 dim newval1, newval2, amplitude, frequence, oldx, oldrange dim lacr, lacg, lacb, decrease, a, seed, k,sw if rand < .5 then sw = 0 : else : sw = 1 full_space 0 : color 0,220,180,220 : caption 0,"Générateur de paysages par Papydall" picture 10 : width 10,w : height 10,h : top 10,(height(0) - h)/2 : left 10,(width(0)-w)/2 color 10,150,200,255 : 2d_target_is 10 alpha 20 : top 20,20 : left 20,w/3: font_bold 20 : font_size 20,24 caption 20,"V E U I L L E Z P A T I E N T E R ..... " END_SUB rem ============================================================================ ' Dessiner 6 chaînes de montagnes SUB Draw_Mountain() dim_local n, inc, i for n = 1 to 6 pause 1 : newval1 = startval1 : newval2 = startval2 ' Chaque chaîne de montagnes est produite par 6 fonctions "Bruit de Perlin" ' avec diminution de l'amplitude et croissance de la fréquence for inc = 1 to 6 newval1 = newval1/2 : newval2 = newval2*2 : k = 0 : seed = rnd(1) amplitude = newval1 : frequence = newval2 : oldx = 0 : Perlin() next inc ' Couleur if n=1 then 2d_pen_color 230,255,240 if n=2 then 2d_pen_color 200,255,200 if n=3 then 2d_pen_color 150,200,150 if n=4 then 2d_pen_color 100,150,100 if n=5 then 2d_pen_color 50,100,50 if n=6 then 2d_pen_color 0,50,0
' Dessiner la chaîne de montagnes oldrange = range(0) for i = 0 to w-1 2d_line i-1,oldrange+lowmount,i,range(i)+lowmount 2d_line i-1,oldrange+lowmount,i-1,h oldrange = range(i) next i lowmount = lowmount + lowr : lowr = lowr + 25 ' Pour la chaîne suivante for i = 0 to w-1 : range(i) = 0 : next i col = col - delta_col next n ' Dessinez un lac brumeux lacr = col + delta_col : lacg = col + delta_col : lacb = 255 decrease = (lacb-(col + delta_col))/100 for i = 1 to 100 2d_pen_color lacr,lacg,lacb : 2d_line 0,h-i,w,h-i lacb = lacb - decrease next i END_SUB rem ============================================================================ ' Fonction Bruit de Perlin SUB Perlin() dim_local zz,x,pointa,pointb, f,ft,interp, pi : pi = acos(-1) MyRnd() : pointb = a for zz= 1 to frequence pointa = pointb : MyRnd() : pointb = a for x = 0 to 1 step (1/(w/frequence)) if sw = 1 ft = x * pi : f = (1 - cos(ft)) * .5 interp = pointa*(1-f) + pointb*f else interp = pointa*(1-x) + pointb*x end_if range(k) = range(k)+(interp*amplitude) : k = k + 1 next x oldx = oldx + (w/frequence) next zz END_SUB rem ============================================================================ ' Ma valeur aléatoire SUB MyRnd() seed = (221*seed) + 2113 : seed = seed-(INT(seed/10000)*10000) a = seed/10000 END_SUB rem ============================================================================ A+ | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Générateur de paysages Dim 23 Aoû 2015 - 8:39 | |
| Bien joué Papydall !
Peut être des idées pour un fond de jeu 2D par exemple... | |
| | | The Gamer
Nombre de messages : 110 Age : 30 Localisation : Toulouse (31) Date d'inscription : 11/05/2010
| Sujet: Re: Générateur de paysages Dim 23 Aoû 2015 - 11:27 | |
| Genial !
Je propose une amélioration que je suis bien incapable de faire: ajouter des sommets enneigés ? | |
| | | jpcr
Nombre de messages : 276 Age : 57 Localisation : Val de Marne (94) Date d'inscription : 06/05/2011
| Sujet: Re: Générateur de paysages Dim 23 Aoû 2015 - 11:53 | |
| | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Générateur de paysages Dim 23 Aoû 2015 - 14:56 | |
| Salut tout le monde et merci pour vos mots encourageants. Les désirs d’Ygeronimi ont été satisfaits par JC qui semble (parfois) oublier que Panoramic dispose (encore) de la structure SELECT … CASE … END_SELECT mieux adaptée qu'une série de IF ... END_IF HIHIHI ! Bon, une petite rangée d’arbres,(d'un autre monde) …. A améliorer ! - Code:
-
rem ============================================================================ rem Landscape_Generator.bas rem Générateur de paysages rem Par Papydall rem ============================================================================ rem Pour des chaînes de montagnes normales, utiliser startval1 = 256 et startval2 = 2 rem Pour des paysages étranges utiliser startval1 = 500 et startval2 = 6 rem Jouez avec ces paramètres pour essayer des dunes ou des paysages marins rem ============================================================================
Init() Draw_Mountain() caption 20,"!!! *** A D M I R E Z C E P A Y S A G E *** !!!"
end rem ============================================================================ SUB Init() dim w : w = screen_x *.8 dim h : h = screen_y *.8 dim range(4096) dim lowr : lowr = 10 dim col : col = 240 : ' 200 dim delta_col : delta_col = 48 dim rand : rand = rnd(1) dim lowmount : lowmount = 0 dim startval1 : startval1 = 300 : ' 500 dim startval2 : startval2 = 3 : ' 6 dim newval1, newval2, amplitude, frequence, oldx, oldrange dim lacr, lacg, lacb, decrease, a, seed, k,sw
if rand < .5 then sw = 0 : else : sw = 1 full_space 0 : color 0,220,180,220 : caption 0,"Générateur de paysages par Papydall" picture 10 : width 10,w : height 10,h : top 10,(height(0) - h)/2 : left 10,(width(0)-w)/2 color 10,150,200,255 : 2d_target_is 10 alpha 20 : top 20,20 : left 20,w/3: font_bold 20 : font_size 20,24 caption 20,"V E U I L L E Z P A T I E N T E R ..... " END_SUB rem ============================================================================ ' Dessiner 6 chaînes de montagnes SUB Draw_Mountain() dim_local n, inc, i for n = 1 to 6 pause 1 : newval1 = startval1 : newval2 = startval2 ' Chaque chaîne de montagnes est produite par 6 fonctions "Bruit de Perlin" ' avec diminution de l'amplitude et croissance de la fréquence for inc = 1 to 6 newval1 = newval1/2 : newval2 = newval2*2 : k = 0 : seed = rnd(1) amplitude = newval1 : frequence = newval2 : oldx = 0 : Perlin() next inc ' Couleur select n case 1 : 2d_pen_color 255,255,255 case 2 : 2d_pen_color 200,200,200 case 3 : 2d_pen_color 150,150,150 case 4 : 2d_pen_color 100,120,100 case 5 : 2d_pen_color 50,100,50 case 6 : 2d_pen_color 0,50,0 end_select
' Dessiner la chaîne de montagnes oldrange = range(0) for i = 0 to w-1 2d_line i-1,oldrange+lowmount,i,range(i)+lowmount 2d_line i-1,oldrange+lowmount,i-1,h oldrange = range(i) next i lowmount = lowmount + lowr : lowr = lowr + 25 ' Pour la chaîne suivante for i = 0 to w-1 : range(i) = 0 : next i col = col - delta_col next n
' Dessinez un lac brumeux lacr = col + delta_col : lacg = col + delta_col : lacb = 255 decrease = (lacb-(col + delta_col))/100 for i = 1 to 100 2d_pen_color lacr,lacg,lacb : 2d_line 0,h-i,w,h-i lacb = lacb - decrease next i ' Dessiner une rangée d'arbres Tree_Range() END_SUB rem ============================================================================ ' Fonction Bruit de Perlin SUB Perlin() dim_local zz,x,pointa,pointb, f,ft,interp, pi : pi = acos(-1) MyRnd() : pointb = a for zz= 1 to frequence pointa = pointb : MyRnd() : pointb = a for x = 0 to 1 step (1/(w/frequence)) if sw = 1 ft = x * pi : f = (1 - cos(ft)) * .5 interp = pointa*(1-f) + pointb*f else interp = pointa*(1-x) + pointb*x end_if range(k) = range(k)+(interp*amplitude) : k = k + 1 next x oldx = oldx + (w/frequence) next zz END_SUB rem ============================================================================ ' Rangée d'arbres ' Deux fonctions "Perlin noise" SUB Tree_Range() dim_local inc,i,uppery,colg colg = 255 : lowr = 380 startval1 = 50 + int(rnd(50)) : startval2 = 128 +int(rnd(256)) newval1 = startval1*2 : newval2 = startval2/2 for inc = 1 to 2 newval1 = newval1/2 : newval2 = newval2*3 k = 0 : seed = rnd(1) : amplitude = newval1 : frequence = newval2 oldx = 0 : Perlin() next inc oldrange = range(0) : 2d_pen_color 30,colg,30 for i = 0 to w uppery = oldrange + h-100 if uppery > h then uppery = h if uppery < 9 then uppery = 9 2d_line i-1,uppery,i-1,h : oldrange = range(i) next i lowmount = lowmount + lowr END_SUB rem ============================================================================ ' Ma valeur aléatoire SUB MyRnd() seed = (221*seed) + 2113 : seed = seed-(INT(seed/10000)*10000) a = seed/10000 END_SUB rem ============================================================================
| |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Générateur de paysages Dim 23 Aoû 2015 - 15:22 | |
| C'est très beau, mais je voudrais aussi des des bouquetins qui gambadent et vaches qui paissent, avec peut-être (si c'est possible) un berger et son chien qui fume la pipe (le berger, pas le chien) Ceci dit, c'est encore la 1ère que je préfère. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Générateur de paysages Dim 23 Aoû 2015 - 17:51 | |
| Hello JL35 (tu es toujours à trente cinq, hein ? pas un de plus, pas un de moins) Jean Claude a bien accompli les désirs d’Ygeronimi, va-il faire autant pour les tiens ? Wait and see ! - JL35 a écrit:
- Ceci dit, c'est encore la 1ère que je préfère.
De qui s’agit-il ? De la vache ou de la pipe? . Car ce sont les seules du genre féminin dans ton message. Perso je n' ni l'une ni l'autre. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Générateur de paysages Dim 23 Aoû 2015 - 18:13 | |
| Eh en disant la 1ère je parlais de l'image, c'est à dire ton image originale en noir et blanc ! En plus, 35 ce n'est pas mon âge mais mon QI comme tu as bien dû deviner | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Générateur de paysages Dim 23 Aoû 2015 - 18:51 | |
| | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Générateur de paysages Dim 23 Aoû 2015 - 20:46 | |
| Je savais bien que j'allais faire des envieux... | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Générateur de paysages Lun 24 Aoû 2015 - 11:20 | |
| interressant! ce n'est pas la premiere fois que je croise l'algorithme bruit de perlin, apparemment on peut faire plein de chose avec | |
| | | Contenu sponsorisé
| Sujet: Re: Générateur de paysages | |
| |
| | | | Générateur de paysages | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |