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 |
|
|
| Un générateur de plants | |
|
+4RMont Yannick Jicehel papydall 8 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: Un générateur de plants Mar 9 Oct 2012 - 23:20 | |
| Salut tout le monde. Ça fait un bon bout de temps que je n’avais pas eu le temps d’écrire un bout de code graphique. Voilà, c’est fait ; j’ai eu le temps d’écrire mon bout de code qui trace des plants. Rien de vraiment utile ; mais c’est mieux que de ne rien tenter ! Alors, si ça vous tente d’essayer mon bout de code, le voici: - Code:
-
' ********************************* ' * * ' * PLANTS.BAS par PAPYDALL * ' * * ' ********************************* init() : go() : caption 0, "Programme arrêté par l'utilisateur" end ' ******************************************************************************
SUB init() dim ss% : ss% = 20 dim sang,sang1(ss%),xx(ss%),yy(ss%) dim rad,compteur%,xp,yp,xp1,yp1,xpos%,ypos%,x,y,x1,y1,ran1,ran2,s2,zx,zy dim a$,a0$,a1$,b$,st,gen%,k%,s,ang,ang1,an,j%,cl,i% dim xsun%,ysun%,rsun%,titre$ rad = 3.14159265/180 compteur% = 0 : ypos% = 500 xsun% = int(rnd(800)+100) : ysun% = 50 : rsun% = 20 width 0,1000 : height 0, 700 : color 0,10,100,150 : cls titre$ = " *** SI VOUS VOUS ENNUYEZ TROP <ESC> POUR ARRETER" titre$ = titre$ + " *** MAIS VOUS NE PERDREZ RIEN SI VOUS PATIENTER UN PEU !!!" soleil(xsun%,ysun%,rsun%) END_SUB ' ****************************************************************************** SUB soleil(x%,y%,r%) 2d_circle x%,y%,r% : 2d_flood x%,y%,255,255,0 END_SUB ' ******************************************************************************
SUB go() repeat ' cls xpos% = int(rnd(800) +100) B$ = "" : A$ = "" : A0$ = "" : A1$ = "" st = 0 : gen% = mod(compteur%,13)+1 : compteur% = compteur% + 1 caption 0,"NOMBRE DE PLANTS DESSINES : " + str$(compteur%) + string$(5," ") + titre$ select gen% case 1 k% = 6 : s = 1.5 : ang1 = int(rnd(80)+8) A$ = "0" : A1$ = "11" : A0$ = "1##10!+0!-0" case 2 k% = 5 : s = 3 : ang1 = int(rnd(20)+16) A$ = "1" : A1$ = "11-#-1+0+0!+#+1-0-0!" : A0$ = "0" case 3 k% = 6 : s = 1.5 : ang1 = int(rnd(45)+8) A$ = "0" : A1$ = "11" : A0$ = "1#+0!1#-0!0" case 4 k% = 5 : s = 3 : ang1 = int(rnd(10)+10) A$ = "1" : A1$ = "1#+0!#=0!1#+1+-0!#-1-+0!" : A0$ = "0-0++0" case 5 k% = 5 : s = 3 : ang1 = int(rnd(16)+16) A$ = "1" : A1$ = "11-#-1+0+0!+#+1-0-0!" : A0$ = "#0-0++0!" case 6 k% = 4 : s = 2.5 : ang1 = int(rnd(10)+10) A$ = "1" : A1$ = "1#+10!1#-10!1" : A0$ = "#0-0++0!" case 7 k% = 4 : s = 1.75 : ang1 = int(rnd(30)+10) A$ = "1" : A1$ = "1#+1-10!1#-1+10!10" : A0$ = "#0-0++0!" case 8 k% = 4 : s = 3 : ang1 = int(rnd(15)+10) A$ = "1" : A1$ = "11#+1-1+10!#-1+1-10!" : A0$ = "#0-0++0!" case 9 k% = 4 : s = 3.5 : ang1 = 10 A$ = "1" : A1$ = "11#+1+1-#0-0++0!!0#-1-1+#0-0++0!!" : A0$ = "#0-0++0!" case 10 k% = 4 : s = 3.6 : ang1 = int(rnd(5)+10) A$ = "#+1-1!#-1+1!" : A1$ = "1#-1+0!1#+1-0!0" : A0$ = "#0-0++0!" case 11 k% = 3 : s = 2.75 : ang1 = int(rnd(3)+8) A$ = "1" : A1$ = "11#+10-10+10-10!1#-10+10-10+10!0" : A0$ = "0" case 12 k% = 3 : s = 4 : ang1 = int(rnd(60)+20) A$ = "1" : A1$ = "1#-10-10-10!1#+10+10+10!1#10!" : A0$ = "0" case 13 k% = 4 : s = 2 : ang1 = int(rnd(8)+10) A$ = "0" : A1$ = "111" : A0$ = "11#+0!#++0!#+++0!#-0!#--0!#---0!0"
end_select
for j% = 1 to k% cl = len(A$) for i% = 1 to cl if mid$(A$,i%,1) = "1" B$ = B$ + A1$ else if mid$(A$,i%,1)="0" B$ = B$ + A0$ else B$ = B$ + mid$(A$,i%,1) end_if end_if next i% A$ = B$ : B$ = "" ang = 360.0/ang1 : x = 0 : y = 0 : an = 0 : cl = len(A$) for i% = 1 to cl if mid$(A$,i%,1) = "1" ran1 = rnd(1) : ran2 = rnd(1) : s2 = s + 0.5 *(ran1-ran2)* s ran1 = rnd(1) : ran2 = rnd(1) : an = an + 5.0 *(ran1-ran2) sang = an : x1 = s2 * sin(an*rad)+ x : y1 = s2 * cos(an*rad)+ y xp = 2 * x + xpos% : yp = ypos% - 2 * y xp1 = 2 * x1 + xpos% : yp1 = ypos% - 2 * y1 2d_pen_color 0,192,0 : 2d_line xp,yp , xp1,yp1 x = x1 : y = y1 else if mid$(A$,i%,1) = "0" zx = sin(an*rad): zy = cos(an*rad) x1 = zx * s + x : y1 = zy * s + y xp = 2 * x + xpos% : yp = ypos% - 2 * y xp1 = 2 * x1 + xpos% : yp1 = ypos% - 2 * y1 2d_pen_color 255,128,0 : 2d_line xp,yp , xp1,yp1 x1 = 0.25 * zx * s + x : y1 = 0.25 * zy * s + y xp1 = 2 * x1 + xpos% : yp1 = ypos% - 2 * y1 2d_pen_color 255,0,0 : 2d_line xp,yp , xp1,yp1 else if mid$(A$,i%,1) = "-" ran1 = rnd(1) : ran2 = rnd(1) an = an - ang - 10 *(ran1-ran2) : sang = an else if mid$(A$,i%,1)="+" ran1 = rnd(1) : ran2 = rnd(1) an = an + ang + 10 *(ran1-ran2) : sang=an else if mid$(A$,i%,1)="#" st = st + 1 : sang1(st) = sang xx(st) = x : yy(st) = y else if mid$(A$,i%,1)="!" x = xx(st) : y = yy(st) an = sang1(st) : sang = an : st = st-1 end_if end_if end_if end_if end_if end_if next i% next j% until scancode = 27 END_SUB ' **************** F I N ***************' *********************************
Dernière édition par papydall le Ven 12 Oct 2012 - 19:20, édité 2 fois (Raison : Modification de la façon de terminer le programme) | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Un générateur de plants Mar 9 Oct 2012 - 23:51 | |
| J'aime alors je bidouille un peu Je l'ai refais à l'ancienne quand on jouait avec les lignes (en mettant un peu de variation dans les couleurs ) - Code:
-
' ********************************* ' * * ' * PLANTS.BAS par PAPYDALL * ' * * ' ********************************* init() soleil(xsun%,ysun%,rsun%) go() end ' ******************************************************************************
SUB init() dim ss% : ss% = 20 dim sang,sang1(ss%),xx(ss%),yy(ss%) dim rad : rad = 3.141592653579793/180 dim compteur% : compteur% = 0 dim xpos%,ypos% : xpos% = 320 : ypos% = 500 dim xp,yp,xp1,yp1,x,y,x1,y1,ran1,ran2,s2,zx,zy dim a$,a0$,a1$,b$,st,gen%,k%,s,ang,ang1,an,j%,cl,i% dim xsun%,ysun%, rsun% : xsun% = int(rnd(800)+100) : ysun% = 50 : rsun% = 20 dim titre$ : titre$ = " *** SI VOUS VOUS ENNUYEZ TROP <CLICK> POUR ARRETER" titre$ = titre$ + " *** MAIS VOUS NE PERDREZ RIEN SI VOUS PATIENTER UN PEU !!!" width 0,1000 : height 0, 700 : color 0,10,100,150 : cls
END_SUB ' ****************************************************************************** SUB soleil(x%,y%,r%) 2d_circle x%,y%,r% : 2d_flood x%,y%,255,255,0 END_SUB ' ******************************************************************************
SUB go() dim_local cr%,cv%,cb%, exit% exit%=0 repeat cr% = int(rnd(160)) : cv% = int(rnd(140)) : cb%=int(rnd(255)) xpos% = int(rnd(800) +100) B$ = "" : A$ = "" : A0$ = "" : A1$ = "" st = 0 : gen% = mod(compteur%,13)+1 : compteur% = compteur% + 1 caption 0,"NOMBRE DE PLANTS DESSINES : " + str$(compteur%) + string$(5," ") + titre$ select gen% case 1 k% = 6 : s = 1.5 : ang1 = int(rnd(80)+8 ) A$ = "0" : A1$ = "11" : A0$ = "1##10!+0!-0" case 2 k% = 5 : s = 3 : ang1 = int(rnd(20)+16) A$ = "1" : A1$ = "11-#-1+0+0!+#+1-0-0!" : A0$ = "0" case 3 k% = 6 : s = 1.5 : ang1 = int(rnd(45)+8 ) A$ = "0" : A1$ = "11" : A0$ = "1#+0!1#-0!0" case 4 k% = 5 : s = 3 : ang1 = int(rnd(10)+10) A$ = "1" : A1$ = "1#+0!#=0!1#+1+-0!#-1-+0!" : A0$ = "0-0++0" case 5 k% = 5 : s = 3 : ang1 = int(rnd(16)+16) A$ = "1" : A1$ = "11-#-1+0+0!+#+1-0-0!" : A0$ = "#0-0++0!" case 6 k% = 4 : s = 2.5 : ang1 = int(rnd(10)+10) A$ = "1" : A1$ = "1#+10!1#-10!1" : A0$ = "#0-0++0!" case 7 k% = 4 : s = 1.75 : ang1 = int(rnd(30)+10) A$ = "1" : A1$ = "1#+1-10!1#-1+10!10" : A0$ = "#0-0++0!" case 8 k% = 4 : s = 3 : ang1 = int(rnd(15)+10) A$ = "1" : A1$ = "11#+1-1+10!#-1+1-10!" : A0$ = "#0-0++0!" case 9 k% = 4 : s = 3.5 : ang1 = 10 A$ = "1" : A1$ = "11#+1+1-#0-0++0!!0#-1-1+#0-0++0!!" : A0$ = "#0-0++0!" case 10 k% = 4 : s = 3.6 : ang1 = int(rnd(5)+10) A$ = "#+1-1!#-1+1!" : A1$ = "1#-1+0!1#+1-0!0" : A0$ = "#0-0++0!" case 11 k% = 3 : s = 2.75 : ang1 = int(rnd(3)+8 ) A$ = "1" : A1$ = "11#+10-10+10-10!1#-10+10-10+10!0" : A0$ = "0" case 12 k% = 3 : s = 4 : ang1 = int(rnd(60)+20) A$ = "1" : A1$ = "1#-10-10-10!1#+10+10+10!1#10!" : A0$ = "0" case 13 k% = 4 : s = 2 : ang1 = int(rnd(8 )+10) A$ = "0" : A1$ = "111" : A0$ = "11#+0!#++0!#+++0!#-0!#--0!#---0!0" end_select
for j% = 1 to k% cl = len(A$) for i% = 1 to cl if mid$(A$,i%,1) = "1" B$ = B$ + A1$ else if mid$(A$,i%,1)="0" B$ = B$ + A0$ else B$ = B$ + mid$(A$,i%,1) end_if end_if next i% A$ = B$ : B$ = "" ang = 360.0/ang1 : x = 0 : y = 0 : an = 0 : cl = len(A$) for i% = 1 to cl if mid$(A$,i%,1) = "1" ran1 = rnd(1) : ran2 = rnd(1) : s2 = s + 0.5 *(ran1-ran2)* s ran1 = rnd(1) : ran2 = rnd(1) : an = an + 5.0 *(ran1-ran2) sang = an : x1 = s2 * sin(an*rad)+ x : y1 = s2 * cos(an*rad)+ y xp = 2 * x + xpos% : yp = ypos% - 2 * y xp1 = 2 * x1 + xpos% : yp1 = ypos% - 2 * y1 2d_pen_color 0,90+cv%,0 : 2d_line xp,yp , xp1,yp1 x = x1 : y = y1 else if mid$(A$,i%,1) = "0" zx = sin(an*rad): zy = cos(an*rad) x1 = zx * s + x : y1 = zy * s + y xp = 2 * x + xpos% : yp = ypos% - 2 * y xp1 = 2 * x1 + xpos% : yp1 = ypos% - 2 * y1 2d_pen_color 90+cr%,65 + cv%,cb% : 2d_line xp,yp , xp1,yp1 x1 = 0.25 * zx * s + x : y1 = 0.25 * zy * s + y xp1 = 2 * x1 + xpos% : yp1 = ypos% - 2 * y1 2d_pen_color 255,0,0 : 2d_line xp,yp , xp1,yp1 else if mid$(A$,i%,1) = "-" ran1 = rnd(1) : ran2 = rnd(1) an = an - ang - 10 *(ran1-ran2) : sang = an else if mid$(A$,i%,1)="+" ran1 = rnd(1) : ran2 = rnd(1) an = an + ang + 10 *(ran1-ran2) : sang=an else if mid$(A$,i%,1)="#" st = st + 1 : sang1(st) = sang xx(st) = x : yy(st) = y else if mid$(A$,i%,1)="!" x = xx(st) : y = yy(st) an = sang1(st) : sang = an : st = st-1 end_if end_if end_if end_if end_if end_if if scancode<>0 then exit% = 1: exit_for next i% if exit%=1 then exit_for next j% until exit% = 1 END_SUB ' **************** F I N *************** | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Un générateur de plants Mer 10 Oct 2012 - 0:14 | |
| Je savais bien que le « coloriste officiel » du Forum apportera sa touche de couleur ! Bravo Jicehel, j’apprécie !
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 10 Oct 2012 - 2:49 | |
| Bravo Papydall ! Tu viens de résoudre le problème de déforestation en amazonie avec ton prog ... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Un générateur de plants Mer 10 Oct 2012 - 2:59 | |
| OHOHO ! Pas tant que ça ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| | | | RMont
Nombre de messages : 233 Age : 82 Localisation : charente maritime Date d'inscription : 29/12/2008
| Sujet: Re: Un générateur de plants Jeu 11 Oct 2012 - 17:58 | |
| bonjour papydal. question de rmont. je suis sous xp 32 bits. j'ai chargé plants. je le lance et j'ai droit a:(30) Array index owerflow or underflow.ligne 125 . l'écran est bleu avec en haut :"nombres de plants dessines :1 ****si vous etes ect etc ...". et c'est tout, par contre la version de jicehel se lance bien. j'ai un soleil qui apparait mais au bout de 10minutes je ferme car rien d'autre se dessine a l'écran. ensuite je pose cette question ( pour pouvoir progresser ). comment considerer tout les dim contenus dans le s/prg sub init(). variables globales ou locales ?? j'ai lu avec interet ton article sur les variables et dans le 1er paragraphe Variables globales ou locales extait c'est a dire en dehors des s/prg ). pour moi,sub init() est un sous -programme. est-ce que je fais une erreur d'interpretation ? merci d'avance pour ta réponse rmont | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Un générateur de plants Jeu 11 Oct 2012 - 18:37 | |
| Salut RMont
Je ne comprends pas pourquoi le programme ne fonctionne pas chez toi. Recharge-le et exécute-le une autre fois : en principe il doit marcher.
Pour ta question sur les variables déclarées dans SUB init() : Elles sont toutes des variables globales bien qu’elles soient déclarées dans une SUB. Les variables déclarées par DIM sont globales, même si elles sont dans une SUB. Les variables déclarées par DIM_LOCAL sont locales à la procédure dans laquelle elles sont déclarées.
A+
| |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Un générateur de plants Jeu 11 Oct 2012 - 18:39 | |
| Bonjour Rmont ! Je me permet de répondre, je pense que papydall ne m'en voudra pas... Ce qui fait qu'une variable est globale ou locale, c'est avant tout sa déclaration. Coiffé au poteau ! un DIM te définira toujours une variable globaleun DIM_LOCAL sera toujours une variable locale. Elle ne sera "vu" que dans la procédure où elle a été déclarée.. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 11 Oct 2012 - 18:40 | |
| Ce sera plus clair dans la prochaine version complète avec la coloration syntaxique | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Un générateur de plants Jeu 11 Oct 2012 - 18:54 | |
| Salut Nardo26 Bien sûr que je ne t’en veux pas ! Et merci pour avoir répondu à RMont.
Si X pose une question (non personnel) à Y et si Z a la réponse, Z peut apporter la réponse s’il veut bien et il n’est pas obligé de s’excuser. Bon, c’est mon point de vue !
| |
| | | RMont
Nombre de messages : 233 Age : 82 Localisation : charente maritime Date d'inscription : 29/12/2008
| Sujet: Re: Un générateur de plants Jeu 11 Oct 2012 - 19:03 | |
| merci pour vos réponses. maintenant c'est clair,j'ai compris. au sujet de :(30) Array index owerflow or underflow.ligne ...., je viens de m'apercevoir que je rencontre cette erreur assez souvent lors de l'essai des programmes du forum. ma manip:je fais un controle clic gauche ,puis directement je le colle dans l'editeur dans une nouvelle fenetre ,puis je le lance apres avoir regardé le code. j'ai essayé plusieur fois ces manips sans succes. je vais essayé de comprendre. merci encore rmont | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un générateur de plants Jeu 11 Oct 2012 - 19:27 | |
| Tu veux dire control-clic gauche, puis control-C, puis aller dans l'éditeur et faire control-C, n'est-ce pas ? C'est la bonne procédure.
Pour y voir plus clair, ajoute une commande message juste devant la ligne en cause, et utilise-la pour afficher la valeur de toutes les variables en cause, en particulier les indices. Tu verras bien ce qui cloche. | |
| | | Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: Un générateur de plants Jeu 11 Oct 2012 - 19:53 | |
| - Citation :
- au sujet de :(30) Array index owerflow or underflow.ligne ...., je viens de m'apercevoir que je rencontre cette erreur assez souvent lors de l'essai des programmes du forum.
@Rmont: As-tu bien la dernière version ? Car la version V0.9.24i4 corrige ce problème, qui survenait quand un tableau global, donc déclaré par DIM, était utilisé dans un SUB. https://panoramic.1fr1.net/t2562-version-instantanee-du-8-octobre-2012-panoramic-v-0924i4 | |
| | | RMont
Nombre de messages : 233 Age : 82 Localisation : charente maritime Date d'inscription : 29/12/2008
| Sujet: Re: Un générateur de plants Ven 12 Oct 2012 - 12:10 | |
| merci jack pour la réponse. en effet, j'etais sur la version 24i3. je télécharge la nouvelle et ce soir je donnerai le résultat.
| |
| | | RMont
Nombre de messages : 233 Age : 82 Localisation : charente maritime Date d'inscription : 29/12/2008
| Sujet: Re: Un générateur de plants Ven 12 Oct 2012 - 18:53 | |
| bonsoir a tous. maintenant j'ai la bonne version (v09.24i4),mais j'ai quand un petit probleme. au run ,j'ai un plant qui se dessine assez rapidement mais au bout de 10 minutes ,je n'ai toujours qu'un plant . il n'y a pas plantage . comment faire pour savoir ce qui se passe ?
| |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Un générateur de plants Ven 12 Oct 2012 - 19:24 | |
| Salut RMont
Quant on clique n’importe où, le programme termine de tracer le plant en cours et s’arrête. Parfois, on clique sans s'en rendre compte et le programme s'arrête J’ai modifié le programme : on arrête le programme non plus par <CLICK> mais par <ESC> par appui sur la touche Echap, alors, le message : "Programme arrêté par l'utilisateur" s’affiche en caption 0
Tu veux bien rétélécharger le programme modifié et il devrait marcher. Bonne vision !
| |
| | | RMont
Nombre de messages : 233 Age : 82 Localisation : charente maritime Date d'inscription : 29/12/2008
| Sujet: Re: Un générateur de plants Ven 12 Oct 2012 - 19:44 | |
| merci papydall,cela fonctionne maintenant. les plants poussent tres bien. a une prochaine | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Un générateur de plants Ven 12 Oct 2012 - 20:23 | |
| Je suis content pour la poussée de tes plants. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un générateur de plants Ven 12 Oct 2012 - 21:57 | |
| pourtant c'était normal d'avoir un plantage dans un programme qui dessine des plants... bon, je sors | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| | | | Contenu sponsorisé
| Sujet: Re: Un générateur de plants | |
| |
| | | | Un générateur de plants | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |