B
    2*™\  ã               @   s–   d Z ddlmZmZmZmZ ddlmZ ddlm	Z
 dd„ Zdd„ Zd	d
„ Zddd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zedkr’eƒ  eƒ  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             C   s   t |  | d ƒS )Né   )r   )Ún© r
   ú<C:\ALexclude\prg\programme\Python37\Lib\turtledemo\forest.pyÚ	symRandom   s    r   c                s   ‡ ‡fdd„| D ƒS )Nc                s,   g | ]$\}}|t ˆ ƒ |d t ˆƒ  f‘qS )g)\Âõ(ð?)r   )Ú.0ÚangleÚ
sizefactor)Ú	angledistÚsizedistr
   r   ú
<listcomp>   s   zrandomize.<locals>.<listcomp>r
   )Ú
branchlistr   r   r
   )r   r   r   Ú	randomize   s    r   c             C   s6   x0t |ƒD ]$}|  t|ƒ¡ |  d| | ¡ q
W d S )Ng      ð?)ÚrangeÚleftr   Zforward)ÚtZdistanceÚpartsr   Úir
   r
   r   Úrandomfd   s    r   é
   é   c             c   sþ   |dkrúg }g }x¼t t| |ƒƒD ]ª\}	}
|	 || ¡ |	 ddd|  tdƒ  dd|  tdƒ d¡ |	 ¡  t|	|||ƒ dV  xD|
D ]<\}}|	 |¡ | |	 	¡ ¡ | t
|
||ƒ¡ |	 |¡ qŠW q W x*t||| |d ||||ƒD ]
}d V  qìW d S )Nr   éÿ   é´   é   é   r   )ÚlistÚzipZpensizeZpencolorr   Úpendownr   r   ÚappendZcloner   ÚrightÚtree)ZtlistÚsizeÚlevelZwidthfactorZbranchlistsr   r   ZlstZbrsr   r   r   r   Úxr
   r
   r   r&      s&    
r&   c             C   sL   t dƒ |  ¡  |  d¡ |  ¡  |  d¡ |  ¡  |  ||¡ |  ¡  d S )Nr   r   éZ   )r   ÚresetZspeedÚ
hideturtler   ZpenupZsetposr#   )r   r)   Úyr
   r
   r   Ústart7   s    

r.   c             C   s2   |  ¡  t|ddƒ t|gd| ddddggƒ}|S )Né   i0ÿÿÿéP   gš™™™™™¹?)é-   g®Gázæ?)r   gÍÌÌÌÌÌä?)iÓÿÿÿg¸…ëQ¸æ?)r,   r.   r&   )r(   Úpenr   r
   r
   r   Údoit1A   s    r3   c             C   s0   |  ¡  t|ddƒ t|gd| dddggƒ}|S )Niyÿÿÿi~ÿÿÿéx   gš™™™™™¹?)r1   g®Gázæ?)iÓÿÿÿg¸…ëQ¸æ?)r,   r.   r&   )r(   r2   r   r
   r
   r   Údoit2G   s    r5   c             C   s2   |  ¡  t|ddƒ t|gd| ddddggƒ}|S )Né¾   i¦ÿÿÿéd   gš™™™™™¹?)r1   gffffffæ?)r   g
×£p=
ç?)iÓÿÿÿgÍÌÌÌÌÌä?)r,   r.   r&   )r(   r2   r   r
   r
   r   Údoit3M   s    r8   c              C   s´   t ƒ } |  ¡  tddƒ tdt ddƒ}tdt ddƒ}tdt ddƒ}tƒ }xHd}x4|||fD ]&}y| ¡  W q`   |d7 }Y q`X q`W |dkrPP qPW tdd	ƒ tƒ }d
||  S )NéK   r   é   r   )Zundobuffersizeé   r   é   r   zruntime: %.2f sec.)r   Zhtr   r3   r5   r8   ÚclockÚ__next__)ÚpÚuÚsr   ÚaZdoneÚbr
   r
   r   ÚmainT   s&    

rD   Ú__main__N)r   r   )Ú__doc__Zturtler   r   r   r   Zrandomr   Ztimer   r=   r   r   r   r&   r.   r3   r5   r8   rD   Ú__name__r
   r
   r
   r   Ú<module>   s   

