B  [Wl}ÇtãO@s2dZddlZddlZddlZddlZddlZddlZddlm Z m Z m Z ddl m Z ddlmZdddd d d d d dg Zdddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-gZd.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|gOZd}d~gZeeeedgZdd/d2d?dLdPdTdZd\dadbdddedpdudxdygZd€dd‚dƒddd„d…d†d‡dˆd‰d‰dŠd‹dŒddŽddd‘œZd’d“„Zd”d•„Zy eeƒWnek red–ƒYnXGd—d„deƒZd˜d™„Zdšd›„ZdœZdÓdždŸ„ZGd d„dej ƒZ!ee!ej"d¡ƒGd¢d£„d£ej#ƒZ$ej"Z"Gd¤d¥„d¥e%ƒZ&Gd¦d„deƒZ'Gd§d¨„d¨eƒZ(Gd©d „d e%ƒZ)Gdªd«„d«e%ƒZ*Gd¬d„de&ƒZ+Gd­d®„d®e%ƒZ,Gd¯d°„d°e%ƒZ-Gd±d²„d²e%ƒZ.Gd³d „d e-e,ƒZ/e/Z0d´d„Z1Gdµd¶„d¶e+ƒZ2Gd·d „d e/ƒZ3e3Z4dÔd¹d}„Z5dºd»„Z6ed¼Z7ye7dŒkrne6e7ƒWn@e8k red½e7ƒYn"ek r°ed¾e7ƒYnXd¿dÀ„Z9dÁd„Z:dÃdÄ„Z;dÅZZ?e@dÌkr.dÍd΄ZAdÏdЄZBdÑdÒ„ZCeBƒeCƒeDƒdS)Õz-turtle 1.1b- - for Python 3.1 - 4. 5. 2009éN)ÚisfileÚsplitÚjoin)Údeepcopy)Ú simpledialogÚScrolledCanvasÚ TurtleScreenÚScreenÚ RawTurtleÚTurtleÚRawPenÚPenÚShapeÚVec2DÚaddshapeÚbgcolorÚbgpicÚbyeÚ clearscreenÚ colormodeÚdelayÚ exitonclickÚ getcanvasÚ getshapesÚlistenÚmainloopÚmodeÚnuminputÚonkeyÚ onkeypressÚ onkeyreleaseÚ onscreenclickÚontimerÚregister_shapeÚ resetscreenÚ screensizeÚsetupÚsetworldcoordinatesÚ textinputÚtitleÚtracerÚturtlesÚupdateÚ window_heightÚ window_widthÚbackÚbackwardÚ begin_fillÚ begin_polyÚbkÚcircleÚclearÚ clearstampÚ clearstampsÚcloneÚcolorÚdegreesÚdistanceÚdotÚdownÚend_fillÚend_polyÚfdÚ fillcolorÚfillingÚforwardÚget_polyÚgetpenÚ getscreenÚ get_shapepolyÚ getturtleÚgotoÚheadingÚ hideturtleÚhomeÚhtÚisdownÚ isvisibleÚleftÚltÚonclickÚondragÚ onreleaseÚpdÚpenÚpencolorÚpendownÚpensizeÚpenupÚposÚpositionÚpuÚradiansÚrightÚresetÚ resizemodeÚrtÚsethÚ setheadingÚsetposÚ setpositionÚ settiltangleÚ setundobufferÚsetxÚsetyÚshapeÚ shapesizeÚshapetransformÚ shearfactorÚ showturtleÚspeedÚstÚstampÚtiltÚ tiltangleÚtowardsÚ turtlesizeÚundoÚundobufferentriesÚupÚwidthÚwriteÚxcorÚycorÚwrite_docstringdictÚdoneÚ Terminatorgà?gè?ii,Ústandardgð?é ièÚclassicÚblackÚnoresizeTÚenglishÚturtleÚscreenzPython Turtle GraphicsF)rzÚheightÚ canvwidthÚ canvheightÚ leftrightÚ topbottomrrrÚundobuffersizerkrWrAraÚvisibleÚlanguageÚ exampleturtleÚ examplescreenr)Ú using_IDLEc Csät|dƒ}| ¡}WdQRXi}x¼|D]´}| ¡}|r(| d¡rDq(y| d¡\}}Wn&tk r|td||fƒw(YnX| ¡}| ¡}|dkr t|ƒ}n4yd|kr´t|ƒ}nt |ƒ}Wntk rÒYnX|||<q(W|S)NÚrú#ú=zBad line in config-file %s: %s)ÚTrueÚFalseÚNonez''z""Ú.) ÚopenÚ readlinesÚstripÚ startswithrÚ ValueErrorÚprintÚevalÚfloatÚint)ÚfilenameÚfZcfglinesÚcfgdictÚlineÚkeyÚvalue©rªú)/opt/alt/python37/lib/python3.7/turtle.pyÚ config_dict«s0      r¬cCsŒd}i}i}t|ƒrt|ƒ}d|kr0d|d}yttƒ\}}t||ƒ}Wntk rbd}YnXt|ƒrtt|ƒ}t |¡t |¡dS)Nz turtle.cfgZ importconfigz turtle_%s.cfgÚ)rr¬rÚ__file__rÚ ExceptionÚ_CFGr,)r¦Z default_cfgZcfgdict1Zcfgdict2ÚheadÚtailZ cfg_file2rªrªr«Ú readconfigÈs     r³z"No configfile read, reason unknownc@s\eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dS)rcCst |||f¡S)N)ÚtupleÚ__new__)ÚclsÚxÚyrªrªr«rµúsz Vec2D.__new__cCs"t|d|d|d|dƒS)Nré)r)ÚselfÚotherrªrªr«Ú__add__üsz Vec2D.__add__cCsDt|tƒr*|d|d|d|dSt|d||d|ƒS)Nrr¹)Ú isinstancer)rºr»rªrªr«Ú__mul__þs  z Vec2D.__mul__cCs2t|tƒst|tƒr.t|d||d|ƒSdS)Nrr¹)r½r£r¢r)rºr»rªrªr«Ú__rmul__szVec2D.__rmul__cCs"t|d|d|d|dƒS)Nrr¹)r)rºr»rªrªr«Ú__sub__sz Vec2D.__sub__cCst|d |d ƒS)Nrr¹)r)rºrªrªr«Ú__neg__sz Vec2D.__neg__cCs|dd|dddS)Nrér¹gà?rª)rºrªrªr«Ú__abs__ sz Vec2D.__abs__cCsjt|d |dƒ}|tjd}t |¡t |¡}}t|d||d||d||d|ƒS)Nr¹rg€f@)rÚmathÚpiÚcosÚsin)rºÚangleZperpÚcÚsrªrªr«Úrotate sz Vec2D.rotatecCs|d|dfS)Nrr¹rª)rºrªrªr«Ú__getnewargs__szVec2D.__getnewargs__cCsd|S)Nz (%.2f,%.2f)rª)rºrªrªr«Ú__repr__szVec2D.__repr__N) Ú__name__Ú __module__Ú __qualname__rµr¼r¾r¿rÀrÁrÃrËrÌrÍrªrªrªr«rìscCs\t|jƒ}| ¡x|D]}t||ƒqWx,|j ¡D]\}}t|ƒtjkr6|||<q6WdS)N) ÚlistÚ __bases__ÚreverseÚ __methodDictÚ__dict__ÚitemsÚtypeÚtypesÚ FunctionType)r¶Ú_dictZbaseListZ_superr¨r©rªrªr«rÔ s  rÔcCsi}t||ƒ| ¡S)N)rÔÚkeys)r¶rÚrªrªr«Ú __methods*s rÜzTdef %(method)s(self, *args, **kw): return self.%(attribute)s.%(method)s(*args, **kw)rªc CsÀi}t||ƒi}t|ƒ}xN| ¡D]B}|dd…dksf|dd…dksf||ksf||krZq$||||<q$WxP| ¡D]D\}} || dœ} t|tƒržt||dœ} t| | ƒt||| |ƒqtWdS)Nr¹Ú_éÿÿÿÿ)ÚmethodÚfunc)rßZ attribute) rÔrÜrÛrÖr½ÚstrÚ __stringBodyÚexecÚsetattr) Z fromClassZtoClassZtoPartZexcludeZ_dict_1rÚZmfcZexrßràÚdZ execStringrªrªr«Ú__forwardmethods4s 0   ræc@s`eZdZddd„Zddd„Zd d „Zd d „Zd d„Zdd„Zdd„Z dd„Z dd„Z dd„Z dS)réôé^éXc Cs0tjj||||d| ¡|_|||_|_|||_|_d|_ tj ||||j tj dd|_ tj ||j jtjd|_tj ||j jd|_|j j|jj|jjd|jdd dd |jdd dd |j jd |d ddd d d d |jjd |d dd d d d d |jjd |d d dd d d d | ¡|j d |j¡dS)N)rzr‰ÚwhiterÂ)rzr‰ÚbgZreliefZ borderwidth)ÚcommandZorient)rì)ZxscrollcommandZyscrollcommandrr¹)ZweightZminsizeÚnews)ÚpadxÚin_ÚpadyÚrowÚcolumnÚrowspanÚ columnspanÚstickyz )ÚTKÚFrameÚ__init__Úwinfo_toplevelZ _rootwindowrzr‰rŠr‹rëÚCanvasZSUNKENÚ_canvasZ ScrollbarZxviewZ HORIZONTALÚhscrollZyviewÚvscrollZ configureÚsetZ rowconfigureZcolumnconfigureÚgridr`ÚbindÚonResize)rºZmasterrzr‰rŠr‹rªrªr«røOs,      zScrolledCanvas.__init__NcCs¢|r ||_|r||_|r||_|jj||j d|j d|jd|jdfd|j d|j|jd|j¡|j d|j|jd|j¡|  ¡dS)NrÂ)rëÚ scrollregiongà?é) rŠr‹rërûÚconfigÚ xview_movetorzÚ yview_movetor‰Ú adjustScrolls)rºrŠr‹rërªrªr«r`hs  zScrolledCanvas.resetc Cs²|j ¡}|j ¡}|j d|j||j¡|j d|j||j¡||jks`||jkrš|jjd|ddddddd|j jd|dddddddn|j  ¡|j   ¡dS)Ngà?r¹rrí)rîrïrðrñròrórôrõ) rûÚ winfo_widthÚ winfo_heightrrŠrr‹rürÿrýZ grid_forget)rºÚcwidthÚcheightrªrªr«rzs   zScrolledCanvas.adjustScrollscCs | ¡dS)N)r)rºÚeventrªrªr«rŠszScrolledCanvas.onResizecGs |jj|ŽS)N)rûÚbbox)rºÚargsrªrªr«r ŽszScrolledCanvas.bboxcOs|jj||ŽS)N)rûÚcget)rºrÚkwargsrªrªr«r“szScrolledCanvas.cgetcOs|jj||ŽdS)N)rûr)rºrrrªrªr«r˜szScrolledCanvas.configcOs|jj||ŽdS)N)rûr)rºrrrªrªr«rszScrolledCanvas.bindcOs|jj||ŽdS)N)rûÚunbind)rºrrrªrªr«r¢szScrolledCanvas.unbindcCs|j ¡dS)N)rûÚ focus_force)rºrªrªr«r§szScrolledCanvas.focus_force)rçrèrérç)NNN) rÎrÏrÐrør`rrr rrrrrrªrªrªr«rIs  rûc@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)Ú_RootcCstj |¡dS)N)röÚTkrø)rºrªrªr«rø±sz_Root.__init__cCs&t|||||ƒ|_|jjddddS)Nr¹Zboth)ÚexpandÚfill)rrûÚpack)rºrzr‰r r rªrªr«Ú setupcanvas´sz_Root.setupcanvascCs|jS)N)rû)rºrªrªr«Ú _getcanvas¸sz_Root._getcanvascCs| d||||f¡dS)Nz %dx%d%+d%+d)Zgeometry)rºrzr‰ÚstartxÚstartyrªrªr«Ú set_geometry»sz_Root.set_geometrycCs| d|¡dS)NZWM_DELETE_WINDOW)Z wm_protocol)rºÚdestroyrªrªr«Ú ondestroy¾sz_Root.ondestroycCs| ¡S)N)Zwinfo_screenwidth)rºrªrªr«Ú win_widthÁsz_Root.win_widthcCs| ¡S)N)Zwinfo_screenheight)rºrªrªr«Ú win_heightÄsz_Root.win_heightN) rÎrÏrÐrørrrrrr rªrªrªr«r¯src@s0eZdZedd„ƒZedd„ƒZdd„Zdd„ZdFd d „Zd d„Z dGdd„Z dd„Z dd„Z dd„Z dd„ZdHdd„Zdd„ZdIdd„ZdJd d!„ZdKd"d#„ZdLd$d%„Zd&d'„ZdMd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8d9„Zd:d;„ZdNdd?„Z!d@dA„Z"dBdC„Z#dOdDdE„Z$d S)PÚTurtleScreenBasecCstjddd}| ¡|S)Nr¹)rzr‰)röÚ PhotoImageÚblank)Zimgrªrªr«Ú _blankimageÒszTurtleScreenBase._blankimagecCs tj|dS)N)Úfile)rör")r¤rªrªr«Ú_imageÚszTurtleScreenBase._imagecCsˆ||_t|tƒr"|jj}|jj}nJt|j d¡ƒ}t|j d¡ƒ}|jj| d| d|d|dfd||_||_d|_|_ dS)Nrzr‰rÂ)rgð?) Úcvr½rrŠr‹r£rrÚxscaleÚyscale)rºr'ÚwÚhrªrªr«røás  *zTurtleScreenBase.__init__cCs|jjddddS)N)rrrrrrr­)rÚoutline)r'Zcreate_polygon)rºrªrªr«Ú _createpolyîszTurtleScreenBase._createpolyNFc Cs¦g}x2|D]*\}} | ||j¡| | |j¡q W|jj|f|žŽ|dk rb|jj||d|dk rz|jj||d|dk r’|jj||d|r¢|j |¡dS)N)r)r,)rz)Úappendr(r)r'ÚcoordsÚ itemconfigureÚ tag_raise) rºZpolyitemÚ coordlistrr,rzÚtopÚclr·r¸rªrªr«Ú _drawpolyós zTurtleScreenBase._drawpolyc Cs|jjddddddtjdS)Nrr­rÂ)rrzZcapstyle)r'Z create_lineröZROUND)rºrªrªr«Ú _createline szTurtleScreenBase._createlinec Cs–|dk rRg}x2|D]*\}}| ||j¡| | |j¡qW|jj|f|žŽ|dk rj|jj||d|dk r‚|jj||d|r’|j |¡dS)N)r)rz)r.r(r)r'r/r0r1) rºZlineitemr2rrzr3r4r·r¸rªrªr«Ú _drawlines zTurtleScreenBase._drawlinecCs|j |¡dS)N)r'Údelete)rºÚitemrªrªr«Ú_delete)szTurtleScreenBase._deletecCs|j ¡dS)N)r'r,)rºrªrªr«Ú_update/szTurtleScreenBase._updatecCs|j |¡dS)N)r'Úafter)rºrrªrªr«Ú_delay4szTurtleScreenBase._delaycCs4y|j |¡}d}Wntjk r.d}YnX|S)NTF)r'Z winfo_rgbröZTclError)rºr9ZrgbÚokrªrªr«Ú_iscolorstring8s   zTurtleScreenBase._iscolorstringcCs0|dk r |jj|d| ¡n |j d¡SdS)N)rërë)r'rr;r)rºr9rªrªr«Ú_bgcolorBs zTurtleScreenBase._bgcolorcCst|\}}||j}||j}ddddœ}|jj|d| |||||d} |j | ¡\} } } } |j ¡| | dfS)NÚswrÊZse)rPÚcenterr_r¹)ÚtextÚanchorrÚfont)r(r)r'Z create_textr r,)rºr[ÚtxtÚalignrErWr·r¸rDr9Zx0Zy0Zx1Zy1rªrªr«Ú_writeKs     zTurtleScreenBase._writer¹csDˆdkrˆj |d|¡n$‡‡fdd„}ˆj |d|||¡dS)Nz cs:ˆj |j¡ˆjˆj |j¡ ˆj}}ˆ||ƒdS)N)r'Úcanvasxr·r(Úcanvasyr¸r))r r·r¸)Úfunrºrªr«Úeventfunfsz+TurtleScreenBase._onclick..eventfun)r'Ú tag_unbindÚtag_bind)rºr9rKÚnumÚaddrLrª)rKrºr«Ú_onclick]szTurtleScreenBase._onclickcsDˆdkrˆj |d|¡n$‡‡fdd„}ˆj |d|||¡dS)Nzcs:ˆj |j¡ˆjˆj |j¡ ˆj}}ˆ||ƒdS)N)r'rIr·r(rJr¸r))r r·r¸)rKrºrªr«rLxsz-TurtleScreenBase._onrelease..eventfun)r'rMrN)rºr9rKrOrPrLrª)rKrºr«Ú _onreleasels zTurtleScreenBase._onreleasecsDˆdkrˆj |d|¡n$‡‡fdd„}ˆj |d|||¡dS)NzcsTy:ˆj |j¡ˆjˆj |j¡ ˆj}}ˆ||ƒWntk rNYnXdS)N)r'rIr·r(rJr¸r)r¯)r r·r¸)rKrºrªr«rL‹s z*TurtleScreenBase._ondrag..eventfun)r'rMrN)rºr9rKrOrPrLrª)rKrºr«Ú_ondrags zTurtleScreenBase._ondragcs@ˆdkrˆj d|¡n"‡‡fdd„}ˆj d|||¡dS)Nz cs:ˆj |j¡ˆjˆj |j¡ ˆj}}ˆ||ƒdS)N)r'rIr·r(rJr¸r))r r·r¸)rKrºrªr«rL sz1TurtleScreenBase._onscreenclick..eventfun)r'rr)rºrKrOrPrLrª)rKrºr«Ú_onscreenclick”s zTurtleScreenBase._onscreenclickcs>ˆdkr|j d|d¡n‡fdd„}|j d||¡dS)Nzcs ˆƒdS)Nrª)r )rKrªr«rL­sz0TurtleScreenBase._onkeyrelease..eventfun)r'rr)rºrKr¨rLrª)rKr«Ú _onkeyrelease¦s zTurtleScreenBase._onkeyreleasecsnˆdkr4|dkr |j dd¡qj|j d|d¡n6‡fdd„}|dkrX|j d|¡n|j d||¡dS)Nz z cs ˆƒdS)Nrª)r )rKrªr«rL¼sz.TurtleScreenBase._onkeypress..eventfun)r'rr)rºrKr¨rLrª)rKr«Ú _onkeypress±s zTurtleScreenBase._onkeypresscCs|j ¡dS)N)r'r)rºrªrªr«Ú_listenÃszTurtleScreenBase._listencCs(|dkr|j |¡n|j ||¡dS)Nr)r'Z after_idler<)rºrKÚtrªrªr«Ú_ontimerÈszTurtleScreenBase._ontimercCs|jjdd|dS)Nr)Úimage)r'Z create_image)rºrZrªrªr«Ú _createimageÐszTurtleScreenBase._createimagecCs<|\}}|j |||j| |jf¡|jj||ddS)N)rZ)r'r/r(r)Ú itemconfig)rºr9r[rZr·r¸rªrªr«Ú _drawimageÕs zTurtleScreenBase._drawimagecCs |jj||d|j |¡dS)N)rZ)r'r\Z tag_lower)rºr9rZrªrªr«Ú _setbgpicÝszTurtleScreenBase._setbgpiccCs |j |¡S)N)r'r×)rºr9rªrªr«Ú_typeåszTurtleScreenBase._typecs.|j |¡‰‡fdd„tdtˆƒdƒDƒ}|S)Ncs"g|]}ˆ|ˆ|d f‘qS)r¹rª)Ú.0Úi)r4rªr«ú ôsz/TurtleScreenBase._pointlist..rrÂ)r'r/ÚrangeÚlen)rºr9Úplrª)r4r«Ú _pointlistës zTurtleScreenBase._pointlistcCs|jj||||fddS)N)r)r'r)rºÚsrx1Úsry1Úsrx2Úsry2rªrªr«Ú_setscrollregion÷sz!TurtleScreenBase._setscrollregionc Cs„|j ¡}xt|D]l}t|j |¡ƒ}g}x@|rh|dd…\}}| ||¡| ||¡|dd…}q*W|jj|f|žŽqWdS)NrÂ)r'Zfind_allrÑr/r.) rºZ xscalefactorZ yscalefactorrÖr9Z coordinatesZ newcoordlistr·r¸rªrªr«Ú_rescaleús  zTurtleScreenBase._rescalecCszt|jtƒs|j|jfS||kr6|kr6dkrJnn|jj|jjfS|dk rX||_|dk rf||_|j |||¡dS)N)r½r'rrŠr‹r`)rºrŠr‹rërªrªr«Ú_resizes  "zTurtleScreenBase._resizecCs@|j ¡}|dkr|jd}|j ¡}|dkr8|jd}||fS)Nr¹rzr‰)r'rr )rºrzr‰rªrªr«Ú _window_sizes    zTurtleScreenBase._window_sizecCs t ¡dS)N)rör)rºrªrªr«r s zTurtleScreenBase.mainloopcCs t ||¡S)N)rZ askstring)rºr)Úpromptrªrªr«r(/s zTurtleScreenBase.textinputcCstj|||||dS)N)Z initialvalueZminvalueZmaxvalue)rZaskfloat)rºr)roÚdefaultZminvalZmaxvalrªrªr«r>s zTurtleScreenBase.numinput)NNNF)NNNF)N)r¹N)r¹N)r¹N)r¹N)N)NNN)NNN)%rÎrÏrÐÚ staticmethodr$r&rør-r5r6r7r:r;r=r?r@rHrQrRrSrTrUrVrWrYr[r]r^r_rfrkrlrmrnrr(rrªrªrªr«r!ÊsF              r!c@s eZdZdS)r€N)rÎrÏrÐrªrªrªr«r€Ysc@s eZdZdS)ÚTurtleGraphicsErrorN)rÎrÏrÐrªrªrªr«rrbsrrc@s eZdZddd„Zddd„ZdS)rNcCsz||_|dkr"t|tƒrpt|ƒ}nN|dkrVt|tƒrp| ¡ d¡rpt|ƒrpt  |¡}n|dkrdg}n t d|ƒ‚||_ dS)NÚpolygonrZz.gifÚcompoundzThere is no shape type %s) r_r½rÑr´ráÚlowerÚendswithrrr&rrÚ_data)rºZtype_Údatarªrªr«røns     zShape.__init__cCs:|jdkrtd|jƒ‚|dkr$|}|j |||g¡dS)Nrtz Cannot add component to %s Shape)r_rrrwr.)rºÚpolyrr,rªrªr«Ú addcomponent~s   zShape.addcomponent)N)N)rÎrÏrÐrørzrªrªrªr«rgs c@s@eZdZddd„Zddd„Zdd„Zd d „Zd d „Zd d„ZdS)ÚTbufferr‚cCs$||_dgg||_d|_d|_dS)NrÞF)ÚbufsizeÚbufferÚptrÚcumulate)rºr|rªrªr«rø˜szTbuffer.__init__NcCsH|dkr*x4t|jƒD]}dg|j|<qWn||_dgg||_d|_dS)NrÞ)rcr|r}r~)rºr|rarªrªr«r`s z Tbuffer.resetcCsF|jdkrB|js0|jd|j|_||j|j<n|j|j |¡dS)Nrr¹)r|rr~r}r.)rºr9rªrªr«Úpush¥s  z Tbuffer.pushcCsJ|jdkrF|j|j}|dkr"dSdg|j|j<|jd|j|_|SdS)Nrr¹)r|r}r~)rºr9rªrªr«Úpop¬s  z Tbuffer.popcCs|j|j dg¡S)N)r|r}Úcount)rºrªrªr«Ú nr_of_itemsµszTbuffer.nr_of_itemscCst|jƒdt|jƒS)Nú )rár}r~)rºrªrªr«rÍ·szTbuffer.__repr__)r‚)N) rÎrÏrÐrør`r€rrƒrÍrªrªrªr«r{–s    r{c@seZdZdZedededfdd„Zdd„Zddd„Z dd„Z dd„Zdd„Zd?dd„Zd@dd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„ZdAd-d.„Zd/d0„ZdBd1d2„ZdCd3d4„ZdDd6d7„ZdEd8d9„ZdFd:d;„ZeZe Z eZ!e Z"eZ#d S)GrTrrrc Cs¸tddƒtddƒtddƒtddƒtddƒtddƒtd| ¡ƒd œ|_d d i|_t ||¡||_||_td |_ g|_ |  ¡t j d kr´| ¡}| ddddd¡| ddddd¡dS)Nrs))iöÿÿÿr)r‚r)rr‚))ré)éþÿÿÿé)rÞr‚)éüÿÿÿé)iùÿÿÿé )i÷ÿÿÿé)iúÿÿÿé)iùÿÿÿr¹)éûÿÿÿéýÿÿÿ)iøÿÿÿiúÿÿÿ)iúÿÿÿiøÿÿÿ)rˆr)riùÿÿÿ)ér)éiøÿÿÿ)r‹iúÿÿÿ)rŒrŽ)r‰r¹)rrŒ)rŠr‹)r‰rŠ)rr‰)r¹r‚)rÂr‡))r‚r)g…ëQ¸#@g¸…ëQ¸@)g®Gáz. @g…ëQ¸…@)g…ëQ¸…@g®Gáz. @)g¸…ëQ¸@g…ëQ¸#@)rr‚)g¸…ëQ¸Àg…ëQ¸#@)g…ëQ¸…Àg®Gáz. @)g®Gáz. Àg…ëQ¸…@)g…ëQ¸#Àg¸…ëQ¸@)iöÿÿÿr)g…ëQ¸#Àg¸…ëQ¸À)g®Gáz. Àg…ëQ¸…À)g…ëQ¸…Àg®Gáz. À)g¸…ëQ¸Àg…ëQ¸#À)g€g$À)g¸…ëQ¸@g…ëQ¸#À)g…ëQ¸…@g®Gáz. À)g®Gáz. @g…ëQ¸…À)g…ëQ¸#@g¸…ëQ¸À))r‚iöÿÿÿ)r‚r‚)iöÿÿÿr‚)iöÿÿÿiöÿÿÿ))r‚g®GázÀ)rgš™™™™'@)iöÿÿÿg®GázÀ))rr)ri÷ÿÿÿ)riùÿÿÿ)rŒi÷ÿÿÿrZ)Zarrowr‡r4ZsquareZtrianglerƒr#Únopicr­rÚdarwinZwmZ attributesršz-topmostÚ1Ú0)rr$Ú_shapesÚ_bgpicsr!røÚ_modeÚ _delayvaluer°Ú _colormodeÚ_keysr5ÚsysÚplatformrùZcall)rºr'rrrZ rootwindowrªrªr«røÅs$    zTurtleScreen.__init__cCsªtd|_td|_| d¡| d¡|_d|_d|_d|_g|_ |  d¡xd D]}|  d|¡qRW|  d¡x.|j dd…D]}| d|¡|  d|¡q€Wdt_dS) NrrÚallr­r‘r¹rrê)r¹rÂé)r°r˜r™r:r[Ú_bgpicÚ _bgpicnameÚ_tracingÚ_updatecounterÚ_turtlesrrRrršrr Ú_pen)rºÚbtnr¨rªrªr«r5ìs        zTurtleScreen.clearNcCs||dkr|jS| ¡}|dkr*td|ƒ‚||_|dkrp| |j d|j d|jd|jd¡d|_|_| ¡dS)N)rÚlogoÚworldzNo turtle-graphics-mode %s)rr¦rÂgð?) r—rurrrkrŠr‹r(r)r`)rºrrªrªr«r s  zTurtleScreen.modecCsÒ| ¡dkr| d¡t||ƒ}t||ƒ}| ¡\}}| |d|d¡|j|j} } |j||_|j||_||j} | |j} |j| } |j| }| | | | |¡|  |j| |j| ¡|  ¡dS)Nr§é) rr¢rnr%r(r)rŠr‹rkrlr,)rºZllxZllyZurxZuryZxspanZyspanZwxZwyZ oldxscaleZ oldyscalergrhrirjrªrªr«r',s            z TurtleScreen.setworldcoordinatescCsT|dkr2| ¡ d¡r(td| |¡ƒ}qFtdƒ‚nt|tƒrFtd|ƒ}||j|<dS)Nz.gifrZz;Bad arguments for register_shape. Use help(register_shape)rs)rurvrr&rrr½r´r•)rºÚnamerkrªrªr«r#Ss   zTurtleScreen.register_shapec Cst|ƒdkr|d}t|tƒrD| |¡s0|dkr4|Stdt|ƒƒ‚y|\}}}Wn(ttfk rztdt|ƒƒ‚YnX|jdkr dd„|||fDƒ\}}}d|kr´d krænn.d|krÌd krænnd|kräd ksöntd t|ƒƒ‚d |||fS) Nr¹rr­zbad color string: %szbad color arguments: %sgð?cSsg|]}td|ƒ‘qS)gào@)Úround)r`r·rªrªr«rbŒsz*TurtleScreen._colorstr..éÿzbad color sequence: %sz #%02x%02x%02x)rdr½rár?rrÚ TypeErrorrŸr™)rºr9r”ÚgÚbrªrªr«Ú _colorstrvs   FzTurtleScreen._colorstrcsxˆ d¡sˆStˆƒdkr.‡fdd„dDƒ}n4tˆƒdkrV‡fdd„ˆdd…Dƒ}n td ˆƒ‚t‡fd d „|DƒƒS) Nr•r‰cs"g|]}tˆ||d…dƒ‘qS)rÂr…)r£)r`ra)Úcstrrªr«rb•sz'TurtleScreen._color..)r¹ržrŒrcsg|]}dtˆ|dƒ‘qS)r…)r£)r`r+)r°rªr«rb—sr¹zbad colorstring: %sc3s|]}|ˆjdVqdS)r«N)r™)r`rÉ)rºrªr«ú šsz&TurtleScreen._color..)ržrdrrr´)rºr°r4rª)r°rºr«Ú_color‘s    zTurtleScreen._colorcCs8|dkr|jS|dkr"t|ƒ|_n|dkr4t|ƒ|_dS)Ngð?r«)r™r¢r£)rºZcmoderªrªr«rœs  zTurtleScreen.colormodecCs(x"|jD]}| |j¡| ¡qWdS)N)r£Ú_setmoder—r`)rºr‡rªrªr«r`±s  zTurtleScreen.resetcCs|jS)N)r£)rºrªrªr«r+½szTurtleScreen.turtlescGs4|r| |¡}nd}| |¡}|dk r0| |¡}|S)N)r¯r@r²)rºrr9rªrªr«rÆs   zTurtleScreen.bgcolorcCsB|dkr|jSt|ƒ|_d|_|dk r0t|ƒ|_|jr>| ¡dS)Nr)r¡r£r¢r˜r,)rºÚnrrªrªr«r*Ýs  zTurtleScreen.tracercCs|dkr|jSt|ƒ|_dS)N)r˜r£)rºrrªrªr«rùs zTurtleScreen.delaycCs<tjsdt_t‚|jdkr8|jd7_|j|j;_dS)NTrr¹)rÚ_RUNNINGr€r¡r¢)rºrªrªr«Ú _incrementudcs  zTurtleScreen._incrementudccCs@|j}d|_x | ¡D]}| ¡| ¡qW||_| ¡dS)NT)r¡r+Ú _update_dataÚ _drawturtler;)rºÚtracingrXrªrªr«r,s zTurtleScreen.updatecCs | ¡dS)Nr)rn)rºrªrªr«r.szTurtleScreen.window_widthcCs | ¡dS)Nr¹)rn)rºrªrªr«r-%szTurtleScreen.window_heightcCs|jS)N)r')rºrªrªr«r.s zTurtleScreen.getcanvascCst|j ¡ƒS)N)Úsortedr•rÛ)rºrªrªr«r:s zTurtleScreen.getshapesr¹cCs| |||¡dS)N)rT)rºrKr¥rPrªrªr«rREszTurtleScreen.onclickcCsF|dkr ||jkr6|j |¡n||jkr6|j |¡| ||¡dS)N)ršÚremover.rU)rºrKr¨rªrªr«rVs    zTurtleScreen.onkeycCsN|dkr ||jkr>|j |¡n|dk r>||jkr>|j |¡| ||¡dS)N)ršr»r.rV)rºrKr¨rªrªr«rts   zTurtleScreen.onkeypresscCs | ¡dS)N)rW)rºÚxdummyÚydummyrªrªr«r”s zTurtleScreen.listenrcCs| ||¡dS)N)rY)rºrKrXrªrªr«r" szTurtleScreen.ontimercCsF|dkr|jS||jkr(| |¡|j|<| |j|j|¡||_dS)N)r r–r&r^rŸ)rºZpicnamerªrªr«rµs  zTurtleScreen.bgpiccCs| |||¡S)N)rm)rºrŠr‹rërªrªr«r%ÍszTurtleScreen.screensize)N)N)N)NN)N)r¹N)N)NN)r)N)NNN)$rÎrÏrÐrµr°rør5rr'r#r¯r²rr`r+rr*rr¶r,r.r-rrrRrrrr"rr%r!r$rrr rªrªrªr«r¼sB& "' #              c@sPeZdZeddƒeddƒeddƒdœZdZdZdZefdd„Zd d „Z dAd d „Z dd„Z dBdd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„ZdCd)d*„Zd+d,„Zd-d.„Zd/d0„ZdDd1d2„ZdEd3d4„Zd5d6„Zd7d8„ZdFd9d:„Z dGd;d<„Z!dHd=d>„Z"dId?d@„Z#eZ$eZ%eZ&eZ'eZ(eZ)eZ*eZ+eZ,d S)JÚ TNavigatorgð?g)rr§r¦rrr¹cCsB|j|_|j|_||_d|_| ¡d|_| |¡t  |¡dS)N) ÚDEFAULT_ANGLEOFFSETÚ _angleOffsetÚDEFAULT_ANGLEORIENTÚ _angleOrientr—Ú undobufferr:r³r¾r`)rºrrªrªr«røòs zTNavigator.__init__cCstddƒ|_tj|j|_dS)Ng)rÚ _positionr¾ÚSTART_ORIENTATIONr—Ú_orient)rºrªrªr«r`üs zTNavigator.resetNcCsL|dkr|jS|dkrdS||_|dkr6d|_d|_n|jd|_d|_dS)N)rr¦r§)rr§rr¹g@rÞ)r—rÀrÂÚ _fullcircle)rºrrªrªr«r³s zTNavigator._setmodecCs0||_d||_|jdkr"d|_n |d|_dS)Nihrrg@)rÇÚ _degreesPerAUr—rÀ)rºÚ fullcirclerªrªr«Ú_setDegreesPerAUs   zTNavigator._setDegreesPerAUç€v@cCs| |¡dS)N)rÊ)rºrÉrªrªr«r:szTNavigator.degreescCs| dtj¡dS)NrÂ)rÊrÄrÅ)rºrªrªr«r^4s zTNavigator.radianscCs|j|j|}| |¡dS)N)rÄrÆÚ_goto)rºr;Zenderªrªr«Ú_goBszTNavigator._gocCs||j9}|j |¡|_dS)N)rÈrÆrË)rºrÈrªrªr«Ú_rotateGs zTNavigator._rotatecCs ||_dS)N)rÄ)rºÚendrªrªr«rÌLszTNavigator._gotocCs| |¡dS)N)rÍ)rºr;rªrªr«rCPszTNavigator.forwardcCs| | ¡dS)N)rÍ)rºr;rªrªr«r/gszTNavigator.backcCs| | ¡dS)N)rÎ)rºrÈrªrªr«r_{szTNavigator.rightcCs| |¡dS)N)rÎ)rºrÈrªrªr«rPszTNavigator.leftcCs|jS)N)rÄ)rºrªrªr«r[¥s zTNavigator.poscCs |jdS)Nr)rÄ)rºrªrªr«r|²s zTNavigator.xcorcCs |jdS)Nr¹)rÄ)rºrªrªr«r}Às zTNavigator.ycorcCs,|dkr| t|Ž¡n| t||ƒ¡dS)N)rÌr)rºr·r¸rªrªr«rIÏszTNavigator.gotocCs| dd¡| d¡dS)Nr)rIrd)rºrªrªr«rLòs zTNavigator.homecCs| t||jdƒ¡dS)Nr¹)rÌrrÄ)rºr·rªrªr«riszTNavigator.setxcCs| t|jd|ƒ¡dS)Nr)rÌrrÄ)rºr¸rªrªr«rjszTNavigator.setycCsT|dk rt||ƒ}t|tƒr"|}n$t|tƒr6t|Ž}nt|tƒrF|j}t||jƒS)N)rr½r´r¾rÄÚabs)rºr·r¸r[rªrªr«r;$s     zTNavigator.distancecCs”|dk rt||ƒ}t|tƒr"|}n$t|tƒr6t|Ž}nt|tƒrF|j}||j\}}tt ||¡dtjdƒd}||j }|j |j ||j S)Ng€f@r‚g€v@) rr½r´r¾rÄrªrÄÚatan2rÅrÈrÀrÂrÇ)rºr·r¸r[Úresultrªrªr«ruDs       zTNavigator.towardscCsJ|j\}}tt ||¡dtjdƒd}||j}|j|j||jS)Ng€f@r‚g€v@) rÆrªrÄrÑrÅrÈrÀrÂrÇ)rºr·r¸rÒrªrªr«rJgs   zTNavigator.headingcCs>|| ¡|j}|j}||d||d}| |¡dS)Ng@)rJrÂrÇrÎ)rºZto_anglerÈZfullrªrªr«rdvszTNavigator.setheadingc Cst|jr|j dg¡d|j_| ¡}|dkr2|j}|dkrjt|ƒ|j}dttdt|ƒddƒ|ƒ}d||}d|}d |t  |tj d |j ¡}|d kr¾| | | }}}|  ¡} |  ¡} |d krä|  d d ¡n | d ¡| |¡x:t|ƒD].} | |¡| |¡| d ¡| |¡qW| | ¡|d krV|  | | ¡| |¡|jrpd |j_dS) NÚseqTr¹é g@g€M@gð?gà?g@g€f@rF)rÃr€rrprÇrÐr£ÚminrÄrÇrÅrÈÚ_tracerr=rÎrcrÍ) rºÚradiusZextentÚstepsrpZfracr*Zw2ÚlÚtrZdlrarªrªr«r4’s>" "         zTNavigator.circlecCsdS)Nrª)rºrÊrªrªr«rpÓszTNavigator.speedcCsdS)Nrª)rºÚar®rªrªr«rÖÕszTNavigator._tracercCsdS)Nrª)rºr´rªrªr«r=×szTNavigator._delay)N)rË)N)N)N)NN)r)NN)N)-rÎrÏrÐrrÅZ DEFAULT_MODEr¿rÁrør`r³rÊr:r^rÍrÎrÌrCr/r_rPr[r|r}rIrLrirjr;rurJrdr4rprÖr=r@r3r0rbrQr\rerfrcrªrªrªr«r¾æsV     # # A   r¾c@sâeZdZedfdd„Zededfdd„Zd-d d „Zd.d d „Zd d„Zdd„Z dd„Z d/dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd „Zd0d!d"„Zd1d$d%„Zd2d'd(„Zd)d*„Zd+d,„ZeZeZeZe Ze ZeZeZdS)3ÚTPenracCs||_d|_t |¡dS)N)Ú _resizemoderÃrÜÚ_reset)rºrarªrªr«røész TPen.__init__rWrAcCsFd|_d|_||_||_d|_d|_d|_d|_d|_d|_ d|_ dS)Nr¹Trž)gð?gð?g)gð?gggð?) Ú_pensizeÚ_shownÚ _pencolorÚ _fillcolorÚ_drawingÚ_speedÚ_stretchfactorÚ _shearfactorÚ_tiltÚ _shapetrafoÚ _outlinewidth)rºrWrArªrªr«rÞîsz TPen._resetNcCs.|dkr|jS| ¡}|dkr*|j|ddS)N)ÚautoÚuserr…)ra)rÝrurV)rºZrmoderªrªr«raüs zTPen.resizemodecCs|dkr|jS|j|ddS)N)rY)rßrV)rºrzrªrªr«rYsz TPen.pensizecCs|js dS|jdddS)NF)rX)rãrV)rºrªrªr«rZ/s z TPen.penupcCs|jr dS|jdddS)NT)rX)rãrV)rºrªrªr«rX=s z TPen.pendowncCs|jS)N)rã)rºrªrªr«rNKs z TPen.isdowncCsjddddddœ}|dkr|jS||kr0||}n*d|krDdkrVnntt|ƒƒ}nd}|j|d dS) Nrr‚rržr¹)ZfastestZfastÚnormalZslowZslowestgà?g%@)rp)rär£rªrV)rºrpZspeedsrªrªr«rpZs z TPen.speedcGs„|rht|ƒ}|dkr"|d}}n"|dkr4|\}}n|dkrD|}}| |¡}| |¡}|j||dn| |j¡| |j¡fSdS)Nr¹rrÂrž)rWrA)rdr¯rVr²rárâ)rºrrÙZpcolorZfcolorrªrªr«r9€s    z TPen.colorcGs:|r*| |¡}||jkrdS|j|dn | |j¡SdS)N)rW)r¯rárVr²)rºrr9rªrªr«rW®s   z TPen.pencolorcGs:|r*| |¡}||jkrdS|j|dn | |j¡SdS)N)rA)r¯rârVr²)rºrr9rªrªr«rAÓs   zTPen.fillcolorcCs|jdddS)NT)Úshown)rV)rºrªrªr«ro÷s zTPen.showturtlecCs|jdddS)NF)rí)rV)rºrªrªr«rK szTPen.hideturtlecCs|jS)N)rà)rºrªrªr«rO s zTPen.isvisiblec Ks¶|j|j|j|j|j|j|j|j|j|j |j dœ }|s>|s>|St |t ƒrN|}ni}|  |¡i}x|D]}||||<qfW|jr|j d|f¡d}d|kr®|j|dkr®d}d|krêt |dtƒrØ| |df¡|d<|j|dkrêd}d|kr|j|dkrd}|r| ¡d|kr*|d|_d|kr>|d|_d|krR|d|_d|krŠt |dtƒr€| |df¡|d<|d|_d |krž|d |_d |kr²|d |_d |krâ|d }t |ttfƒrÜ||f}||_d |krö|d |_d |kr |d |_ d|kr|d|_d|kr2|d|_ d |ksPd|ksPd |krª|j\} } |j} t |j ¡t |j ¡} } | | | | | | | | | | | | f|_| ¡dS)N) rírXrWrArYrpraÚ stretchfactorrnr,rsrVFrXTrWrYrArprarîrnr,rírs)ràrãrárârßrärÝrårærérçr½Údictr,rÃr€r´r¯Ú_newLiner£r¢rÄrÇrÆrèr;)rºrVZpendictZ_pdÚpZ_p_bufr¨ZnewLineZsfZscxZscyZshfÚsaÚcarªrªr«rV sŒ/                           zTPen.penTcCsdS)Nrª)rºÚusePosrªrªr«rðŸ sz TPen._newLineFcCsdS)Nrª)rºr‚Zforcedrªrªr«r;¡ sz TPen._updatecCsdS)Nrª)rºrrªrªr«r²£ sz TPen._colorcCsdS)Nrª)rºrrªrªr«r¯¥ szTPen._colorstr)N)N)N)N)T)TF)rÎrÏrÐr°rørÞrarYrZrXrNrpr9rWrArorKrOrVrðr;r²r¯rzryr]rUr=rqrMrªrªrªr«rÜås6   &.%$    rÜc@seZdZdd„Zdd„ZdS)Ú _TurtleImagecCs||_d|_| |¡dS)N)rˆr_Ú _setshape)rºrˆÚ shapeIndexrªrªr«røµ sz_TurtleImage.__init__cs|j‰||_|jdkr*ˆj|jkr2nndS|jdkrPˆj|jkrXnndS|jdkrpˆ |j¡n$|jdkr”x|jD]}ˆ |¡q‚Wˆj|j|_|jdkr¸ˆ ¡|_nF|jdkr؈ ˆjdj¡|_n&|jdkrþ‡fdd„ˆj|jDƒ|_dS)NrsrZ)rZrsrtr#csg|] }ˆ ¡‘qSrª)r-)r`r9)rˆrªr«rbÌ sz*_TurtleImage._setshape..) rˆr÷r_r•r:Ú_itemr-r[rw)rºr÷r9rª)rˆr«röº s&""        z_TurtleImage._setshapeN)rÎrÏrÐrørörªrªrªr«rõ± srõc@sÔeZdZgZdedededfdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dldd„Z dd„Zdd„Zdd„Zdd„Zdmdd „Zdnd!d"„Zdod#d$„Zd%d&„Zdpd'd(„Zd)d*„Zdqd+d,„Zd-d.„Zd/d0„Zdrd2d3„Zd4d5„Zd6d7„Zd8d9„Zd:d;„Zdsdd?„Z!d@dA„Z"dBdC„Z#dtdEdF„Z$dGdH„Z%dIdJ„Z&dKdL„Z'dudMdN„Z(dOdP„Z)dvdSdT„Z*dUdV„Z+dWdX„Z,dYdZ„Z-d[d\„Z.d]d^„Z/e/Z0dwd_d`„Z1dxdbdc„Z2dyddde„Z3dzdfdg„Z4dhdi„Z5djdk„Z6eZ7dS){r NrkrŽrcCs6t|tƒr||_n~t|tƒr:|tjkr2tj |¡||_nVt|ttfƒr„xFtjD]}|j |krP||_PqPWt|ƒ|_tj |j¡n t d|ƒ‚|j}t   ||  ¡¡t  |¡|j |¡| ¡|_t||ƒ|_d|_d|_d|_|_||_d|_| ¡|_|jg|_|jg|_g|_||_t |ƒ|_!| "¡dS)Nzbad canvas argument %sF)#r½Ú_Screenrˆrr Úscreensr.rrúr'rrr¾rørrÜr£r6ÚdrawingLineItemrõr‡Ú_polyÚ _creatingPolyÚ _fillitemÚ _fillpathràÚ_hidden_from_screenÚcurrentLineItemrÄÚ currentLinerÖÚ stampItemsÚ_undobuffersizer{rÃr;)rºZcanvasrkrŽrrˆrªrªr«rø× s@                 zRawTurtle.__init__cCs0t |¡t |¡| ¡| ¡| ¡dS)N)r¾r`rÜrÞÚ_clearr¸r;)rºrªrªr«r`ÿ s   zRawTurtle.resetcCs&|dks|dkrd|_n t|ƒ|_dS)Nr)rÃr{)rºÚsizerªrªr«rh szRawTurtle.setundobuffercCs|jdkrdS|j ¡S)Nr)rÃrƒ)rºrªrªr«rx+ s zRawTurtle.undobufferentriescCspd|_|_x|jD]}|j |¡qW|j ¡|_g|_|jrN|j  |j ¡|jg|_|  ¡|  |j ¡dS)N)rþrÿrÖrˆr:r6rrrãr.rÄr7rhr)rºr9rªrªr«r8 s    zRawTurtle._clearcCs| ¡| ¡dS)N)rr;)rºrªrªr«r5F s zRawTurtle.clearcCsF|j ¡|jjdkrdSt|jƒdkrB|j |j|j|j|j¡dS)Nrr¹) rˆr¶r¢rdrr7rrárß)rºrªrªr«r·U s   zRawTurtle._update_datacCs||j}|jdkrdS|jdkrD| ¡| ¡| ¡| |j¡n4| ¡|jdkrxx| ¡D] }| ¡q`W| ¡dS)Nrr¹) rˆr¡r·r¸r;r=r˜r¢r+)rºrˆrXrªrªr«r;] s    zRawTurtle._updatecCs|j ||¡S)N)rˆr*)rºÚflagrrªrªr«rÖo szRawTurtle._tracercCs |j |¡S)N)rˆr²)rºrrªrªr«r²„ szRawTurtle._colorcCs |j |¡S)N)rˆr¯)rºrrªrªr«r¯‡ szRawTurtle._colorstrc CsÐt|tƒr|Sy|\}}}Wn(ttfk rDtdt|ƒƒ‚YnX|jjdkrldd„|||fDƒ\}}}d|kr€dkr²nn.d|kr˜dkr²nnd|kr°dksÂntdt|ƒƒ‚d|||fS) Nzbad color arguments: %sgð?cSsg|]}td|ƒ‘qS)gào@)rª)r`r·rªrªr«rb” sz!RawTurtle._cc..rr«zbad color sequence: %sz #%02x%02x%02x)r½rár¬rŸrrrˆr™)rºrr”r­r®rªrªr«Ú_ccŠ s  Fz RawTurtle._cccsà|j‰| |j¡|j}d|_d|_t|ƒ}ˆ|_||_ˆ|_tˆ|jjƒ|_ˆj |¡ˆj |jjj }|dkr€ˆ  ¡|j_ nJ|dkr ˆ  ˆj dj¡|j_ n*|dkrʇfdd„ˆj |jjjDƒ|j_ ˆ ¡|_| ¡|S)NrsrZr#rtcsg|] }ˆ ¡‘qSrª)r-)r`r9)rˆrªr«rb» sz#RawTurtle.clone..)rˆrðrãr‡rrõr÷r£r.r•r_r-rør[rwr6rr;)rºr‡ÚqÚttyperª)rˆr«r8™ s,     zRawTurtle.clonecCsB|dkr|jjS||j ¡kr*td|ƒ‚|j |¡| ¡dS)NzThere is no shape named %s)r‡r÷rˆrrrrör;)rºr©rªrªr«rkÁ s   zRawTurtle.shapecCs´||kr|krdkr8nn|j\}}|||jfS|dksH|dkrPtdƒ‚|dk rt|dkrj||f}q’||f}n|dk rŒ|jd|f}n|j}|dkr |j}|jd||ddS)Nrz(stretch_wid/stretch_len must not be zerorë)rarîr,)rårérrrV)rºZ stretch_widZ stretch_lenr,rîrªrªr«rlÜ s "    zRawTurtle.shapesizecCs |dkr|jS|jd|ddS)Nrë)rarn)rærV)rºZshearrªrªr«rn szRawTurtle.shearfactorcCs<| |j|j}|tjddtj}|jd|ddS)Ng€f@rÂrë)rars)rÈrÂrÄrÅrV)rºrÈrsrªrªr«rg szRawTurtle.settiltanglecCs>|dkr0|j dtj|j}||j|jS| |¡dS)Ng€f@)rçrÄrÅrÂrÈrÇrg)rºrÈrsrªrªr«rt3 szRawTurtle.tiltanglecCs| || ¡¡dS)N)rgrt)rºrÈrªrªr«rsM szRawTurtle.tiltcCs6||kr(|kr(|kr(dkr2nn|jS|j\}}}}|dk rL|}|dk rX|}|dk rd|}|dk rp|}||||dkrŒtdƒ‚||||f|_t | |¡dtj} t | ¡t | ¡} } | || || || || || || || |f\} } }}| |f|_| ||_| |_ |j dddS)Nrz0Bad shape transform matrix: must not be singularrÂrë)ra) rèrrrÄrÑrÅrÇrÆrårærçrV)rºÚt11Út12Út21Út22Zm11Zm12Zm21Zm22ZalfaròróZa11Za12Za21Za22rªrªr«rm` s,,(  zRawTurtle.shapetransformcs^|j‰|j\‰‰|j\‰‰tˆˆˆjˆjƒ}dt|ƒ|\‰‰‡‡‡‡‡fdd„|DƒS)Ngð?csFg|]>\}}ˆˆ|ˆ|ˆjˆˆ |ˆ|ˆjf‘qSrª)r(r))r`r·r¸)Úe0Úe1Úp0Úp1rˆrªr«rb‘ sz(RawTurtle._polytrafo..)rˆrÄrÆrr)r(rÐ)rºryÚerª)rrrrrˆr«Ú _polytrafoˆ s  zRawTurtle._polytrafocCs2|jj|jj}|jdkr.| |j|jdk¡SdS)Nrsrt)rˆr•r‡r÷r_Ú _getshapepolyrw)rºrkrªrªr«rG” s  zRawTurtle.get_shapepolyFcsx|jdks|r|j\‰‰‰‰n>|jdkrNtd|jdƒ}|dd|f\‰‰‰‰n|jdkr\|St‡‡‡‡fdd„|DƒƒS) Nrërêr¹g@rr…c3s2|]*\}}ˆ|ˆ|ˆ|ˆ|fVqdS)Nrª)r`r·r¸)r r r rrªr«r±° sz*RawTurtle._getshapepoly..)rÝrèÚmaxrßr´)rºrsrtrÙrª)r r r rr«r¥ s  zRawTurtle._getshapepolyc Cs®|j}|j|jj}|j}|jj}|jr.|jdkr.|jdkr.d|_ |j }|dkr´|j dkrfd}n|j dkrx|j }n|j }| | |¡¡}|j|j}}|j|||||ddnx|d krÎ| ||j|¡n^|d krªxÐt||ƒD]D\} \} }}| | | d¡¡} |j| | | |¡| |¡|j ddqäWn||j r:dS|dkrV| |d d d ¡nN|d krz| ||j|jd j ¡n*|d kr¤x|D]} | | d d d ¡qŠWd|_ dS)NrFrsr…r¹rêT)rr,rzr3rZrt))rr)rr)rrr­r#)rˆr•r‡r÷r_røràr¢r¡rrwrÝrßrérrrârár5r]rÄÚzipr) rºrˆrkr ZtitemÚtshaper*ÚfcÚocr9ryrªrªr«r¸² sF           zRawTurtle._drawturtlec Cs\|j}|j|jj}|j}|j}|dkrŽ| ¡}|jdkr@d}n|jdkrR|j}n|j }|  |  |¡¡}|j |j }}|j|||||ddn®|dkr²| d¡}| ||j|¡nŠ|d kr        zRawTurtle.stampcCs¸||jkrHt|tƒr0x&|D]}|j |¡qWn |j |¡|j |¡d|f}|j}||jkrddS|j |¡}|j |¡||j kr˜|j d|j |_ |j  |j d|j dg¡dS)Nrrr¹) rr½r´rˆr:r»rÃr}Úindexr~r|Úinsert)rºÚstampidZsubitemr9Úbufrrªrªr«Ú _clearstamp s         zRawTurtle._clearstampcCs| |¡| ¡dS)N)r r;)rºrrªrªr«r6 s zRawTurtle.clearstampcCsb|dkr|jdd…}n&|dkr0|jd|…}n|j|d…}x|D]}| |¡qDW| ¡dS)Nr)rr r;)rºr´ZtoDeleter9rªrªr«r7, s zRawTurtle.clearstampsc CsÊ|j|j|jt|jtƒf}|j}d|j|||j|j dd…|  |j¡|j dd…ff}|j rh|j   |¡|j}|jr^|jdkr^||}|d|jd|d|jd}dt|ddd|j|jƒ}|d|} x`td|ƒD]R} | dkrüd } nd } || | |_|jr4| |j||jf|j|j| ¡| ¡qêW|jr^|j|jd d |jd |jrr|j  |¡t|jtƒrŒ|j |¡||_|jr¦|j |¡t|j ƒdkr¾| ¡| ¡dS)NÚgor¹rrÂgà?ržgš™™™™™ñ?gð?TF))rr)rrr­)rrzé*)rãrárßr½rÿrÑrˆrÄrrrfrÖrÃr€rär¡r(r)r£rcr7rûr;r.rýrürdrð) rºrÏÚgo_modesrˆZ undo_entryÚstartÚdiffÚdiffsqÚnhopsÚdeltar´r3rªrªr«rÌH sR    $$       zRawTurtle._gotocs$|\}}}}|\}}}} |\} } } ‰|j‰t|j|ƒdkrDtdƒ| |_| |_| ddgkrbd} n|} ˆj| | | |d‡‡fdd„|jDƒ}x"|D]}ˆ |¡|j  |¡q”W|}|j r ˆj dkr ||}|d ˆj d |dˆj d }dt|dd d |j |j ƒ}|d |}x^td|ƒD]P}|dkrFd}nd}||||_|rxˆ |j||jf|||¡| ¡q2W|r ˆj|jdd|d||_|jràt|jƒd krÈ|j ¡|jgkràd|_d|_| r|jgkrd|_tdƒn|jdk r|j ¡| ¡dS)Ngà?z$undogoto: HALLO-DA-STIMMT-WAS-NICHT!)rrr­)rrzcs&g|]}|ˆkrˆ |¡dkr|‘qS)r§)r_)r`ra)rÖrˆrªr«rb s z'RawTurtle._undogoto..r¹rrÂržgš™™™™™ñ?gð?TF))rr)rrzUnwahrscheinlich in _undogoto!)rˆrÐrÄr rrr7rÖr:r»rär¡r(r)r£rcrûr;rýrdrürrÿ)rºÚentryÚoldÚnewr#ZcoodataZdrawingZpcZpsrBZcLIZcLreZusepcZtodeleterar$r%r&r'r(r´r3rª)rÖrˆr«Ú _undogoto} sb      $$           zRawTurtle._undogotocCs®|jr|j d||jf¡||j9}|j |¡}|jj}|dkrœ|jdkrœd|j}dtt |ƒ|ƒ}d||}x&t |ƒD]}|j |¡|_|  ¡q~W||_|  ¡dS)NÚrotr¹rg@gð?) rÃr€rÈrÆrËrˆr¡rär£rÐrcr;)rºrÈZ neworientr¹ZanglevelrØr(rÝrªrªr«rξ s     zRawTurtle._rotateTcCsnt|jƒdkrD|j |j|j|j|j¡|j ¡|_|j  |j¡n|jj|jddg|_|rj|j g|_dS)Nr¹T)r3) rdrrˆr7rrárßr6rÖr.rÄ)rºrôrªrªr«rðÐ s  zRawTurtle._newLinecCs t|jtƒS)N)r½rÿrÑ)rºrªrªr«rBà s zRawTurtle.fillingcCsX| ¡s"|j ¡|_|j |j¡|jg|_| ¡|j rL|j   d|jf¡|  ¡dS)NÚ beginfill) rBrˆr-rþrÖr.rÄrÿrðrÃr€r;)rºrªrªr«r1î s   zRawTurtle.begin_fillcCs^| ¡rZt|jƒdkrF|jj|j|j|jd|jrF|j d|jf¡d|_|_|  ¡dS)NrÂ)rÚdofill) rBrdrÿrˆr5rþrârÃr€r;)rºrªrªr«r> s   zRawTurtle.end_fillc Gs8|sNt|ttfƒr0| |¡}|jt|jdƒ}qr|j}|sr|jt|jdƒ}n$|dkrh|jt|jdƒ}| |¡}t|jdƒr´|j  |j ||¡}|j   |¡|j r²|j  d|f¡n€| ¡}|j rØ|j  dg¡d|j _z>| ¡dkrî| ¡| ¡| |¡| |¡| d¡Wd| |¡X|j r4d|j _dS) NrÚ_dotr<rÓTrêrF)r½rár´r¯rßrráÚhasattrrˆr0rÄrÖr.rÃr€rVrrarMrXrYrWrC)rºrr9r9rVrªrªr«r< s:        z RawTurtle.dotcCsB|j |j||||j¡\}}|j |¡|jr>|j d|f¡|S)NÚwri)rˆrHrÄrárÖr.rÃr€)rºrFrGrEr9rÏrªrªr«rHG s   zRawTurtle._writerP©ÚArialr‹rìcCs`|jr|j dg¡d|j_| t|ƒ| ¡|¡}|rN| ¡\}}| ||¡|jr\d|j_dS)NrÓTF)rÃr€rrHrárur[re)rºÚargZmoverGrErÏr·r¸rªrªr«r{Q s  zRawTurtle.writecCs|jg|_d|_dS)NT)rÄrürý)rºrªrªr«r2n s zRawTurtle.begin_polycCs d|_dS)NF)rý)rºrªrªr«r?| s zRawTurtle.end_polycCs|jdk rt|jƒSdS)N)rür´)rºrªrªr«rD‰ s zRawTurtle.get_polycCs|jS)N)rˆ)rºrªrªr«rF– szRawTurtle.getscreencCs|S)Nrª)rºrªrªr«rH¦ szRawTurtle.getturtlecCs |j |¡S)N)rˆr)rºrrªrªr«r=¾ szRawTurtle._delayr¹cCs"|j |jj|||¡| ¡dS)N)rˆrQr‡rør;)rºrKr¥rPrªrªr«rRà szRawTurtle.onclickcCs"|j |jj|||¡| ¡dS)N)rˆrRr‡rør;)rºrKr¥rPrªrªr«rTØ szRawTurtle.onreleasecCs|j |jj|||¡dS)N)rˆrSr‡rø)rºrKr¥rPrªrªr«rSñ szRawTurtle.ondragcCs,|jdkrdS|dkr@|\}}| | ||j¡|j ¡}nè|dkr\|d}| |¡nÌ|dkrp| |¡n¸|dkrš|d}|j |¡|j  |¡nŽ|dkrÀ|d}|jj |dddd nh|d kr|d}d|_ |_ ||jkr(|j |¡|j  |¡n$|d kr(t  ||d¡|j ¡dS) Nr-rrrr!)r2r<r/))rr)rr)rrr­)rr,r.rV)rÃrÎrÈrr6r,rˆr:rÖr»r5rþrÿrÜrV)rºÚactionrxrÈZdegPAUZdummyrr9rªrªr«Ú_undos8            zRawTurtle._undocCsp|jdkrdS|j ¡}|d}|dd…}|dkr`x6|r\| ¡}| |d|dd…¡q6Wn | ||¡dS)Nrr¹rÓ)rÃrr7)rºr9r6rxrªrªr«rw&s   zRawTurtle.undo)NN)N)NNN)N)N)NNNN)F)N)T)N)FrPr3)N)r¹N)r¹N)r¹N)8rÎrÏrÐrúr°rør`rhrxrr5r·r;rÖr²r¯rr8rkrlrnrgrtrsrmrrGrr¸rrr r6r7rÌr,rÎrðrBr1r>r<rHr{r2r?rDrFrHrEr=rRrTrSr7rwrvrªrªrªr«r Ð sn%  (  (   (  (- 5A  0        cCstjdkrtƒt_tjS)N)r Ú_screenrùrªrªrªr«r Is c@sfeZdZdZdZedZdd„Zededededfd d „Zd d „Z d d„Z dd„Z dd„Z dS)rùNr)cCs®tjdkr4tƒt_|_|j tj¡|j |j¡tjdkrªtd}td}td}td}td}td}|j  ||||¡|j  ¡t_t   |tj¡|  ||||¡dS)Nrzr‰rŠr‹rŒr)rùÚ_rootrr)Ú_titlerÚ_destroyrûr°rrrrør&)rºrzr‰rŠr‹rŒrrªrªr«røWs   z_Screen.__init__rzr‰rŒrcCs¾t|jdƒsdS|j ¡}|j ¡}t|tƒrNd|krBdkrNnn||}|dkrb||d}t|tƒrŒd|kr€dkrŒnn||}|dkr ||d}|j ||||¡| ¡dS)Nrrr¹rÂ)r1r9rr r½r¢rr,)rºrzr‰rrrAÚshrªrªr«r&ms   " " z _Screen.setupcCs tjdk rtj |¡|t_dS)N)rùr9r)r:)rºZ titlestringrªrªr«r)•s  z _Screen.titlecCs:|j}|tjkr(dt_dt_dt_dt_dt_| ¡dS)NF) r9rùr r¤r8rûrrµr)rºÚrootrªrªr«r;¦s z_Screen._destroycCs | ¡dS)N)r;)rºrªrªr«r°sz _Screen.byecsN‡fdd„}ˆ |¡tdr"dSy tƒWntk rHtdƒYnXdS)Ncs ˆ ¡dS)N)r)r·r¸)rºrªr«ÚexitGracefullyËsz+_Screen.exitonclick..exitGracefullyr“r)rRr°rÚAttributeErrorÚexit)rºr>rª)rºr«r¸s   z_Screen.exitonclick) rÎrÏrÐr9rûr°r:rør&r)r;rrrªrªrªr«rùQs ' rùc@s0eZdZdZdZedededfdd„ZdS)r NrkrŽrcCs,tjdkrtƒt_tj|tj|||ddS)N)rkrŽr)r r8r r rø)rºrkrŽrrªrªr«røßs   zTurtle.__init__)rÎrÏrÐr¤r8r°rørªrªrªr«r Ös Úturtle_docstringdictc Csþi}x"tD]}d|}t|ƒj||<q Wx"tD]}d|}t|ƒj||<q.Wtd|dƒš}tdd„|Dƒƒ}| d¡x8|dd…D](}| d t|ƒ¡| d ||¡q†W|d}| d t|ƒ¡| d ||¡| d ¡| ¡WdQRXdS) Nz_Screen.zTurtle.z%s.pyr*css$|]}| d¡dtkr|VqdS)ršr¹N)rÚ _alias_list)r`r·rªrªr«r±sz&write_docstringdict..zdocsdict = { rÞz%s : z """%s """, z """%s """ z} ) Ú_tg_screen_functionsr¡Ú__doc__Ú_tg_turtle_functionsr›rºr{ÚreprÚclose)r¤ÚdocsdictÚ methodnamer¨r¥rÛrªrªr«r~ìs$     c Csddd| ¡i}t|ƒ}|j}x@|D]8}y||t|ƒ_Wq$tk rZtd|ƒYq$Xq$WdS)Nz!turtle_docstringdict_%(language)srzBad docstring-entry: %s)ruÚ __import__rHr¡rDr¯r )ÚlangÚmodnameÚmodulerHr¨rªrªr«Úread_docstringss rNrzCannot find docsdict forz;Unknown Error when trying to import %s-docstring-dictionaryc Csìd}}t |j¡\}}}|dd…}|dd…}|jp:g}dd„|Dƒ}dgt|ƒt|ƒ|}dd„t||ƒDƒ} |dk rœ|  d|¡| d|¡|dk rÀ|  d|¡| d|¡d | ¡}d |}d |¡}d |}||fS) Nr­r¹cSsg|]}d|f‘qS)z=%rrª)r`r©rªrªr«rb;sz"getmethparlist..cSsg|]\}}||‘qSrªrª)r`r5Zdfltrªrªr«rb=sÚ*z**z, z(%s))ÚinspectZgetargsÚ__code__Ú __defaults__rdrr.r) ZobZdefTextZcallTextrZvarargsZvarkwZitems2ZrealArgsÚdefaultsZitems1rªrªr«Úgetmethparlist+s&     rTcCsJddl}|dkrdStd}| d|d¡}| d|¡}| d|¡}|S)Nrr‘z%s.r­z \(.+ %s\):ú:)Úrer°ÚreplaceÚcompileÚsub)ÚdocstrrVZ turtlenameÚ newdocstrÚparexprªrªr«Ú_turtle_docreviseJs r]cCsJddl}|dkrdStd}| d|d¡}| d|¡}| d|¡}|S)Nrr’z%s.r­z \(.+ %s\):rU)rVr°rWrXrY)rZrVZ screennamer[r\rªrªr«Ú_screen_docreviseVs r^ardef {name}{paramslist}: if {obj} is None: if not TurtleScreen._RUNNING: TurtleScreen._RUNNING = True raise Terminator {obj} = {init} try: return {obj}.{name}{argslist} except TK.TclError: if not TurtleScreen._RUNNING: TurtleScreen._RUNNING = True raise Terminator raise c Cspxj|D]b}t||ƒ}t|ƒ\}}|dkr6td||ƒqtj|||||d} t| tƒƒ||jƒtƒ|_qWdS)Nr­z>>>>>>)ÚobjÚinitr©Z paramslistZargslist)ÚgetattrrTr Ú __func_bodyÚformatrãÚglobalsrD) Z functionsr¶r_r`Z docreviserIrßZpl1Zpl2Zdefstrrªrªr«Ú_make_global_funcsvs       rezTurtle._screenzScreen()z Turtle._penzTurtle()Ú__main__cCstƒrtƒntƒdS)N)rNr]rUrªrªrªr«Ú switchpen‹srgcCs~tƒtdƒtƒtdƒtƒtdƒxjtdƒD]^}|dkrFtƒx tdƒD]}tdƒt dƒqPW|dkr~t dƒt ƒtƒtd ƒtƒq4Wtd ƒt d ƒtd ƒtƒt dƒtdƒt dƒtdƒt d ƒtƒt dd ƒt dd ƒt dƒx2tdƒD]&}tdƒt dƒtdƒt dƒqWtdƒtƒx2tdƒD]&}tdƒt dƒtdƒt dƒqJWt ƒdS)NTédržrÂrr¨éZZmaroonrr¹r„Fé´Z startstartr$ÚredrŒ)r`r*ryr0r=rzrcr1rCrPr9r>r_r{)rarÝrªrªr«Údemo1‘sX    rlcCs^tdƒtƒtdƒttddƒƒtddƒd}tdƒx tdƒD]}tƒt |dƒqDWt dƒxt ƒrtt ƒqfWt ƒtdƒtd ƒd}td ƒtdƒtd ƒx‚td d ƒD]t}|dkrÞtƒtd d|dd|ƒx tdƒD]}t|ƒtdƒqèWtƒ|d7}tdƒttƒddƒq´Wtdƒtƒtdƒtdƒtƒtddƒtdƒtƒx4tdƒD](}t ddƒtdƒtdƒtdƒqrWtƒtdƒtƒtdƒtƒtdƒtƒ}| d¡tƒ}| d¡| d¡|  ¡| d¡| d¡| ¡| dd¡| d¡| ¡| d¡| dd¡| d¡| d¡tt|ƒƒd}xp| |¡dkrÞ| d¡| d ¡| | |¡¡| d¡|d!dkrÒ|  ¡|  ¡tƒ|d7}qpW|j d"d#d$d%| d&¡| d¡d'd(„}t! "d¡xt ƒr4|  ¡|  ¡qW| d¡|j d)d*d+| #|d¡dS),Nr¹ržrg@riér‚zwait a moment...r«Zgreenrjr†r…ééxé éFrrkZyellowré2r‡rêié(rZblueZorangerÂg @g333333ã?r¨zCAUGHT! )r4r…Úboldr_)rErGr„cSstƒtƒdS)N)rr)r¼r½rªrªr«Úbabaszdemo2..babaz Click me!)ZCourierrprt)rE)$rprqrYrdrur;rbrcrgr4r{rxrwr`rQrrWr1rAr@r>r]rUr9rkrHrar rPryrIr=rrÚtimeZsleeprR)r×rÝZlaengeraZtrir‡r‚rurªrªr«Údemo2Æs°                        rw)rª)rA)EZ_verZtkinterrörØrÄrvrPr›Zos.pathrrrÚcopyrrZ _tg_classesrCrEZ _tg_utilitiesÚ__all__rBr°r¬r³r¯r r´rrÔrÜrârær÷rrúrrÚobjectr!r€rrrr{rr¾rÜrõr r r rùr r r~rNZ _LANGUAGEÚ ImportErrorrTr]r^rbrerrrÎrgrlrwrrªrªrªr«Úgs                4  c /&.O} "       5c