
    d                         d Z ddlmZmZmZmZ ddlmZ ddlm	Z
 d Zd Zd Zdd
Zd Zd Zd Zd Zd Zedk    r e              e             dS dS )a4       turtlegraphics-example-suite:

             tdemo_forest.py

Displays a 'forest' of 3 breadth-first-trees
similar to the one in tree.
For further remarks see tree.py

This example is a 'breadth-first'-rewrite of
a Logo program written by Erich Neuwirth. See
http://homepage.univie.ac.at/erich.neuwirth/
    )Turtle	colormodetracermainloop	randrange)perf_counterc                 *    t          |  | dz             S )N   r   )ns    #lib/python3.11/turtledemo/forest.py	symRandomr      s    aR!    c                 $    fd| D             S )Nc                 d    g | ],\  }}|t                    z   |d t                    z  z  f-S )g)\(?)r   ).0angle
sizefactor	angledistsizedists      r   
<listcomp>zrandomize.<locals>.<listcomp>   sT     ; ; ;*
 Ii(((y22224 ; ; ;r    )
branchlistr   r   s    ``r   	randomizer      s4    ; ; ; ; ;.8; ; ; ;r   c                     t          |          D ]?}|                     t          |                     |                     d|z  |z             @d S )Ng      ?)rangeleftr   forward)tdistancepartsr   is        r   randomfdr#      sY    5\\ , ,	y##$$$			C(NE)++++, ,r   
      c           	   #     K   |dk    rPg }g }t          t          | |                    D ]\  }	}
|	                    ||z             |	                    ddd|z  z
  t	          d          z   z
  dd|z  z
  t	          d          z   d           |	                                 t          |	|||           dV  |
D ]z\  }}|	                    |           |                    |		                                           |                    t          |
||                     |	                    |           {t          |||z  |dz
  ||||          D ]}d V  d S d S )Nr               r   )listzippensizepencolorr   pendownr#   r   appendcloner   righttree)tlistsizelevelwidthfactorbranchlistsr   r   lstbrsr   r   r   r   xs                 r   r3   r3      s      qyy!#eK"8"899 	 	MAzIItk)+++JJsR%Z/)B--?@b5j(9R==8   IIKKKQeY000GGG%/  !zu

17799%%%

9ZHEEFFF	
 c4
?E!G[#+ + 	 	AJJJJ% y 	 	r   c                 D   t          d           |                                  |                     d           |                                  |                     d           |                                  |                     ||           |                                  d S )Nr'   r   Z   )r   resetspeed
hideturtler   penupsetposr/   )r   r;   ys      r   startrD   7   st    cNNNGGIIIGGAJJJLLNNNFF2JJJGGIIIHHQqMMMIIKKKKKr   c                 ~    |                                  t          |dd           t          |gd| dg dg          }|S )N   i0P   皙?)-   gGz?)r   ?gQ?r@   rD   r3   r6   penr   s      r   doit1rQ   A   sJ    NN	#r4seR&I&I&I%JLLAHr   c                 ~    |                                  t          |dd           t          |gd| dddgg          }|S )Niyi~x   rH   rI   rL   rN   rO   s      r   doit2rT   G   sH    NN	#tTseS%J'@&ACCAHr   c                 ~    |                                  t          |dd           t          |gd| dg dg          }|S )N   id   rH   ))rJ   gffffff?)r   g
ףp=
?)rM   rK   rN   rO   s      r   doit3rX   M   sJ    NN	#sCseS%'I'I'I&JLLAHr   c                     t                      } |                                  t          dd           t          dt          d                    }t	          dt          d                    }t          dt          d                    }t                      }	 d}|||fD ]#}	 |                                 #  |dz  }Y !xY w|d	k    rn3t          dd
           t                      }d||z
  z  S )NK   r      r   )undobuffersize   r%   T   r$   zruntime: %.2f sec.)r   htr   rQ   rT   rX   clock__next__)pusr   adonebs          r   mainrh   T   s    ADDFFF
2aLLLaq)))**Aaq)))**Aaq)))**AA1Q 	 	A

	199 1RLLLA1Q3''s   &B;;C__main__N)r$   r%   )__doc__turtler   r   r   r   randomr   timer	   r`   r   r   r#   r3   rD   rQ   rT   rX   rh   __name__r   r   r   <module>ro      s    7 6 6 6 6 6 6 6 6 6 6 6       & & & & & &  ; ; ;
, , ,
   0        ( ( (, zDFFFHJJJJJ r   