FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» KGF_dll - nouvelles versions
par Yannick Aujourd'hui à 23:30

» Synedit Parameters
par Yannick Aujourd'hui à 23:26

» Un bug avec USER_EVENT ?
par Yannick Aujourd'hui à 23:16

» Concours de Morpions
par Froggy One Aujourd'hui à 19:30

» Bienvenue à Irikte
par papydall Aujourd'hui à 16:59

» Comment changer le graphisme d’un menu
par Yannick Aujourd'hui à 14:53

» LIBRARY COMMAND FUNCTION
par Jean Claude Aujourd'hui à 13:38

» OBJECT_PARENT NE FONCTIONNE PLUS ?! (RESOLU)
par Jack Aujourd'hui à 12:40

» Menu personalisé avec icones et menu contextuel
par Yannick Aujourd'hui à 12:10

» Doublon - Désolé !
par Laurent (Minibug) Aujourd'hui à 11:55

» Mac OS X sierra
par Irikte Aujourd'hui à 10:01

» Recherche de traductions de mots (@Klaus).
par Pedro Alvarez Hier à 20:34

» Problème avec SendStringAsText.
par Pedro Alvarez Hier à 20:32

» Version instantanée V 0.9.28i10 du 24/06/2017
par Yannick Hier à 18:19

» Mais qui a le focus ?
par Jack Hier à 16:35

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juin 2017
LunMarMerJeuVenSamDim
   1234
567891011
12131415161718
19202122232425
2627282930  
CalendrierCalendrier

Partagez | 
 

  Générateur de paysages

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
papydall

avatar

Nombre de messages : 5387
Age : 66
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Générateur de paysages   Sam 22 Aoû 2015 - 20: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 ============================================================================
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jicehel

avatar

Nombre de messages : 5838
Age : 44
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Générateur de paysages   Sam 22 Aoû 2015 - 22:45

sympa le résultat
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7870
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Sam 22 Aoû 2015 - 23:43

Je le verrai bien avec du vert... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 4953
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Générateur de paysages   Dim 23 Aoû 2015 - 9:14

Tes désirs Ygeronimi sont des ordres. Very Happy

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+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Laurent (Minibug)

avatar

Nombre de messages : 2351
Age : 50
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Générateur de paysages   Dim 23 Aoû 2015 - 9:39

Bien joué Papydall !

Peut être des idées pour un fond de jeu 2D par exemple...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
The Gamer

avatar

Nombre de messages : 110
Age : 23
Localisation : Toulouse (31)
Date d'inscription : 11/05/2010

MessageSujet: Re: Générateur de paysages   Dim 23 Aoû 2015 - 12:27

Genial !

Je propose une amélioration que je suis bien incapable de faire: ajouter des sommets enneigés ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://pierrehardy.pagesperso-orange.fr/
jpcr

avatar

Nombre de messages : 276
Age : 50
Localisation : Val de Marne (94)
Date d'inscription : 06/05/2011

MessageSujet: Re: Générateur de paysages   Dim 23 Aoû 2015 - 12:53

super, j'adore !!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jeanpierre.creis.free.fr/Panoramic/Panoramic.html
papydall

avatar

Nombre de messages : 5387
Age : 66
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Générateur de paysages   Dim 23 Aoû 2015 - 15: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 tongue  tongue  tongue  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 ============================================================================
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5882
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Générateur de paysages   Dim 23 Aoû 2015 - 16: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) Very Happy

Ceci dit, c'est encore la 1ère que je préfère.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5387
Age : 66
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Générateur de paysages   Dim 23 Aoû 2015 - 18: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? Cool.  Car ce sont les seules du genre féminin dans ton message.
Perso je n' I love you ni l'une ni l'autre.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5882
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Générateur de paysages   Dim 23 Aoû 2015 - 19: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 Very Happy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5387
Age : 66
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Générateur de paysages   Dim 23 Aoû 2015 - 19:51

Avec un tel QI, tu me rassures : personne n'est imparfait!

lol! lol! lol!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5882
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Générateur de paysages   Dim 23 Aoû 2015 - 21:46

Je savais bien que j'allais faire des envieux...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
silverman

avatar

Nombre de messages : 453
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: Générateur de paysages   Lun 24 Aoû 2015 - 12: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 cyclops
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Générateur de paysages   

Revenir en haut Aller en bas
 
Générateur de paysages
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Projet] Générateur de Signatures
» Vidéos - générateur de code pour vidéo et player
» modérateur
» Générateur de texte
» Pseudo-objet - Générateur de code

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC 32 bits :: Vos sources, vos utilitaires à partager-
Sauter vers: