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 |
|
|
| Les routines Tortue | |
|
+4Nardo26 Klaus 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: Re: Les routines Tortue Lun 29 Juin 2015 - 23:34 | |
| Bravo Nardo26. Bien réussi. Le coloriste officiel du forum a boudé la colorisation. Quel dommage ! | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Les routines Tortue Mar 30 Juin 2015 - 0:12 | |
| Normal, avec la récursivité, il est retombé 20 ans en arriere !! à l'époque, il ne maitrisait pas encore les couleurs | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Les routines Tortue Mar 30 Juin 2015 - 1:43 | |
| Hello Papydall ! Suite à mes cogitations, j'en suis arrivé à cette version du flocon de Koch. Comme il n'y a pas de variable locale... C'est beaucoup plus simple ainsi : - Code:
-
rem ============================================================================ SUB Flocon_Koch() dim_local i Position_XY(-200,100 ) : Turn_Right(90) while i < 3 Koch(4) : TURN_Right(120) : i = i + 1 end_while END_SUB
rem ============================================================================ SUB Koch(iterations) IF VARIABLE("iterations")=0 THEN DIM iterations PUSH(iterations) if iterations = 0 forward(5) else Koch(iterations - 1) Turn_Left(60) : Koch(iterations - 1) Turn_right(120) : Koch(iterations - 1) Turn_Left(60) : Koch(iterations - 1) end_if CLR() : POP(0): iterations = POP_RETURN 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: Les routines Tortue Mar 30 Juin 2015 - 3:16 | |
| Et du coup, on peut remettre le paramètre Flocon_Koch(n) - Code:
-
Init_Turtle() Flocon_Koch(4) end rem ============================================================================ SUB Flocon_Koch(n) dim_local i Position_XY(-200,100 ) : Turn_Right(90) while i < 3 Koch(n) : TURN_Right(120) : i = i + 1 end_while END_SUB
rem ============================================================================ SUB Koch(iterations) IF VARIABLE("iterations")=0 THEN DIM iterations PUSH(iterations) if iterations = 0 forward(5) else Koch(iterations - 1) Turn_Left(60) : Koch(iterations - 1) Turn_right(120) : Koch(iterations - 1) Turn_Left(60) : Koch(iterations - 1) end_if CLR() : POP(0): iterations = POP_RETURN END_SUB rem ============================================================================= rem ============================================================================ rem Spécifiques aux traitements récursifs rem ============================================================================ SUB PUSH(v) IF VARIABLE("PILE")=0 DIM PILE: PILE = NUMBER_OBJECTS + 1 : DLIST PILE DIM EXIT_RECURSE : EXIT_RECURSE=0 END_IF ITEM_ADD PILE,v IF INKEY$<>"" THEN EXIT_RECURSE=1:CLEAR PILE: EXIT_SUB WAIT 1 : ' pour éviter de saturer l'UC END_SUB
SUB POP(n) IF VARIABLE("POP_return")=0 THEN DIM POP_return IF COUNT(PILE) > n THEN POP_return=VAL(ITEM_READ$(PILE,COUNT(PILE)-n)) END_SUB
SUB CLR() IF COUNT(PILE)<>0 THEN ITEM_DELETE PILE,COUNT(PILE) END_SUB rem ============================================================================ ' !!!!! LA COMMANDE A NE PAS OUBLIER !!!!! #Include "Include_Turtle.bas" rem =========================== FIN ============================================
| |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Les routines Tortue Mar 30 Juin 2015 - 5:13 | |
| Allez ! En couleur - Code:
-
rem ============================================================================ Init_Turtle() : ' Indispensable ' Votre programme débute ici
Flocon_Koch() Courbe_Dragon(200,10)
caption 0,"terminé" end
rem ============================================================================ SUB Flocon_Koch() dim_local i Position_XY(-200,100 ) : Turn_Right(90) while i < 3 PUSH(4) : Koch() : TURN_Right(120) : i = i + 1 end_while END_SUB
rem ============================================================================ SUB Courbe_Dragon(c,n) Origine():Position_XY(-300,0 ) PUSH(c):PUSH(n):PUSH(1) : Dragon() Origine():Position_XY(400,0 ) : CAP(0) PUSH(c):PUSH(n):PUSH(-1) : Dragon() END_SUB
rem ============================================================================ SUB Koch() IF VARIABLE("iterations")=0 THEN DIM iterations IF EXIT_RECURSE=1 THEN EXIT_SUB POP(0) : iterations = POP_return if iterations = 0 forward(5) else PUSH(iterations - 1) : Koch() Turn_Left(60) : PUSH(iterations - 1) : Koch() Turn_right(120) : PUSH(iterations - 1) : Koch() Turn_Left(60) : PUSH(iterations - 1) : Koch() end_if CLR() : POP(0): iterations = POP_RETURN END_SUB
rem ============================================================================ SUB Dragon() IF VARIABLE("Drag_c")=0 THEN DIM Drag_c,Drag_n,Drag_e IF EXIT_RECURSE=1 THEN EXIT_SUB POP(2): Drag_c = POP_return POP(1): Drag_n = POP_return POP(0): Drag_e = POP_return IF Drag_n>0 PUSH(Drag_c/SQR(2)):PUSH(Drag_n-1):PUSH(1) : Dragon() TG(90*Drag_e) PUSH(Drag_c/SQR(2)):PUSH(Drag_n-1):PUSH(-1): Dragon() ELSE AV(Drag_c) END_IF CLR():CLR():CLR() POP(2):Drag_c = POP_return POP(1):Drag_n = POP_return POP(0):Drag_e = POP_return END_SUB
rem ============================================================================ ' Astuce de Nardo26 SUB PUSH(v) CouleurCrayon(rnd(255),rnd(255),rnd(255)) IF VARIABLE("PILE")=0 DIM PILE: PILE = NUMBER_OBJECTS + 1 : DLIST PILE DIM EXIT_RECURSE : EXIT_RECURSE=0 END_IF ITEM_ADD PILE,v IF INKEY$<>"" THEN EXIT_RECURSE=1:CLEAR PILE: EXIT_SUB WAIT 1 : ' pour éviter de saturer l'UC END_SUB
SUB POP(n) IF VARIABLE("POP_return")=0 THEN DIM POP_return IF COUNT(PILE)<>0 THEN POP_return=VAL(ITEM_READ$(PILE,COUNT(PILE)-n)) END_SUB
SUB CLR() IF COUNT(PILE)<>0 THEN ITEM_DELETE PILE,COUNT(PILE) END_SUB
rem ============================================================================ ' !!!!! LA COMMANDE A NE PAS OUBLIER !!!!! #Include "Include_Turtle.bas" rem =========================== FIN ============================================ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Les routines Tortue Mar 30 Juin 2015 - 5:34 | |
| C'est plus joli encore en couleurs, merci Jean-Claude. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Les routines Tortue Mar 30 Juin 2015 - 8:23 | |
| Vu les températures actuelles, je me suis dit qu'on pouvait transformer le flocon en 3 soleils. - Code:
-
' Solar3 ou comment transformer un flocon en soleils rem ============================================================================ Init_Turtle() : ' Indispensable ' Votre programme débute ici
dim n%,x%,y%,nb%,couleur% x%=50 : y%=0 : nb%=7
couleur%=0 :' mono-color (Jaune) ' couleur%=1 :' multi-color ' couleur%=2 :' ton bleu-vert ' couleur%=3 :' ton bleu-rouge ' couleur%=4 :' ton jaune-vert-rouge
rem ============================================================================ if couleur%<1 then CouleurCrayon(220,220,0) for n%=1 to 3 y%=y%+8 x%=x%-65 if n%=3 then x%=90 : y%=135 : nb%=nb%+1 Flocon_Koch() next n% caption 0,"terminé" end
rem ============================================================================ SUB Flocon_Koch() dim_local i Position_XY(x%,y% ) : Turn_Right(90) while i < nb% PUSH(4) : Koch() : TURN_Right(130) : i = i + 1 end_while END_SUB
rem ============================================================================ SUB Koch() IF VARIABLE("iterations")=0 THEN DIM iterations IF EXIT_RECURSE=1 THEN EXIT_SUB POP(0) : iterations = POP_return if iterations = 0 forward(5) else PUSH(iterations - 1) : Koch() Turn_Left(60) : PUSH(iterations - 1) : Koch() Turn_right(130) : PUSH(iterations - 1) : Koch() Turn_Left(54) : PUSH(iterations - 1) : Koch() end_if CLR() : POP(0): iterations = POP_RETURN END_SUB
rem ============================================================================ ' Astuce de Nardo26 SUB PUSH(v) if couleur%=1 then CouleurCrayon(rnd(255),rnd(255),rnd(255)) if couleur%=2 then CouleurCrayon(rnd(100),rnd(255),rnd(255)) if couleur%=3 then CouleurCrayon(rnd(255),rnd(100),rnd(255)) if couleur%=4 then CouleurCrayon(rnd(255),rnd(255),rnd(100)) IF VARIABLE("PILE")=0 DIM PILE: PILE = NUMBER_OBJECTS + 1 : DLIST PILE DIM EXIT_RECURSE : EXIT_RECURSE=0 END_IF ITEM_ADD PILE,v IF INKEY$<>"" THEN EXIT_RECURSE=1:CLEAR PILE: EXIT_SUB WAIT 1 : ' pour éviter de saturer l'UC END_SUB
SUB POP(n) IF VARIABLE("POP_return")=0 THEN DIM POP_return IF COUNT(PILE)<>0 THEN POP_return=VAL(ITEM_READ$(PILE,COUNT(PILE)-n)) END_SUB
SUB CLR() IF COUNT(PILE)<>0 THEN ITEM_DELETE PILE,COUNT(PILE) END_SUB
rem ============================================================================ ' !!!!! LA COMMANDE A NE PAS OUBLIER !!!!! #Include "Include_Turtle.bas" rem =========================== FIN ============================================ | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Les routines Tortue Mar 30 Juin 2015 - 8:24 | |
| Vraiment sympa toutes ces images ! | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Les routines Tortue Mar 30 Juin 2015 - 10:25 | |
| | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Les routines Tortue Mar 30 Juin 2015 - 10:57 | |
| @Nardo, J'ai fait du bidouillage, j'adore. Avec un peu de temps et d’entêtement on arrive à quelque chose... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Les routines Tortue Mar 30 Juin 2015 - 15:30 | |
| Comme tu te sens bien dans le hamac, je te renvoie tes soleils colorés. - Code:
-
' Solar3 ou comment transformer un flocon en soleils rem ============================================================================ Init_Turtle() : ' Indispensable ' Votre programme débute ici
dim n%,x%,y%,nb% x%=50 : y%=0 : nb%=7 alpha 10 : font_bold 10 : font_size 10,24 : font_color 10,255,0,0
rem ============================================================================ CouleurCrayon(220,220,0) for n%=1 to 3 y%=y%+8 x%=x%-65 if n%=3 then x%=90 : y%=135 : nb%=nb%+1 Flocon_Koch() next n% for n% = 1 to 25 position_XY(x%+10,0) : CO(10*n%,2*n%,5*n%) position_XY(x%-100,100) : CO(0,10*n%,10*n%) position_XY(x%-100,-100) : CO(10*n%,0,10*n%) pause 500 next n% caption 0,"terminé" caption 10," !!! C'est tout pour aujourdh'ui !!!" end
rem ============================================================================ SUB Flocon_Koch() dim_local i Position_XY(x%,y% ) : Turn_Right(90) while i < nb% PUSH(4) : Koch() : TURN_Right(130) : i = i + 1 end_while
END_SUB
rem ============================================================================ SUB Koch() IF VARIABLE("iterations")=0 THEN DIM iterations IF EXIT_RECURSE=1 THEN EXIT_SUB POP(0) : iterations = POP_return if iterations = 0 forward(5) else PUSH(iterations - 1) : Koch() Turn_Left(60) : PUSH(iterations - 1) : Koch() Turn_right(130) : PUSH(iterations - 1) : Koch() Turn_Left(54) : PUSH(iterations - 1) : Koch() end_if CLR() : POP(0): iterations = POP_RETURN END_SUB
rem ============================================================================ ' Astuce de Nardo26 SUB PUSH(v) IF VARIABLE("PILE")=0 DIM PILE: PILE = NUMBER_OBJECTS + 1 : DLIST PILE DIM EXIT_RECURSE : EXIT_RECURSE=0 END_IF ITEM_ADD PILE,v IF INKEY$<>"" THEN EXIT_RECURSE=1:CLEAR PILE: EXIT_SUB WAIT 1 : ' pour éviter de saturer l'UC END_SUB
SUB POP(n) IF VARIABLE("POP_return")=0 THEN DIM POP_return IF COUNT(PILE)<>0 THEN POP_return=VAL(ITEM_READ$(PILE,COUNT(PILE)-n)) END_SUB
SUB CLR() IF COUNT(PILE)<>0 THEN ITEM_DELETE PILE,COUNT(PILE) END_SUB
rem ============================================================================ ' !!!!! LA COMMANDE A NE PAS OUBLIER !!!!! #Include "Include_Turtle.bas" rem =========================== FIN ============================================
| |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Les routines Tortue Mar 30 Juin 2015 - 18:24 | |
| Là, on est plus dans le bidouillage. C'est nettement plus rapide. Bravo Papydall. A+ | |
| | | Contenu sponsorisé
| Sujet: Re: Les routines Tortue | |
| |
| | | | Les routines Tortue | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |