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 |
|
|
| Dessin 2d | |
| | Auteur | Message |
---|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Dessin 2d Jeu 6 Oct 2016 - 13:12 | |
| J' ai essayé de reproduire le film de la "Fourmi de Langton" mais le dessin bug. Un spécialiste du dessin 2d pourrait il m' éclairer ? - Code:
-
dim x%,y%,pxd%,pyd%,ax%,ay%,s%,cpt% label clic
height 0,780 width 0,850 caption 0,"Fourmi de Langton" color 0,255,208,200
picture 1 height 1,700 width 1,700 top 1,10 left 1,10 color 1,255,255,255 2d_target_is 1 cursor_cross 1 inactive 1 on_click 1,clic
button 3 caption 3,"Lancer la fourmi" width 3,120 top 3,height(0)-60 left 3,width(0)-(width(3)+20) cursor_point 3 on_click 3,clic
button 2 caption 2,"Placer la fourmi" width 2,120 top 2,height(0)-60 left 2,width(0)-(width(3)+width(2)+25) cursor_point 2 on_click 2,clic
spin 4 top 4,10 left 4,725 width 4,100 min 4,1 max 4,1000000000 position 4,1
end
clic: if number_click = 1 x% = mouse_x_left_down(1) y% = mouse_y_left_down(1) caption 0,str$(x%)+" - "+str$(y%) pxd%=x% pyd%=y% 2d_target_is 1 2d_pen_width 1 2d_pen_color 0,0,0 2d_point x%,y% inactive 1 active 2 return end_if
if number_click = 2 cls active 1 inactive 2 return end_if if number_click = 3 Lancer() return end_if return
sub Lancer() dim_local cpr% inactive 2 inactive 3 cpt%=1 while cpt%<position(4)+1 if x%<1 or x%>700 or y%<1 or y%>700 message "Limite du cadre !" exit_while end_if caption 0,str$(cpt%)+" : "+str$(x%)+" - "+str$(y%) cpr%= color_pixel_red(1,x%,y%) if cpr%=255 Tourner_a_droite() else Tourner_a_gauche() end_if cpt%=cpt%+1 display end_while active 2 active 3 end_sub
sub Tourner_a_gauche() 2d_target_is 1 2d_pen_width 1 2d_pen_color 255,255,255 2d_point x%,y% if pxd%=x% and pyd%=y% : s%=1 : end_if if s%=1 x%=x% y%=y%-1 s%=4 end_if if s%=4 x%=x% y%=y%-1 s%=3 end_if
if S%=3 x%=x%+1 y%=y% s%=2 end_if
if s%=2 x%=x% y%=y%-1 s%=1 end_if end_sub
sub Tourner_a_droite() 2d_target_is 1 2d_pen_width 1 2d_pen_color 0,0,0 2d_point x%,y% if pxd%=x% and pyd%=y% : s%=1 : end_if if s%=1 x%=x%+1 y%=y% s%=2 end_if
if s%=2 x%=x% y%=y%+1 s%=3 end_if
if s%=3 x%=x%-1 y%=y% s%=4 end_if
if s%=4 x%=x% y%=y%-1 s%=1 end_if end_sub | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 6 Oct 2016 - 16:15 | |
| Bon je suis arrivé à un résultat. Mais....pas celui de la fourmi.... - Code:
-
dim x%,y%,ax%,ay%,s%,cpt%,p% label clic
height 0,780 width 0,850 caption 0,"Fourmi de Langton" color 0,255,208,200
picture 1 height 1,700 width 1,700 top 1,10 left 1,10 color 1,255,255,255 2d_target_is 1 cursor_cross 1 inactive 1 on_click 1,clic
button 3 caption 3,"Lancer la fourmi" width 3,120 top 3,height(0)-60 left 3,width(0)-(width(3)+20) cursor_point 3 on_click 3,clic
button 2 caption 2,"Placer la fourmi" width 2,120 top 2,height(0)-60 left 2,width(0)-(width(3)+width(2)+25) cursor_point 2 on_click 2,clic
spin 4 top 4,10 left 4,725 width 4,100 min 4,1 max 4,1000000000 position 4,1
list 5 top 5,35 left 5,725 width 5,100 height 5,300 end
clic: if number_click = 1 x% = mouse_x_left_down(1) y% = mouse_y_left_down(1) 2d_target_is 1 2d_pen_width 1 2d_pen_color 255,255,255 2d_point x%,y% inactive 1 active 2 return end_if
if number_click = 2 cls active 1 inactive 2 clear 5 return end_if if number_click = 3 Lancer() return end_if return
sub Lancer() dim_local cpr% inactive 2 inactive 3
cpt%=0 s%=1 p%=position(4) while cpt%<p%
' compteur de mouvements cpt%=cpt%+1 item_add 5,str$(cpt%)+" : "+str$(x%)+" - "+str$(y%)
' limitation du cadre de dessin if x%<1 or x%>700 or y%<1 or y%>700 message "Limite du cadre !" exit_while end_if ' recup de la couleur de la case de la fourmi cpr%= color_pixel_red(1,x%,y%)
' si la case est blanche if cpr%=255 ' tourne à gauche avance d'une case Tourner_a_droite_plus_un() ' l' ancienne case change de couleur / devient noir 2d_target_is 1 2d_pen_width 1 2d_pen_color 0,0,0 2d_point ax%,ay% end_if
' si la case est noire if cpr%=0 ' tourne à gauche avance d'une case Tourner_a_gauche_plus_un() ' l' ancienne case change de couleur / devient blanche 2d_target_is 1 2d_pen_width 1 2d_pen_color 255,255,255 2d_point ax%,ay% end_if end_while active 2 active 3 end_sub
sub Tourner_a_gauche_plus_un() ax%=x% ay%=y% if s%=1 x%=x%-1 y%=y% s%=4 exit_sub end_if if s%=4 x%=x% y%=y%-1 s%=3 exit_sub end_if
if S%=3 x%=x%+1 y%=y% s%=2 exit_sub end_if
if s%=2 x%=x% y%=y%-1 s%=1 exit_sub end_if end_sub
sub Tourner_a_droite_plus_un() ax%=x% ay%=y% if s%=1 x%=x%+1 y%=y% s%=2 exit_sub end_if
if s%=2 x%=x% y%=y%+1 s%=3 exit_sub end_if
if s%=3 x%=x%-1 y%=y% s%=4 exit_sub end_if
if s%=4 x%=x% y%=y%-1 s%=1 exit_sub end_if end_sub | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Dessin 2d Dim 9 Oct 2016 - 2:21 | |
| une video de la "Fourmi de Langton"Apparemment tu as un pb de rotation - Code:
-
dim s% ' ' 0 ' 3 F 1 ' 2 ' ' rotation vers la droite : ajouter 1 ' rotation vers la gauche : soustraire 1
s%=1 print : print "F regarde ",s%,", rotation vers la gauche" s%=s%-1 rot(s%)
s%=1 print : print "F regarde ",s%,", rotation vers la droite" s%=s%+1 rot(s%)
s%=3 print : print "F regarde ",s%,", rotation vers la droite" s%=s%+1 rot(s%)
s%=3 print : print "F regarde ",s%,", rotation vers la gauche" s%=s%-1 rot(s%)
s%=0 print : print "F regarde ",s%,", rotation vers la droite" s%=s%+1 rot(s%)
s%=0 print : print "F regarde ",s%,", rotation vers la gauche" s%=s%-1 rot(s%)
s%=2 print : print "F regarde ",s%,", rotation vers la gauche" s%=s%-1 rot(s%)
s%=2 print : print "F regarde ",s%,", rotation vers la droite" s%=s%+1 rot(s%)
END ' maintenir une valeur entre 0 et 3: sub rot(valu%) s%=bin_and(valu%,3) print "resultat = ",s% end_sub
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 9 Oct 2016 - 12:09 | |
| Il me semble que c' est bien ce que je fais. Mais je dois surement avoir fait une erreur quelque part puisque je n' ai pas le bon résultat. | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Dessin 2d Lun 10 Oct 2016 - 14:33 | |
| - Code:
-
dim x%,y%,ax%,ay%,s%,cpt%,p% label clic
height 0,780 width 0,850 caption 0,"Fourmi de Langton" color 0,255,208,200
picture 1 height 1,700 width 1,700 top 1,10 left 1,10 color 1,255,255,255 2d_target_is 1 cursor_cross 1 inactive 1 on_click 1,clic
button 3 caption 3,"Lancer la fourmi" width 3,120 top 3,height(0)-60 left 3,width(0)-(width(3)+20) cursor_point 3 on_click 3,clic
button 2 caption 2,"Placer la fourmi" width 2,120 top 2,height(0)-60 left 2,width(0)-(width(3)+width(2)+25) cursor_point 2 on_click 2,clic
spin 4 top 4,10 left 4,725 width 4,100 min 4,1 max 4,1000000000 position 4,1
list 5 top 5,35 left 5,725 width 5,100 height 5,300 s%=1 :' <---------------------------- end
clic: if number_click = 1 x% = mouse_x_left_down(1) y% = mouse_y_left_down(1) 2d_target_is 1 2d_pen_width 1 2d_pen_color 255,255,255 2d_point x%,y% inactive 1 active 2 return end_if
if number_click = 2 cls active 1 inactive 2 clear 5 return end_if
if number_click = 3 Lancer() return end_if return
sub Lancer() dim_local cpr% inactive 2 inactive 3
cpt%=0 ' s%=1 :' <---------------------------- p%=position(4)
while cpt%<p%
' compteur de mouvements cpt%=cpt%+1 item_add 5,str$(cpt%)+" : "+str$(x%)+" - "+str$(y%)
' limitation du cadre de dessin if x%<1 or x%>700 or y%<1 or y%>700 message "Limite du cadre !" exit_while end_if
' recup de la couleur de la case de la fourmi cpr%= color_pixel_red(1,x%,y%)
' si la case est blanche if cpr%=255 ' tourne à gauche avance d'une case ' Tourner_a_droite_plus_un() :' <---------------------------- ' l' ancienne case change de couleur / devient noir 2d_target_is 1 2d_pen_width 1 2d_pen_color 0,0,0 ' 2d_point ax%,ay% :' <---------------------------- 2d_point x%,y% tourner(1) :' <---------------------------- end_if
' si la case est noire if cpr%=0 ' tourne à gauche avance d'une case ' Tourner_a_gauche_plus_un() :' <---------------------------- ' l' ancienne case change de couleur / devient blanche 2d_target_is 1 2d_pen_width 1 2d_pen_color 255,255,255 ' 2d_point ax%,ay% :' <---------------------------- 2d_point x%,y% tourner(0-1) :' <---------------------------- end_if
end_while active 2 active 3 end_sub
sub Tourner_a_gauche_plus_un() ax%=x% ay%=y% if s%=1 x%=x%-1 y%=y% s%=4 exit_sub end_if
if s%=4 x%=x% y%=y%-1 s%=3 exit_sub end_if
if S%=3 x%=x%+1 y%=y% s%=2 exit_sub end_if
if s%=2 x%=x% y%=y%-1 s%=1 exit_sub end_if end_sub
sub Tourner_a_droite_plus_un() ax%=x% ay%=y% if s%=1 x%=x%+1 y%=y% s%=2 exit_sub end_if
if s%=2 x%=x% y%=y%+1 s%=3 exit_sub end_if
if s%=3 x%=x%-1 y%=y% s%=4 exit_sub end_if
if s%=4 x%=x% y%=y%-1 s%=1 exit_sub end_if end_sub
sub tourner(sens%) ax%=x% ay%=y% s%=s%+sens% s%=bin_and(s%,3)
select s% case 0 : y%=y%-1 case 1 : x%=x%+1 case 2 : y%=y%+1 case 3 : x%=x%-1 end_select end_sub
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 10 Oct 2016 - 17:06 | |
| Je vais regarder cela de près. | |
| | | Contenu sponsorisé
| Sujet: Re: Dessin 2d | |
| |
| | | | Dessin 2d | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |