B
    ^ Çc˜  ã               @   sX   d Z ddlmZmZ ddlmZ G dd„ deƒZdd„ Ze	dkrTeƒ Z
ee
ƒ eƒ  d	S )
aÓ        turtle-example-suite:

        tdemo_bytedesign.py

An example adapted from the example-suite
of PythonCard's turtle graphics.

It's based on an article in BYTE magazine
Problem Solving with Logo: Using Turtle
Graphics to Redraw a Design
November 1982, p. 118 - 134

-------------------------------------------

Due to the statement

t.delay(0)

in line 152, which sets the animation delay
to 0, this animation runs in "line per line"
mode as fast as possible.
é    )ÚTurtleÚmainloop)Úperf_counterc               @   sT   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚDesignerc             C   sÀ   |   ¡  xVtdƒD ]J}|  d| ¡ |  ¡  |  |  ¡ |¡ |   ¡  |  d| ¡ |  d¡ qW |   ¡  |  |¡ |  d¡ |  d| ¡ |  d¡ |  ¡  |  	d| d|¡ |  
¡  d	¡ d S )
Né   gš™™™™)P@éH   é$   g     €8@éÆ   é.   gÍÌÌÌÌìa@T)ÚupÚrangeÚforwardÚdownÚwheelÚpositionÚbackwardÚrightÚgotoÚcenterpieceÚ	getscreenÚtracer)ÚselfZhomePosÚscaleÚi© r   ú&lib/python3.7/turtledemo/bytedesign.pyÚdesign    s     


zDesigner.designc             C   sÄ   |   d¡ xtdƒD ]}|  ||¡ qW |  ¡  |  d¡ xtdƒD ]}|  ||¡ qDW |  d¡ xFtdƒD ]:}|  ¡  |   d¡ |  d| ¡ |  ¡  |  d| ¡ qlW |  d¡ |  	¡  
¡  d S )Né6   é   r   r   r   é   )r   r   Ú	pentpiecer   ÚleftÚtripiecer   r   r   r   Úupdate)r   Úinitposr   r   r   r   r   r   2   s     




zDesigner.wheelc             C   s¦   |   ¡ }|  ¡  |  d| ¡ |  d| |¡ |  ¡  |  |¡ |  |¡ |  ¡  |  d| ¡ |  d| |¡ |  ¡  |  |¡ |  |¡ |  d¡ |  	¡  
¡  d S )Ng      @g     €?@r   )Úheadingr   r   Útripolyrr   r   Ú
setheadingÚtripolylr!   r   r#   )r   r$   r   Úoldhr   r   r   r"   D   s    




zDesigner.tripiecec             C   s  |   ¡ }|  ¡  |  d| ¡ |  ¡  x(tdƒD ]}|  d| ¡ |  d¡ q0W |  d| d|¡ |  ¡  |  |¡ |  |¡ |  d| ¡ |  ¡  x(tdƒD ]}|  d| ¡ |  d¡ qžW |  	d| d|¡ |  ¡  |  |¡ |  |¡ |  
d¡ |  ¡  ¡  d S )Né   r   é   r   éK   )r%   r   r   r   r   r   Úpentrr   r'   Úpentlr!   r   r#   )r   r$   r   r)   r   r   r   r   r    U   s,    




zDesigner.pentpiecec             C   s>   |d| k rd S |   |¡ |  |¡ |  |d|  ||¡ d S )Né   gR¸…ëQØ?)r   r!   r.   )r   ÚsideÚangr   r   r   r   r.   m   s
     

zDesigner.pentlc             C   s>   |d| k rd S |   |¡ |  |¡ |  |d|  ||¡ d S )Nr/   gR¸…ëQØ?)r   r   r-   )r   r0   r1   r   r   r   r   r-   s   s
     

zDesigner.pentrc             C   sh   |d| k rd S |   |¡ |  d¡ |   |d ¡ |  d¡ |   |d ¡ |  d¡ |  |d |¡ d S )Nr   éo   g{®Gázü?gÍÌÌÌÌÌô?é’   g      è?)r   r   r&   )r   r0   r   r   r   r   r&   y   s     



zDesigner.tripolyrc             C   sh   |d| k rd S |   |¡ |  d¡ |   |d ¡ |  d¡ |   |d ¡ |  d¡ |  |d |¡ d S )Nr   r2   g{®Gázü?gÍÌÌÌÌÌô?r3   g      è?)r   r!   r(   )r   r0   r   r   r   r   r(   ƒ   s     



zDesigner.tripolylc             C   s>   |   |¡ |  |¡ |d| k r$d S |  |d|  ||¡ d S )Ng      @g333333ó?)r   r!   r   )r   ÚsÚar   r   r   r   r      s
    
 
zDesigner.centerpieceN)Ú__name__Ú
__module__Ú__qualname__r   r   r"   r    r.   r-   r&   r(   r   r   r   r   r   r      s   

r   c              C   s\   t ƒ } |  d¡ |  ¡  |  ¡  d¡ |  ¡  d¡ tƒ }|  |  ¡ d¡ tƒ }d||  S )Nr   r/   zruntime: %.2f sec.)	r   ZspeedZ
hideturtler   Zdelayr   Úclockr   r   )ÚtZatZetr   r   r   Úmain“   s    
r;   Ú__main__N)Ú__doc__Zturtler   r   Ztimer   r9   r   r;   r6   ÚmsgÚprintr   r   r   r   Ú<module>   s   u