grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026o ®û|j�1ã@sx dZddlZddlZddlZddlZddlZddlZddlm Z m Z m Z ddl m Z ddlmZgd¢Zgd¢Zgd¢Zd d gZeeeed gZgd ¢Zid d“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd “d!d"“d#d"“d$d%“d&d'“d(d)“d*d+“d,d-d.d/œ¥Zd0d1„Zd2d3„ZzeeƒWn ey¦ed4ƒYnwGd5d6„d6eƒZd7d8„Zd9d:„Zd;Zdwd=d>„ZGd?d@„d@ej ƒZ!ee!ej"dAƒGdBdC„dCej#ƒZ$ej"Z"GdDdE„dEe%ƒZ&GdFd „d eƒZ'GdGdH„dHeƒZ(GdIdJ„dJe%ƒZ)GdKdL„dLe%ƒZ*GdMdN„dNe&ƒZ+GdOdP„dPe%ƒZ,GdQdR„dRe%ƒZ-GdSdT„dTe%ƒZ.GdUdV„dVe-e,ƒZ/e/Z0dWdX„Z1GdYdZ„dZe+ƒZ2Gd[d\„d\e/ƒZ3e3Z4dxd^d „Z5d_d`„Z6ed(Z7z e7d)k�rZe6e7ƒWne8�yjedae7ƒYne�yyedbe7ƒYnwdcdd„Z9dedf„Z:dgdh„Z;diZZ?e@dpk�rºdqdr„ZAdsdt„ZBdudv„ZCeBƒeCƒeDƒdSdS)yz-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)OÚ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Ú Terminator)rr0r3r@rMrQrUr[r]rbrcrerfrqrvryrzrzçà?Úheightgè?Ú canvwidthi�Ú canvheighti,Ú leftrightÚ topbottomrÚstandardrçð?ré ÚundobuffersizeièrkÚclassicrWÚblackrAraÚnoresizeÚvisibleTÚlanguageZenglishÚ exampleturtleÚturtleÚscreenzPython Turtle GraphicsF)Ú examplescreenr)Ú using_IDLEc Csð t|dƒ� }| ¡}Wdƒn1swYi}|D]W}| ¡}|r+| d¡r,qz | d¡\}}WntyFtd||fƒYqw| ¡}| ¡}|dvrXt|ƒ}nzd|vrbt|ƒ}nt |ƒ}Wn typYnw|||<q|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/python310/lib64/python3.10/turtle.pyÚ config_dict«s:  ÿ þ  € ÿ r­cCsŒ d}i}i}t|ƒrt|ƒ}d|vrd|d}z ttƒ\}}t||ƒ}Wn ty1d}Ynwt|ƒr:t|ƒ}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^eZdZ dd„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·úóz Vec2D.__new__cCs"t|d|d|d|dƒS©Nré©r©ÚselfÚotherr«r«r¬Ú__add__üó"z Vec2D.__add__cCsDt|tƒr|d|d|d|dSt|d||d|ƒSr¼)Ú isinstancerr¿r«r«r¬Ú__mul__þs  z Vec2D.__mul__cCs2t|tƒs t|tƒrt|d||d|ƒStSr¼)rÄr¤r£rÚNotImplementedr¿r«r«r¬Ú__rmul__szVec2D.__rmul__cCs"t|d|d|d|dƒSr¼r¾r¿r«r«r¬Ú__sub__rÃz Vec2D.__sub__cCst|d |d ƒSr¼r¾©rÀr«r«r¬Ú__neg__sz Vec2D.__neg__cCs tj|ŽSrµ)ÚmathZhypotrÉr«r«r¬Ú__abs__ ó z Vec2D.__abs__cCsh t|d |dƒ}t |¡}t |¡t |¡}}t|d||d||d||d|ƒS)Nr½r)rrËr^ÚcosÚsin)rÀÚangleZperpÚcÚsr«r«r¬Úrotate s  2z Vec2D.rotatecCs|d|dfSr¼r«rÉr«r«r¬Ú__getnewargs__r»zVec2D.__getnewargs__cCsd|S)Nz (%.2f,%.2f)r«rÉr«r«r¬Ú__repr__ózVec2D.__repr__N) Ú__name__Ú __module__Ú __qualname__r·rÂrÅrÇrÈrÊrÌrÓrÔrÕr«r«r«r¬rìs  rcCsV t|jƒ}| ¡|D]}t||ƒq |j ¡D]\}}t|ƒtjkr(|||<qdSrµ) ÚlistÚ __bases__ÚreverseÚ __methodDictÚ__dict__ÚitemsÚtypeÚtypesÚ FunctionType)r¸Ú_dictZbaseListZ_superr©rªr«r«r¬rÝ!s  €þrÝcCs i}t||ƒ| ¡Srµ)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|ƒ}| ¡D]!}|dd…dks+|dd…dks+||vs+||vr,q||||<q| ¡D]"\}} || dœ} t|tƒrLt||dœ} t| | ƒt||| |ƒq7dS)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¬Ú__forwardmethods5s   0   ÿ úrïc@sfeZdZ  ddd„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‚Úwhiteé)rzr‚ÚbgZreliefZ borderwidth)ÚcommandZorient)rö)ZxscrollcommandZyscrollcommandrr½)ZweightZminsizeÚnews©ZpadxZin_ZpadyÚrowÚcolumnZrowspanZ columnspanZstickyz )ÚTKÚFrameÚ__init__Úwinfo_toplevelZ _rootwindowrzr‚rƒr„rõÚCanvasZSUNKENÚ_canvasZ ScrollbarZxviewZ HORIZONTALÚhscrollZyviewÚvscrollZ configureÚsetZ rowconfigureZcolumnconfigureÚgridr`ÚbindÚonResize)rÀÚmasterrzr‚rƒr„r«r«r¬rýPs8   ÿ ÿ ÿÿÿÿ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õÚ scrollregionr�é) rƒr„rõrÚconfigÚ xview_movetorzÚ yview_movetor‚Ú adjustScrolls©rÀrƒr„rõr«r«r¬r`is&ÿÿÿÿ zScrolledCanvas.resetc Cs¶ |j ¡}|j ¡}|j d|j||j¡|j d|j||j¡||jks1||jkrO|jjd|ddddddd�|j jd|ddddddd�dS|j  ¡|j   ¡dS)Nr�r½rr÷rø) rÚ winfo_widthÚ winfo_heightr rƒr r„rrrZ grid_forget)rÀÚcwidthÚcheightr«r«r¬r {s  ÿ ÿ zScrolledCanvas.adjustScrollscCó | ¡dSrµ)r )rÀÚeventr«r«r¬r‹ó zScrolledCanvas.onResizecGs |jj|ŽSrµ)rÚbbox©rÀÚargsr«r«r¬r�ó zScrolledCanvas.bboxcOs |jj|i|¤ŽSrµ)rÚcget©rÀrÚkwargsr«r«r¬r”ózScrolledCanvas.cgetcOó |jj|i|¤ŽdSrµ)rr rr«r«r¬r ™ózScrolledCanvas.configcOrrµ)rrrr«r«r¬ržrzScrolledCanvas.bindcOrrµ)rÚunbindrr«r«r¬r £rzScrolledCanvas.unbindcCó |j ¡dSrµ)rÚ focus_forcerÉr«r«r¬r"¨ózScrolledCanvas.focus_force)rðrñròrð©NNN) r×rØrÙrýr`r rrrr rr r"r«r«r«r¬rJs ÿ  rrc@sFeZdZ dd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)Ú_RootcCstj |¡dSrµ)rûÚTkrýrÉr«r«r¬rý²r»z_Root.__init__cCs&t|||||ƒ|_|jjddd�dS)Nr½Zboth)ÚexpandÚfill)rrZpack)rÀrzr‚rrr«r«r¬Ú setupcanvasµsz_Root.setupcanvascCs|jSrµ)rrÉr«r«r¬Ú _getcanvas¹sz_Root._getcanvascCs| d||||f¡dS)Nz %dx%d%+d%+d)Zgeometry)rÀrzr‚ÚstartxÚstartyr«r«r¬Ú set_geometry¼óz_Root.set_geometrycCs| d|¡dS)NZWM_DELETE_WINDOW)Z wm_protocol)rÀÚdestroyr«r«r¬Ú ondestroy¿r»z_Root.ondestroycCó| ¡Srµ)Zwinfo_screenwidthrÉr«r«r¬Ú win_widthÂrÖz_Root.win_widthcCr1rµ)Zwinfo_screenheightrÉr«r«r¬Ú win_heightÅrÖz_Root.win_heightN) r×rØrÙrýr)r*r-r0r2r3r«r«r«r¬r%°s r%c@s2eZdZ dd„Zdd„Zdd„Zdd„Z dFd d „Zd d„Z dFdd„Z dd„Z dd„Z dd„Z dd„Z dGdd„Zdd„ZdHdd„ZdHd d!„ZdHd"d#„ZdHd$d%„Zd&d'„ZdGd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8d9„Zd:d;„ZdIdd?„Z d@dA„Z!dBdC„Z"dIdDdE„Z#d S)JÚTurtleScreenBasecCs tjdd|jd�}| ¡|S)Nr½)rzr‚r)rûÚ PhotoImageÚcvÚblank)rÀZimgr«r«r¬Ú _blankimageÓszTurtleScreenBase._blankimagecCs tj||jd�S)N)Úfiler)rûr5r6)rÀr¥r«r«r¬Ú_imageÚózTurtleScreenBase._imagecCsˆ||_t|tƒr|jj}|jj}n%t|j d¡ƒ}t|j d¡ƒ}|jj| d| d|d|dfd�||_||_d|_|_ dS)Nrzr‚rô©rrˆ) r6rÄrrƒr„r¤rr ÚxscaleÚyscale)rÀr6ÚwÚhr«r«r¬rýàs  *zTurtleScreenBase.__init__cCs |jjdddd�S)N)rrrrrrr®©r(Úoutline)r6Zcreate_polygonrÉr«r«r¬Ú _createpolyírzTurtleScreenBase._createpolyNFc Csª g}|D]\}} | ||j¡| | |j¡q|jj|g|¢RŽ|dur1|jj||d�|dur=|jj||d�|durI|jj||d�|rS|j |¡dSdS)N©r()rB©rz©Úappendr=r>r6ÚcoordsZ itemconfigureZ tag_raise) rÀZpolyitemÚ coordlistr(rBrzÚtopÚclr¹rºr«r«r¬Ú _drawpolyòs ÿzTurtleScreenBase._drawpolyc Cs |jjddddddtjd�S)Nrr®rô)r(rzZcapstyle)r6Z create_linerûZROUNDrÉr«r«r¬Ú _createline sÿzTurtleScreenBase._createlinec Csš |dur)g}|D]\}}| ||j¡| | |j¡q |jj|g|¢RŽ|dur5|jj||d�|durA|jj||d�|rK|j |¡dSdS)NrDrErF) rÀZlineitemrIr(rzrJrKr¹rºr«r«r¬Ú _drawlines ÿzTurtleScreenBase._drawlinecCó |j |¡dSrµ)r6Údelete©rÀÚitemr«r«r¬Ú_delete(r;zTurtleScreenBase._deletecCr!rµ)r6r,rÉr«r«r¬Ú_update.r#zTurtleScreenBase._updatecCrOrµ)r6Úafter©rÀrr«r«r¬Ú_delay3szTurtleScreenBase._delaycCs4 z |j |¡}d}W|Stjyd}Y|Sw)NTF)r6Z winfo_rgbrûZTclError)rÀr9ZrgbÚokr«r«r¬Ú_iscolorstring7s þþzTurtleScreenBase._iscolorstringcCs0 |dur|jj|d�| ¡dS|j d¡S)N)rõrõ)r6r rTr)rÀr9r«r«r¬Ú_bgcolorAs   zTurtleScreenBase._bgcolorcCsl |\}}||j}||j}ddddœ}|jj|d| |||||d�} |j | ¡\} } } } | | dfS)NÚswrÒZse)rPÚcenterr_r½)ÚtextÚanchorr(Úfont)r=r>r6Z create_textr)rÀr[ÚtxtÚalignr_rWr¹rºr^rRZx0Zy0Zx1Zy1r«r«r¬Ú_writeJs   ÿ zTurtleScreenBase._writer½cóH ˆdurˆj |d|¡dS‡‡fdd„}ˆj |d|||¡dS)Nú có:ˆj |j¡ˆjˆj |j¡ ˆj}}ˆ||ƒdSrµ©r6Úcanvasxr¹r=Úcanvasyrºr>©rr¹rº©ÚfunrÀr«r¬Úeventfundóÿz+TurtleScreenBase._onclick..eventfun©r6Z tag_unbindZtag_bind©rÀrRrkÚnumÚaddrlr«rjr¬Ú_onclick[s zTurtleScreenBase._onclickcrc)Nzcrerµrfrirjr«r¬rlvrmz-TurtleScreenBase._onrelease..eventfunrnror«rjr¬Ú _onreleasejsÿzTurtleScreenBase._onreleasecrc)NzcsRzˆj |j¡ˆjˆj |j¡ ˆj}}ˆ||ƒWdSty(YdSwrµ)r6rgr¹r=rhrºr>r°rirjr«r¬rl‰sÿ ÿz*TurtleScreenBase._ondrag..eventfunrnror«rjr¬Ú_ondrag}s zTurtleScreenBase._ondragcsD ˆdurˆj d|¡dS‡‡fdd„}ˆj d|||¡dS)Nrdcrerµrfrirjr«r¬rlžrmz1TurtleScreenBase._onscreenclick..eventfun©r6r r)rÀrkrprqrlr«rjr¬Ú_onscreenclick’s zTurtleScreenBase._onscreenclickcsB ˆdur|j d|d¡dS‡fdd„}|j d||¡dS)Nzcó ˆƒdSrµr«©r©rkr«r¬rl«rÍz0TurtleScreenBase._onkeyrelease..eventfunru©rÀrkr©rlr«ryr¬Ú _onkeyrelease¤s  zTurtleScreenBase._onkeyreleasecsv ˆdur|dur|j dd¡dS|j d|d¡dS‡fdd„}|dur0|j d|¡dS|j d||¡dS)Nz z crwrµr«rxryr«r¬rlºrÍz.TurtleScreenBase._onkeypress..eventfunrurzr«ryr¬Ú _onkeypress¯s zTurtleScreenBase._onkeypresscCr!rµ)r6r"rÉr«r«r¬Ú_listenÁr#zTurtleScreenBase._listencCs, |dkr |j |¡dS|j ||¡dS©Nr)r6Z after_idlerU©rÀrkÚtr«r«r¬Ú_ontimerÆszTurtleScreenBase._ontimercCs |jjdd|d�S)Nr©Úimage)r6Z create_image)rÀrƒr«r«r¬Ú _createimageÎrzTurtleScreenBase._createimagecCs> |\}}|j |||j| |jf¡|jj||d�dS©Nr‚)r6rHr=r>Ú itemconfig)rÀrRr[rƒr¹rºr«r«r¬Ú _drawimageÓs zTurtleScreenBase._drawimagecCs" |jj||d�|j |¡dSr…)r6r†Z tag_lower)rÀrRrƒr«r«r¬Ú _setbgpicÛszTurtleScreenBase._setbgpiccCó |j |¡Srµ)r6ràrQr«r«r¬Ú_typeãs zTurtleScreenBase._typecs0 |j |¡‰‡fdd„tdtˆƒdƒDƒ}|S)Ncs"g|] }ˆ|ˆ|d f‘qS)r½r«©Ú.0Úi©rKr«r¬Ú òó"z/TurtleScreenBase._pointlist..rrô)r6rHÚrangeÚlen)rÀrRÚplr«rŽr¬Ú _pointlistés zTurtleScreenBase._pointlistcCs|jj||||fd�dS)Nr<)r6r )rÀÚsrx1Úsry1Úsrx2Úsry2r«r«r¬Ú_setscrollregionõr.z!TurtleScreenBase._setscrollregionc Cs€|j ¡}|D]6}t|j |¡ƒ}g}|r3|dd…\}}| ||¡| ||¡|dd…}|s|jj|g|¢RŽqdS)Nrô)r6Zfind_allrÚrHrG) rÀZ xscalefactorZ yscalefactorrßrRZ coordinatesZ newcoordlistr¹rºr«r«r¬Ú_rescaleøs  üøzTurtleScreenBase._rescalecCs| t|jtƒs |j|jfS||ur|urdur&nn|jj|jjfS|dur-||_|dur4||_|j |||¡dSrµ)rÄr6rrƒr„r`rr«r«r¬Ú_resizes  "zTurtleScreenBase._resizecCsB |j ¡}|dkr|jd}|j ¡}|dkr|jd}||fS)Nr½rzr‚)r6rr)rÀrzr‚r«r«r¬Ú _window_sizes    zTurtleScreenBase._window_sizecCs |jj ¡dSrµ)r6ZtkrrÉr«r«r¬rs zTurtleScreenBase.mainloopcCs tj|||jd�S)N)Úparent)rZ askstringr6)rÀr)Úpromptr«r«r¬r(-s zTurtleScreenBase.textinputcCs tj||||||jd�S)N)Z initialvalueZminvalueZmaxvaluer�)rZaskfloatr6)rÀr)ržÚdefaultZminvalZmaxvalr«r«r¬r<s  þzTurtleScreenBase.numinput)NNNFrµ©r½Nr$)$r×rØrÙr8r:rýrCrLrMrNrSrTrWrYrZrbrrrsrtrvr{r|r}r�r„r‡rˆrŠr”r™ršr›rœrr(rr«r«r«r¬r4ËsN  ÿ ÿ         r4c@seZdZ dS)r€N©r×rØrÙr«r«r«r¬r€Xsc@s eZdZdS)ÚTurtleGraphicsErrorNr¡r«r«r«r¬r¢asr¢c@s"eZdZ ddd„Zddd„ZdS)rNcCsz||_|dkrt|tƒrt|ƒ}n'|dkr+t|tƒr*| ¡ d¡r*t|ƒr*t  |¡}n |dkr2g}nt d|ƒ‚||_ dS)NÚpolygonrƒú.gifÚcompoundzThere is no shape type %s) rŠrÄrÚr¶rêÚlowerÚendswithrrr:r¢Ú_data)rÀZtype_Údatar«r«r¬rýms €  €  zShape.__init__cCs< |jdkr td|jƒ‚|dur|}|j |||g¡dS)Nr¥z Cannot add component to %s Shape)rŠr¢r¨rG)rÀÚpolyr(rBr«r«r¬Ú addcomponent}s ÿzShape.addcomponentrµ)r×rØrÙrýr«r«r«r«r¬rfs rc@sBeZdZ ddd„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ý—s zTbuffer.__init__NcCsD|durt|jƒD]}dg|j|<q n ||_dgg||_d|_dS)Nrç)r‘r­r®r¯)rÀr­r�r«r«r¬r`œsÿ z Tbuffer.resetcCsL|jdkr$|js|jd|j|_||j|j<dS|j|j |¡dSdSr¼)r­r°r¯r®rGrQr«r«r¬Úpush¤s ûz Tbuffer.pushcCsJ|jdkr#|j|j}|durdSdg|j|j<|jd|j|_|SdSr¼)r­r®r¯rQr«r«r¬Úpop«s  ùz Tbuffer.popcCs|j|j dg¡Srµ)r­r®ÚcountrÉ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‰rµ) r×rØrÙrýr`r±r²r´rÕr«r«r«r¬r¬•s   r¬c@s eZdZ dZedededfdd„Zdd„Zdd-d.„Zd/d0„Zddt_dS) NrrÚallr®rÕr½rró)r½rôé)r±rÜrÝrSr„Ú_bgpicÚ _bgpicnameÚ_tracingÚ_updatecounterÚ_turtlesrrRrrÞrr Ú_pen)rÀÚbtnr©r«r«r¬r5ìs"       zTurtleScreen.clearNcCs~ |dur|jS| ¡}|dvrtd|ƒ‚||_|dvr9| |j d|j d|jd|jd¡d|_|_| ¡dS)N©r‡ÚlogoÚworldzNo turtle-graphics-mode %s)r‡rërôrˆ) rÛr¦r¢r™rƒ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£rœr%r=r>rƒr„r™ršr,)rÀZllxZllyZurxZuryZxspanZyspanZwxZwyZ oldxscaleZ oldyscaler•r–r—r˜r«r«r¬r',s"            z TurtleScreen.setworldcoordinatescCsT |dur| ¡ d¡rtd| |¡ƒ}ntdƒ‚t|tƒr#td|ƒ}||j|<dS)Nr¤rƒz;Bad arguments for register_shape. Use help(register_shape)r£)r¦r§rr:r¢rÄr¶rÙ)rÀÚnamerkr«r«r¬r#Ss  zTurtleScreen.register_shapec Cs t|ƒdkr |d}t|tƒr#| |¡s|dkr|Stdt|ƒƒ‚z|\}}}Wnttfy;tdt|ƒƒ‚w|jdkrNdd„|||fDƒ\}}}d|krXd krqnnd|krdd krqnn d|krpd ksyntd t|ƒƒ‚d |||fS) Nr½rr®zbad color string: %súbad color arguments: %srˆcSóg|]}td|ƒ‘qS©gào@©Úround©rŒr¹r«r«r¬r�Œóz*TurtleScreen._colorstr..éÿúbad color sequence: %sú #%02x%02x%02x)r’rÄrêrYr¢Ú TypeErrorr rÝ)rÀr9r•ÚgÚbr«r«r¬Ú _colorstrvs"  ÿ FzTurtleScreen._colorstrcsxˆ d¡sˆStˆƒdkr‡fdd„dDƒ}ntˆƒdkr+‡fdd„ˆdd…Dƒ}ntd ˆƒ‚t‡fd d „|DƒƒS) Nr–r¾cs"g|] }tˆ||d…dƒ‘qS)rôrº©r¤r‹©Úcstrr«r¬r�•r�z'TurtleScreen._color..)r½rârÄrÉcsg|] }dtˆ|dƒ‘qS)rºrþ)rŒr@rÿr«r¬r�—sr½zbad colorstring: %sc3s�|] }|ˆjdVqdS)r÷N)rÝ)rŒrÑrÉr«r¬Ú šs€z&TurtleScreen._color..)rŸr’r¢r¶)rÀrrKr«)rrÀr¬Ú_color‘s    zTurtleScreen._colorcCs@ |dur|jS|dkrt|ƒ|_dS|dkrt|ƒ|_dSdS)Nrˆr÷)rÝr£r¤)rÀZcmoder«r«r¬rœs ÿzTurtleScreen.colormodecCs& |jD] }| |j¡| ¡qdSrµ)rçÚ_setmoderÛr`)rÀr‘r«r«r¬r`±s    þzTurtleScreen.resetcCó |jSrµ)rçrÉr«r«r¬r+½szTurtleScreen.turtlescGs6 |r | |¡}nd}| |¡}|dur| |¡}|Srµ)rýrZr©rÀrr9r«r«r¬rÆs   zTurtleScreen.bgcolorcCsH |dur|jSt|ƒ|_d|_|durt|ƒ|_|jr"| ¡dSdSr~)rår¤rærÜr,)rÀÚnrr«r«r¬r*Ýs   ÿzTurtleScreen.tracercCs |dur|jSt|ƒ|_dSrµ)rÜr¤rVr«r«r¬rùs zTurtleScreen.delaycCsB tjs dt_t‚|jdkr|jd7_|j|j;_dSdS)NTrr½)rÚ_RUNNINGr€rårærÉr«r«r¬Ú _incrementudcs þzTurtleScreen._incrementudccCs> |j}d|_| ¡D] }| ¡| ¡q ||_| ¡dS©NT)rår+Ú _update_dataÚ _drawturtlerT)rÀÚtracingr€r«r«r¬r,s   zTurtleScreen.updatecCó | ¡dSr~©rœrÉr«r«r¬r.ó zTurtleScreen.window_widthcCr ©Nr½rrÉr«r«r¬r-%rzTurtleScreen.window_heightcCrrµ)r6rÉr«r«r¬r.ó zTurtleScreen.getcanvascCs t|j ¡ƒSrµ)ÚsortedrÙrärÉr«r«r¬r:szTurtleScreen.getshapesr½cCs | |||¡dSrµ)rv©rÀrkrérqr«r«r¬rREszTurtleScreen.onclickcCsH |dur||jvr|j |¡n ||jvr|j |¡| ||¡dSrµ)rÞÚremoverGr{©rÀrkr©r«r«r¬rVs  €  zTurtleScreen.onkeycCsP |dur||jvr|j |¡n|dur ||jvr |j |¡| ||¡dSrµ)rÞrrGr|rr«r«r¬rts  € zTurtleScreen.onkeypresscCrrµ)r})rÀÚxdummyÚydummyr«r«r¬r”s zTurtleScreen.listenrcCs | ||¡dSrµ)r�rr«r«r¬r" ózTurtleScreen.ontimercCsH |dur|jS||jvr| |¡|j|<| |j|j|¡||_dSrµ)rärÚr:rˆrã)rÀZpicnamer«r«r¬rµs  zTurtleScreen.bgpiccCs | |||¡Srµ)r›rr«r«r¬r%ÍszTurtleScreen.screensizerµ©NNr ©rr$)$r×rØrÙrr±rýr5rr'r#rýrrr`r+rr*rrr,r.r-rrrRrrrr"rr%r!r$rrr r«r«r«r¬r»sH  ÿ( " '#            rc@sReZdZ eddƒ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(„ZdAd)d*„Zd+d,„Zd-d.„Zd/d0„ZdAd1d2„ZdAd3d4„Zd5d6„Zd7d8„ZdCd9d:„Z dDd;d<„Z!dCd=d>„Z"dAd?d@„Z#eZ$eZ%eZ&eZ'eZ(eZ)eZ*eZ+eZ,d S)EÚ TNavigatorrˆç)r‡rìrër‡rr½cCsB|j|_|j|_||_d|_| ¡d|_| |¡t  |¡dSrµ) ÚDEFAULT_ANGLEOFFSETÚ _angleOffsetÚDEFAULT_ANGLEORIENTÚ _angleOrientrÛÚ undobufferr:rrr`rír«r«r¬rýòs zTNavigator.__init__cCs tddƒ|_tj|j|_dS)Nr)rÚ _positionrÚSTART_ORIENTATIONrÛÚ_orientrÉr«r«r¬r`üs zTNavigator.resetNcCsP |dur|jS|dvrdS||_|dvrd|_d|_dS|jd|_d|_dS)Nrê)r‡rìrr½ç@rç)rÛrr Ú _fullcirclerír«r«r¬rs   zTNavigator._setmodecCs4 ||_d||_|jdkrd|_dS|d|_dS)Nihr‡rr%)r&Ú _degreesPerAUrÛr©rÀZ fullcircler«r«r¬Ú_setDegreesPerAUs    zTNavigator._setDegreesPerAUç€v@cCó | |¡dSrµ)r)r(r«r«r¬r:szTNavigator.degreescCs | tj¡dSrµ)r)rËÚtaurÉr«r«r¬r^4s zTNavigator.radianscCs |j|j|}| |¡dSrµ)r"r$Ú_goto)rÀr;Zender«r«r¬Ú_goBszTNavigator._gocCs ||j9}|j |¡|_dSrµ)r'r$rÓ©rÀrÐr«r«r¬Ú_rotateGs zTNavigator._rotatecCs ||_dSrµ©r")rÀÚendr«r«r¬r-Ls zTNavigator._gotocCr+rµ©r.©rÀr;r«r«r¬rCPszTNavigator.forwardcCó | | ¡dSrµr3r4r«r«r¬r/gszTNavigator.backcCr5rµ©r0r/r«r«r¬r_{rzTNavigator.rightcCr+rµr6r/r«r«r¬rP�ózTNavigator.leftcCrrµr1rÉr«r«r¬r[¥s zTNavigator.poscCó |jdSr~r1rÉr«r«r¬r|²ó zTNavigator.xcorcCr8rr1rÉr«r«r¬r}Àr9zTNavigator.ycorcCs0 |dur| t|Ž¡dS| t||ƒ¡dSrµ)r-r)rÀr¹rºr«r«r¬rIÏszTNavigator.gotocCs | dd¡| d¡dSr~)rIrdrÉr«r«r¬rLòs zTNavigator.homecCs | t||jdƒ¡dSr©r-rr")rÀr¹r«r«r¬riózTNavigator.setxcCs | t|jd|ƒ¡dSr~r:)rÀrºr«r«r¬rjr;zTNavigator.setycCsV |dur t||ƒ}t|tƒr|}nt|tƒrt|Ž}nt|tƒr$|j}t||jƒSrµ)rrÄr¶rr"Úabs)rÀr¹rºr[r«r«r¬r;$s     zTNavigator.distancecCs’ |dur t||ƒ}t|tƒr|}nt|tƒrt|Ž}nt|tƒr$|j}||j\}}tt t ||¡¡dƒd}||j }|j |j ||j S©Nr‰r*) rrÄr¶rr"rôrËr:Úatan2r'rr r&)rÀr¹rºr[Úresultr«r«r¬ruDs      zTNavigator.towardscCsH |j\}}tt t ||¡¡dƒd}||j}|j|j||jSr=) r$rôrËr:r>r'rr r&)rÀr¹rºr?r«r«r¬rJgs   zTNavigator.headingcCs@ || ¡|j}|j}||d||d}| |¡dS)Nç@)rJr r&r0)rÀZto_anglerÐZfullr«r«r¬rdvs zTNavigator.setheadingc Csl |jr|j dg¡d|j_| ¡}|dur|j}|dur6t|ƒ|j}dttdt|ƒddƒ|ƒ}d||}d|}d |t  t  |¡|j ¡}|d kr^| | | }}}|  ¡} |  ¡} |d krq|  d d ¡n| d ¡| |¡t|ƒD]} | |¡| |¡| d ¡| |¡q| | ¡|d kr¦|  | | ¡| |¡|jr´d |j_dSdS) NÚseqTr½é g@g€M@rˆr�r@rF)r!r±r°rpr&r<r¤ÚminrËrÏr^r'Ú_tracerrWr0r‘r.) rÀÚradiusZextentÚstepsrpZfracr?Zw2ÚlZtrZdlr�r«r«r¬r4’sB"            ÿzTNavigator.circlecCódSrµr«)rÀrÒr«r«r¬rpÓózTNavigator.speedcCrHrµr«)rÀÚarür«r«r¬rDÕrIzTNavigator._tracercCrHrµr«)rÀrr«r«r¬rW×rIzTNavigator._delayrµ)r*rr)-r×rØrÙrr#Z DEFAULT_MODErrrýr`rr)r:r^r.r0r-rCr/r_rPr[r|r}rIrLrirjr;rurJrdr4rprDrWr@r3r0rbrQr\rerfrcr«r«r«r¬ræs\ý     #  #  A  rc@säeZdZ edfdd„Zededfdd„Zd-d d „Zd-d d „Zd d„Zdd„Z dd„Z d-dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd „Zd-d!d"„Zd.d$d%„Zd/d'd(„Zd)d*„Zd+d,„ZeZeZeZe Ze ZeZeZdS)0ÚTPenracCs||_d|_t |¡dSrµ)Ú _resizemoder!rKÚ_reset)rÀrar«r«r¬rýéóz TPen.__init__rWrAcCsFd|_d|_||_||_d|_d|_d|_d|_d|_d|_ d|_ dS)Nr½Trâ)rˆrˆr)rˆrrrˆ) Ú_pensizeÚ_shownÚ _pencolorÚ _fillcolorÚ_drawingÚ_speedÚ_stretchfactorÚ _shearfactorÚ_tiltÚ _shapetrafoÚ _outlinewidth)rÀrWrAr«r«r¬rMîs z TPen._resetNcCs4 |dur|jS| ¡}|dvr|j|d�dSdS)N)ÚautoÚuserr�©ra)rLr¦rV)rÀZrmoder«r«r¬raüsÿzTPen.resizemodecCs |dur|jS|j|d�dS)N)rY)rOrV)rÀrzr«r«r¬rYsz TPen.pensizecCs |jsdS|jdd�dS)NF©rX©rSrVrÉr«r«r¬rZ/ó z TPen.penupcCs |jrdS|jdd�dS)NTr]r^rÉr«r«r¬rX=r_z TPen.pendowncCrrµ)rSrÉr«r«r¬rNKs z TPen.isdowncCsl ddddddœ}|dur|jS||vr||}nd|kr#dkr,nntt|ƒƒ}nd}|j|d �dS) Nrr‰rÊrâr½)ZfastestZfastÚnormalZslowZslowestr�g%@)rp)rTr¤rôrV)rÀrpZspeedsr«r«r¬rpZs z TPen.speedcGs„ |r6t|ƒ}|dkr|d}}n|dkr|\}}n|dkr#|}}| |¡}| |¡}|j||d�dS| |j¡| |j¡fS)Nr½rrôrâ)rWrA)r’rýrVrrQrR)rÀrrGZpcolorZfcolorr«r«r¬r9€s   z TPen.colorcGó: |r| |¡}||jkrdS|j|d�dS| |j¡S)N)rW)rýrQrVrrr«r«r¬rW®s   z TPen.pencolorcGra)N)rA)rýrRrVrrr«r«r¬rAÓs   zTPen.fillcolorcCó |jdd�dS)NT©Úshown©rVrÉr«r«r¬ro÷s zTPen.showturtlecCrb)NFrcrerÉr«r«r¬rK s zTPen.hideturtlecCrrµ)rPrÉr«r«r¬rO rzTPen.isvisiblec Ks– |j|j|j|j|j|j|j|j|j|j |j dœ }|s |s |St |t ƒr(|}ni}|  |¡i}|D]}||||<q3|jrG|j d|f¡d}d|vrV|j|dkrVd}d|vrtt |dtƒrk| |df¡|d<|j|dkrtd}d|vr�|j|dkr�d}|r‡| ¡d|vr�|d|_d|vr™|d|_d|vr¢|d|_d|vr¼t |dtƒr·| |df¡|d<|d|_d |vrÅ|d |_d |vrÎ|d |_d |vrä|d }t |ttfƒrá||f}||_d |vrí|d |_d |vrö|d |_ d|vrÿ|d|_d|v�r |d|_ d |v�sd|v�sd |v�rE|j\} } |j} t |j ¡t |j ¡} } | | | | | | | | | | | | f|_| ¡dS)N) rdrXrWrArYrpraÚ stretchfactorrnrBrsrVFrXTrWrYrArprarfrnrBrdrs)rPrSrQrRrOrTrLrUrVrYrWrÄÚdictr,r!r±r¶rýÚ_newLiner¤r£rËrÏrÎrXrT)rÀrVZpendictZ_pdÚpZ_p_bufr©ZnewLineZsfZscxZscyZshfÚsaÚcar«r«r¬rV s’.ö               ÿ zTPen.penTcCrHrµr«©rÀZusePosr«r«r¬rhŸ rIz TPen._newLineFcCrHrµr«)rÀr³Zforcedr«r«r¬rT¡ rIz TPen._updatecCrHrµr«rr«r«r¬r£ rIz TPen._colorcCrHrµr«rr«r«r¬rý¥ rIzTPen._colorstrrµ©T)TF)r×rØrÙr±rýrMrarYrZrXrNrpr9rWrArorKrOrVrhrTrrýrzryr]rUr=rqrMr«r«r«r¬rKås< ÿ   &.%$   rKc@seZdZ dd„Zdd„ZdS)Ú _TurtleImagecCs||_d|_| |¡dSrµ)r’rŠÚ _setshape)rÀr’Ú shapeIndexr«r«r¬rýµ rNz_TurtleImage.__init__csþ|j‰||_|jdkrˆj|jkrdS|jdkr'ˆj|jkr(dS|jdvr4ˆ |j¡n|jdkrD|jD]}ˆ |¡q<ˆj|j|_|jdkrWˆ ¡|_dS|jdkrhˆ ˆjdj¡|_dS|jdkr}‡fdd„ˆj|jDƒ|_dSdS)Nr£rƒ)rƒr£r¥r7cóg|]}ˆ ¡‘qSr«©rC©rŒrR©r’r«r¬r�Ì óz*_TurtleImage._setshape..) r’rprŠrÙrSÚ_itemrCr„r¨)rÀrprRr«rtr¬roº s.ÿÿ          ÿÿz_TurtleImage._setshapeN)r×rØrÙrýror«r«r«r¬rn± s rnc@sÖeZdZ gZdedededfdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dldd„Z dd„Zdd„Zdd„Zdd„Zdmdd „Zdnd!d"„Zdmd#d$„Zd%d&„Zdmd'd(„Zd)d*„Zdod+d,„Zd-d.„Zd/d0„Zdpd2d3„Zd4d5„Zd6d7„Zd8d9„Zd:d;„Zdmdd?„Z!d@dA„Z"dBdC„Z#dqdEdF„Z$dGdH„Z%dIdJ„Z&dKdL„Z'dmdMdN„Z(dOdP„Z)drdSdT„Z*dUdV„Z+dWdX„Z,dYdZ„Z-d[d\„Z.d]d^„Z/e/Z0dmd_d`„Z1dsdbdc„Z2dsddde„Z3dsdfdg„Z4dhdi„Z5djdk„Z6eZ7dS)tr NrkrŠrŽcCs4t|tƒr ||_n>t|tƒr|tjvrtj |¡||_n*t|ttfƒrAtjD] }|j |kr3||_n q't|ƒ|_tj |j¡nt d|ƒ‚|j}t   ||  ¡¡t  |¡|j |¡| ¡|_t||ƒ|_d|_d|_d|_|_||_d|_| ¡|_|jg|_|jg|_g|_||_t |ƒ|_!| "¡dS)Nzbad canvas argument %sF)#rÄÚ_Screenr’rr ÚscreensrGrrÿr6r¢rrýrrKrçrMÚdrawingLineItemrnr‘Ú_polyÚ _creatingPolyÚ _fillitemÚ _fillpathrPÚ_hidden_from_screenÚcurrentLineItemr"Ú currentLinerßÚ stampItemsÚ_undobuffersizer¬r!rT)rÀZcanvasrkrŠrŽr’r«r«r¬rý× sD      þ €           zRawTurtle.__init__cCs2 t |¡t |¡| ¡| ¡| ¡dSrµ)rr`rKrMÚ_clearr rTrÉr«r«r¬r`ÿ s    zRawTurtle.resetcCs* |dus |dkrd|_dSt|ƒ|_dSr~)r!r¬)rÀÚsizer«r«r¬rh s zRawTurtle.setundobuffercCs |jdurdS|j ¡Sr~)r!r´rÉr«r«r¬rx+ s  zRawTurtle.undobufferentriescCsn d|_|_|jD]}|j |¡q |j ¡|_g|_|jr&|j  |j ¡|jg|_|  ¡|  |j ¡dSrµ)r|r}rßr’rSrMrr€rSrGr"r7rhr‚rQr«r«r¬rƒ8 s    zRawTurtle._clearcCs | ¡| ¡dSrµ)rƒrTrÉr«r«r¬r5F s zRawTurtle.clearcCsJ|j ¡|jjdkr dSt|jƒdkr#|j |j|j|j|j¡dSdSr¼) r’rrær’r€rNrrQrOrÉr«r«r¬r U s  ÿÿzRawTurtle._update_datacCs€ |j}|jdkr dS|jdkr$| ¡| ¡| ¡| |j¡dS| ¡|jdkr>| ¡D]}| ¡q1| ¡dSdSr¼) r’rår r rTrWrÜrær+)rÀr’r€r«r«r¬rT] s      ýzRawTurtle._updatecCs |j ||¡Srµ)r’r*)rÀÚflagrr«r«r¬rDo r7zRawTurtle._tracercCó |j |¡Srµ)r’rrr«r«r¬r„ ó zRawTurtle._colorcCr†rµ)r’rýrr«r«r¬rý‡ r‡zRawTurtle._colorstrc CsÌ t|tƒr|Sz|\}}}Wnttfy tdt|ƒƒ‚w|jjdkr4dd„|||fDƒ\}}}d|kr>dkrWnnd|krJdkrWnn d|krVdks_ntdt|ƒƒ‚d|||fS) NrðrˆcSrñròrórõr«r«r¬r�” röz!RawTurtle._cc..rr÷rørù)rÄrêrúr r¢r’rÝ)rÀrr•rûrür«r«r¬Ú_ccŠ s ÿ Fz RawTurtle._cccsâ |j‰| |j¡|j}d|_d|_t|ƒ}ˆ|_||_ˆ|_tˆ|jjƒ|_ˆj |¡ˆj |jjj }|dkrAˆ  ¡|j_ n%|dkrQˆ  ˆj dj¡|j_ n|dkrf‡fdd„ˆj |jjjDƒ|j_ ˆ ¡|_| ¡|S)Nr£rƒr7r¥crqr«rrrsrtr«r¬r�» ruz#RawTurtle.clone..)r’rhrSr‘rrnrprçrGrÙrŠrCrvr„r¨rMrrT)rÀr‘ÚqÚttyper«rtr¬r8™ s0    ÿ zRawTurtle.clonecCsD |dur |jjS||j ¡vrtd|ƒ‚|j |¡| ¡dS)NzThere is no shape named %s)r‘rpr’rr¢rorT)rÀrïr«r«r¬rkÁ s   zRawTurtle.shapecCs¶ ||ur|urdurnn |j\}}|||jfS|dks%|dkr)tdƒ‚|dur;|dur6||f}n||f}n|durG|jd|f}n|j}|durQ|j}|jd||d�dS)Nrz(stretch_wid/stretch_len must not be zeror[)rarfrB)rUrYr¢rV)rÀZ stretch_widZ stretch_lenrBrfr«r«r¬rlÜ s$"     ÿzRawTurtle.shapesizecCs" |dur|jS|jd|d�dS)Nr[)rarn)rVrV)rÀZshearr«r«r¬rn szRawTurtle.shearfactorcCs6 | |j|j}t |¡tj}|jd|d�dS)Nr[)rars)r'r rËr^r,rV©rÀrÐrsr«r«r¬rg szRawTurtle.settiltanglecCs< |durt |j¡ |j}||j|jS| |¡dSrµ)rËr:rWr r'r&rgr‹r«r«r¬rt3 s zRawTurtle.tiltanglecCs | || ¡¡dSrµ)rgrtr/r«r«r¬rsN szRawTurtle.tiltcCs0 ||ur|ur|urdur|jS|j\}}}}|dur%|}|dur+|}|dur1|}|dur7|}||||dkrEtdƒ‚||||f|_t | |¡tj} t | ¡t | ¡} } | || || || || || || || |f\} } }}| |f|_| ||_| |_ |j dd�dS)Nrz0Bad shape transform matrix: must not be singularr[r\) rXr¢rËr>r,rÏrÎrUrVrWrV)rÀÚt11Út12Út21Út22Zm11Zm12Zm21Zm22ZalfarjrkZa11Za12Za21Za22r«r«r¬rma s*&ÿ     ÿ  zRawTurtle.shapetransformcs` |j‰|j\‰‰|j\‰‰tˆˆˆjˆjƒ}dt|ƒ|\‰‰‡‡‡‡‡fdd„|DƒS)NrˆcsFg|]\}}ˆˆ|ˆ|ˆjˆˆ |ˆ|ˆjf‘qSr«)r=r>©rŒr¹rº©Ze0Ze1Zp0Zp1r’r«r¬r�’ s:ÿz(RawTurtle._polytrafo..)r’r"r$rr>r=r<)rÀrªÚer«r‘r¬Ú _polytrafo‰ s  ÿzRawTurtle._polytrafocCs4 |jj|jj}|jdkr| |j|jdk¡SdS)Nr£r¥)r’rÙr‘rprŠÚ _getshapepolyr¨)rÀrkr«r«r¬rG• s  ÿzRawTurtle.get_shapepolyFcsz |jdks|r|j\‰‰‰‰n|jdkr(td|jdƒ}|dd|f\‰‰‰‰n|jdkr/|St‡‡‡‡fdd„|DƒƒS) Nr[rZr½g@rr�c3s4�|]\}}ˆ|ˆ|ˆ|ˆ|fVqdSrµr«r�©rŒr�rŽr�r«r¬r± s€2z*RawTurtle._getshapepoly..)rLrXÚmaxrOr¶)rÀr£r¥rGr«r•r¬r”¦ s  zRawTurtle._getshapepolyc Cs  |j}|j|jj}|j}|jj}|jr—|jdkr—|jdkr—d|_ |j }|dkrY|j dkr1d}n |j dkr:|j }n|j }| | |¡¡}|j|j}}|j|||||dd�dS|d krg| ||j|¡dS|d kr“t||ƒD]$\} \} }}| | | d¡¡} |j| | | |¡| |¡|j dd�qpdSdS|j rœdS|dkr©| |d d d ¡n"|d krº| ||j|jd j ¡n|d krË|D] } | | d d d ¡qÀd|_ dS)NrFr£r�r½rZT©r(rBrzrJrƒr¥©rÔrÔrÔr®r7)r’rÙr‘rprŠrvrPrærår~r¨rLrOrYr“r”rRrQrLr‡r"Úziprˆ) rÀr’rkrŠZtitemÚtshaper?ÚfcÚocrRrªr«r«r¬r ³ sN  ÿÿý  ÿ zRawTurtle._drawturtlec CsT |j}|j|jj}|j}|j}|dkrH| ¡}|jdkr!d}n |jdkr*|j}n|j }|  |  |¡¡}|j |j }}|j|||||dd�nR|dkrZ| d¡}| ||j|¡n@|d kršg}|D] } | ¡} | | ¡qbt|ƒ}t||ƒD]"\} \} }}|  |  | d¡¡} |j| | | |¡| |¡|j dd�qw|j |¡|j d |f¡|S) Nr£r�r½rZTr—rƒr®r¥rr)r’rÙr‘rprŠr¨rCrLrOrYr“r”rRrQrLr„r‡r"rGr¶r™rˆr�r!r±) rÀr’rkrŠršÚstitemr?r›rœZelementrRrªr«r«r¬rrÛ s@ ÿ  ÿ zRawTurtle.stampcCs¶ ||jvr#t|tƒr|D]}|j |¡q n|j |¡|j |¡d|f}|j}||jvr1dS|j |¡}|j |¡||j krK|j d|j |_ |j  |j d|j dg¡dS)Nrrr½) r�rÄr¶r’rSrr!r®Úindexr¯r­Úinsert)rÀÚstampidZsubitemrRZbufržr«r«r¬Ú _clearstamp s"  ÿ       zRawTurtle._clearstampcCs | |¡| ¡dSrµ)r¡rT)rÀr r«r«r¬r6 s zRawTurtle.clearstampcCs` |dur |jdd…}n|dkr|jd|…}n|j|d…}|D]}| |¡q"| ¡dSr~)r�r¡rT)rÀrZtoDeleterRr«r«r¬r7- s  zRawTurtle.clearstampsc Cs¸ |j|j|jt|jtƒf}|j}d|j|||j|j dd…|  |j¡|j dd…ff}|j r5|j   |¡|j}|jrª|jdkrª||}|d|jd|d|jd}dt|ddd|j|jƒ}|d|} td|ƒD](} | dkr|d } nd } || | |_|jr—| |j||jf|j|j| ¡| ¡qs|jrª|j|jd d |jd �|jr³|j  |¡t|jtƒr¿|j |¡||_|jrË|j |¡t|j ƒdkrÖ| ¡| ¡dS)NÚgor½rrôr�râçš™™™™™ñ?rˆTF©rÔrÔr®©r(rzé*)rSrQrOrÄr}rÚr’r"rr€r”rßr!r±rTrår=r>r¤r‘rNryrTrGr{rzr’rh) rÀr2Úgo_modesr’Z undo_entryÚstartÚdiffÚdiffsqÚnhopsÚdeltarrJr«r«r¬r-I s^ ý    ýÿ $$  þ  ÿ     zRawTurtle._gotocs |\}}}}|\}}}} |\} } } ‰|j‰t|j|ƒdkr#tdƒ| |_| |_| ddgkr2d} n|} ˆj| | | |d�‡‡fdd„|jDƒ}|D] }ˆ |¡|j  |¡qJ|}|j rLjj dkrÇ||}|d ˆj d |dˆj d }dt|dd d |j |j ƒ}|d |}td|ƒD]%}|dkržd}nd}||||_|r¶ˆ |j||jf|||¡| ¡q•|rLjj|jdd|d�||_|jrät|jƒd krÙ|j ¡|jgkräd|_d|_| rý|jgkród|_tdƒn |jdurý|j ¡| ¡dS)Nr�z$undogoto: HALLO-DA-STIMMT-WAS-NICHT!rÔr®r¥cs&g|]}|ˆvrˆ |¡dkr|‘qS)r¨)rŠr‹©rßr’r«r¬r�‘ sÿz'RawTurtle._undogoto..r½rrôrâr£rˆTFr¤zUnwahrscheinlich in _undogoto!)r’r<r"r¡rr€rNrßrSrrTrår=r>r¤r‘ryrTr{r’rzr²r})rÀÚentryÚoldÚnewr§ZcoodataZdrawingZpcZpsrBZcLIZcLr“ZusepcZtodeleter�r¨r©rªr«r¬rrJr«r­r¬Ú _undogoto~ sh     $$ þ  ÿ       zRawTurtle._undogotocCs¬ |jr|j d||jf¡||j9}|j |¡}|jj}|dkrM|jdkrMd|j}dtt |ƒ|ƒ}d||}t |ƒD] }|j |¡|_|  ¡q?||_|  ¡dS)NÚrotr½rg@rˆ) r!r±r'r$rÓr’rårTr¤r<r‘rT)rÀrÐZ neworientr ZanglevelrFr¬rær«r«r¬r0¿ s       zRawTurtle._rotateTcCst t|jƒdkr#|j |j|j|j|j¡|j ¡|_|j  |j¡n |jj|jdd�g|_|r8|j g|_dSdS)Nr½T)rJ) r’r€r’rNrrQrOrMrßrGr"rlr«r«r¬rhÑ sÿ ÿzRawTurtle._newLinecCs t|jtƒSrµ)rÄr}rÚrÉr«r«r¬rBá s zRawTurtle.fillingcCsZ | ¡s|j ¡|_|j |j¡|jg|_| ¡|j r'|j   d|jf¡|  ¡dS)NÚ beginfill) rBr’rCr|rßrGr"r}rhr!r±rTrÉr«r«r¬r1ï s   zRawTurtle.begin_fillcCsd | ¡r0t|jƒdkr$|jj|j|j|jd�|jr$|j d|jf¡d|_|_|  ¡dSdS)NrôrDÚdofill) rBr’r}r’rLr|rRr!r±rTrÉr«r«r¬r> s ÿ  ùzRawTurtle.end_fillc GsL |s(t|ttfƒr| |¡}|jt|jdƒ}n!|j}|s'|jt|jdƒ}n|dur5|jt|jdƒ}| |¡}t|jdƒr^|j  |j ||¡}|j   |¡|j r\|j  d|f¡dSdS| ¡}|j rp|j  dg¡d|j _z$| ¡dkr{| ¡| ¡| |¡| |¡| d¡W| |¡n| |¡w|j r¤d|j _dSdS) NrÉÚ_dotr<rATrZrF)rÄrêr¶rýrOr–rQÚhasattrr’rµr"rßrGr!r±rVr°rarMrXrYrWrC)rÀr„r9rRrVr«r«r¬r< sB  €   ÿ     ÿz RawTurtle.dotcCsL |j |j||||j¡\}}| ¡|j |¡|jr$|j d|f¡|S)NÚwri) r’rbr"rQrTrßrGr!r±)rÀr`rar_rRr2r«r«r¬rbH sÿ zRawTurtle._writerP©ÚArialrÂr`cCsf |jr|j dg¡d|j_| t|ƒ| ¡|¡}|r(| ¡\}}| ||¡|jr1d|j_dSdS)NrATF)r!r±r°rbrêr¦r[re)rÀÚargZmoverar_r2r¹rºr«r«r¬r{S s   ÿzRawTurtle.writecCs |jg|_d|_dSr )r"rzr{rÉr«r«r¬r2p s zRawTurtle.begin_polycCs d|_dS©NF)r{rÉr«r«r¬r?~ s zRawTurtle.end_polycCs |jdur t|jƒSdSrµ)rzr¶rÉr«r«r¬rD‹ s ÿzRawTurtle.get_polycCrrµrtrÉr«r«r¬rF˜ s zRawTurtle.getscreencCs |Srµr«rÉr«r«r¬rH¨ szRawTurtle.getturtlecCr‰rµ)r’rrVr«r«r¬rWÀ rzRawTurtle._delayr½cCó$ |j |jj|||¡| ¡dSrµ)r’rrr‘rvrTrr«r«r¬rRÅ s zRawTurtle.onclickcCr¼rµ)r’rsr‘rvrTrr«r«r¬rTÚ s zRawTurtle.onreleasecCs |j |jj|||¡dSrµ)r’rtr‘rvrr«r«r¬rSó szRawTurtle.ondragcCs< |jdurdS|dkr"|\}}| | ||j¡|j ¡}dS|dkr1|d}| |¡dS|dkr<| |¡dS|dvrR|d}|j |¡|j  |¡dS|dkrf|d}|jj |dddd �dS|d kr‰|d}d|_ |_ ||jvr‡|j |¡|j  |¡dSdS|d krœt  ||d¡|j ¡dSdS) Nr²rrrr¢)r·r<r´r˜r®rAr³rV)r!r0r'r²r6r±r’rSrßrrLr|r}rKrV)rÀÚactionr©rÐZdegPAUZdummyr�rRr«r«r¬Ú_undos@    ÿ   þþzRawTurtle._undocCsv |jdurdS|j ¡}|d}|dd…}|dkr3|r1| ¡}| |d|dd…¡|sdSdS| ||¡dS)Nrr½rA)r!r²r¾)rÀrRr½r©r«r«r¬rw(s    þzRawTurtle.undorrµr$)NNNN)Frm)FrPr¸r )8r×rØrÙrxr±rýr`rhrxrƒr5r rTrDrrýrˆr8rkrlrnrgrtrsrmr“rGr”r rrr¡r6r7r-r±r0rhrBr1r>r<rbr{r2r?rDrFrHrErWrRrTrSr¾rwrvr«r«r«r¬r Ð st ý(   (  (  (  (- 5A  0        r cCs tjdur tƒt_tjSrµ)r Ú_screenrwr«r«r«r¬r Ks r c@sfeZdZdZdZedZdd„Zededededfd d „Zd d „Z d d„Z dd„Z dd„Z dS)rwNr)cCs²tjdurtƒt_|_|j tj¡|j |j¡tjdurWtd}td}td}td}td}td}|j  ||||¡|j  ¡t_t   |tj¡|  ||||¡dSdS)Nrzr‚rƒr„r…r†)rwÚ_rootr%r)Ú_titler0Ú_destroyrr±r)r*rrýr&)rÀrzr‚rƒr„r…r†r«r«r¬rýYs   öz_Screen.__init__rzr‚r…r†cCsÀ t|jdƒs dS|j ¡}|j ¡}t|tƒr(d|kr"dkr(nn||}|dur2||d}t|tƒrGd|krAdkrGnn||}|durQ||d}|j ||||¡| ¡dS)Nr-rr½rô)r¶rÀr2r3rÄr£r-r,)rÀrzr‚r+r,r[Zshr«r«r¬r&os   " "  z _Screen.setupcCs" tjdur tj |¡|t_dSrµ)rwrÀr)rÁ)rÀZ titlestringr«r«r¬r)—s  z _Screen.titlecCs:|j}|tjurdt_dt_dt_dt_dt_| ¡dSr») rÀrwr rèr¿rrrr/)rÀÚrootr«r«r¬r¨s  z_Screen._destroycCrrµ)rÂrÉr«r«r¬r²s z _Screen.byecsN ‡fdd„}ˆ |¡tdrdSztƒWdSty&tdƒYdSw)Ncs ˆ ¡dSrµ)r)r¹rºrÉr«r¬ÚexitGracefullyÍrz+_Screen.exitonclick..exitGracefullyr”r)rRr±rÚAttributeErrorÚexit)rÀrÄr«rÉr¬rºs    ÿz_Screen.exitonclick) r×rØrÙrÀrr±rÁrýr&r)rÂrrr«r«r«r¬rwSs   ÿ( rwc@s2eZdZ dZdZedededfdd„ZdS)r NrkrŠrŽcCs,tjdur tƒt_tj|tj|||d�dS)N)rkrŠrŽ)r r¿r r rý)rÀrkrŠrŽr«r«r¬rýás   ýzTurtle.__init__)r×rØrÙrèr¿r±rýr«r«r«r¬r Øsýr Úturtle_docstringdictcCs  i}tD] }d|}t|ƒj||<qtD] }d|}t|ƒj||<qtd|dƒ�Q}tdd„|Dƒƒ}| d¡|dd…D]}| d t|ƒ¡| d ||¡q?|d}| d t|ƒ¡| d ||¡| d ¡| ¡WdƒdS1s~wYdS) Nz_Screen.zTurtle.z%s.pyr?css&�|]}| d¡dtvr|VqdS)r›r½N)rÚ _alias_listrõr«r«r¬rs €ÿÿz&write_docstringdict..zdocsdict = { rçz%s : z """%s """, z """%s """ z} ) Ú_tg_screen_functionsr¢Ú__doc__Ú_tg_turtle_functionsrœrr{ÚreprÚclose)r¥ÚdocsdictÚ methodnamer©r¦rär«r«r¬r~îs(    "õc Cs^ dd| ¡i}t|ƒ}|j}|D]}z ||t|ƒ_Wqty,td|ƒYqwdS)Nz!turtle_docstringdict_%(language)sr�zBad docstring-entry: %s)r¦Ú __import__rÎr¢rÊr°r¡)ZlangÚmodnameÚmodulerÎr©r«r«r¬Úread_docstringss ÿürÓzCannot find docsdict forz;Unknown Error when trying to import %s-docstring-dictionaryc Csî d}}t |j¡\}}}|dd…}|dd…}|jpg}dd„|Dƒ}dgt|ƒt|ƒ|}dd„t||ƒDƒ} |durO|  d|¡| d|¡|dura|  d|¡| d|¡d | ¡}d |}d |¡}d |}||fS) Nr®r½cSsg|]}d|f‘qS)z=%rr«)rŒrªr«r«r¬r�=sz"getmethparlist..cSsg|]\}}||‘qSr«r«)rŒrºZdfltr«r«r¬r�?röÚ*z**z, z(%s))ÚinspectZgetargsÚ__code__Ú __defaults__r’r™rGr) ZobZdefTextZcallTextrZvarargsZvarkwZitems2ZrealArgsÚdefaultsZitems1r«r«r¬Úgetmethparlist-s(     rÙcCóL ddl}|dur dStd}| d|d¡}| d|¡}| d|¡}|S)Nrr�ú%s.r®ú \(.+ %s\):ú:©Úrer±ÚreplaceÚcompileÚsub)ÚdocstrrßZ turtlenameÚ newdocstrÚparexpr«r«r¬Ú_turtle_docreviseLó ræcCrÚ)Nrr“rÛr®rÜrÝrÞ)rãrßZ screennamerärår«r«r¬Ú_screen_docreviseXrç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 Csl|D]1}t||ƒ}t|ƒ\}}|dkrtd||ƒqtj|||||d�} t| tƒƒ||jƒtƒ|_qdS)Nr®z>>>>>>)ÚobjÚinitrïZ paramslistZargslist)ÚgetattrrÙr¡Ú __func_bodyÚformatrìÚglobalsrÊ) Z functionsr¸rérêZ docreviserÏrèZpl1Zpl2Zdefstrr«r«r¬Ú_make_global_funcsxs    ÿ ÷rïzTurtle._screenzScreen()z Turtle._penzTurtle()Ú__main__cCstƒrtƒdStƒdSrµ)rNr]rUr«r«r«r¬Ú switchpen�s  rñcCsl tƒtdƒtƒtdƒtƒtdƒtdƒD]-}|dkr#tƒtdƒD] }tdƒt dƒq'|dkr=t dƒt ƒtƒtd ƒtƒqtd ƒt d ƒtd ƒtƒt dƒtdƒt dƒtdƒt d ƒtƒt dd ƒt dd ƒt dƒtdƒD]}tdƒt dƒtdƒt dƒq€tdƒtƒtdƒD]}tdƒt dƒtdƒt dƒqžt ƒdS)NTédrârôrÉrîéZZmaroonr r½rŒFé´Z startstartr¨ÚredrÄ)r`r*ryr0r=rzr‘r1rCrPr9r>r_r{)r�rær«r«r¬Údemo1“sZ          röcCsV tdƒtƒtdƒttddƒƒtddƒd}tdƒtdƒD] }tƒt |dƒq"t dƒt ƒr:t ƒt ƒs4t ƒtdƒtd ƒd}td ƒtdƒtd ƒtd d ƒD]8}|dkrmtƒtd d|dd|ƒtdƒD] }t|ƒtdƒqqtƒ|d7}tdƒttƒddƒqXtdƒtƒtdƒtdƒtƒtddƒtdƒtƒtdƒD]}t ddƒtdƒtdƒtdƒq³tƒtdƒtƒtdƒtƒtdƒtƒ}| d¡tƒ}| d¡| d¡|  ¡| d¡| d¡| ¡| dd¡| d¡| ¡| d¡| dd¡| d¡| d¡tt|ƒƒd}| |¡dk�rl| d¡| d ¡| | |¡¡| d¡|d!dk�r`|  ¡|  ¡tƒ|d7}| |¡dk�s7|j d"d#d$d%�| d&¡| d¡d'd(„}t! "d¡t ƒ�r—|  ¡|  ¡t ƒ�s‹| d¡|j d)d*d+�| #|d¡dS),Nr½rârr@róér‰zwait a moment...r÷Zgreenrôr»rºééxé éFr rõZyellowrÉé2r‘rZié(rÊZblueZorangerôg @g333333ã?rîzCAUGHT! )r¹rºÚboldr_)r_rarŒcSstƒtƒdSrµ)rr)rrr«r«r¬Úbabas zdemo2..babaz Click me!)ZCourierrúrþ)r_)$rprqrYrdrur;rbr‘rñr4r{rxrwr`rQrrWr1rAr@r>r]rUr9rkrHrar rPryrIr=rrÚtimeÚsleeprR)rEræZlaenger�Ztrir‘r³rÿr«r«r¬Údemo2Ès¸  ÿ                     ÷   þ r)r«)rÇ)EZ_verZtkinterrûrárËrrÕrßZos.pathrrrÚcopyrrZ _tg_classesrÉrËZ _tg_utilitiesÚ__all__rÈr±r­r´r°r¡r¶rrÝrårërïrürrÿr&r%Úobjectr4r€r¢rr¬rrrKrnr r r rwr r r~rÓZ _LANGUAGEÚ ImportErrorrÙrærèrìrïrrr×rñrörrr«r«r«r¬Ús(N   ÿÿÿþýüûúùø ÷ ö õ ô óòñðí   ÿ5 ÿ c /&/O " € ÿÿ  ÿÿ 5c �Þ