Ë òº�½…NãóD—dZddlZddlZddlZdZdZdZdZedzZeedzd zedzd zzzZ d Z d Z d Z d„Z d„Zd„ZGd„de«ZGd„dej$«ZGd„de«ZGd„de«ZGd„de«Zd„Zedk(re«ej2«yy)z¿ turtle-example-suite: tdemo_nim.py Play nim against the computer. The player who takes the last stick is the winner. Implements the model-view-controller design pattern. éNi€iàééé éé é)é?r r)éÿéÌr )r r r có>—tjtt«S©N)ÚrandomÚrandintÚ MINSTICKSÚ MAXSTICKS©óú%/usr/lib/python3.12/turtledemo/nim.pyÚ randomrowrs€Ü �>‰>œ)¤YÓ /Ð/rcó–—|d|dz |dz }|dk(r t|«Std«D]}|||z }|||ksŒ||f}|cSy)Nréré)Ú randommoveÚrange)ÚstateÚxoredÚzÚsÚmoves rÚ computerzugr !sd€Ø �!‰H�u˜Q‘xÑ  %¨¡(Ñ *€EØ �‚zܘ%Ó Ð Ü �1ŽXˆØ �!‰H�uÑ ˆØ ��a‘‹=Ø�q�6ˆDØŠKñ rcó¦—t|«} tjdd«}|||dkDkDrnŒ#tj|dkD||dz «}||fS)Nrrr)Úmaxrr)rÚmrÚrands rrr+s]€Ü ˆE‹ €AØ Ü �N‰N˜1˜QÓ ˆØ �‰8�q˜1‘uÒ Ø ð ô �>‰>˜!˜a™%  q¡¨!¡Ó ,€DØ ˆdˆ7€Nrcó*—eZdZd„Zd„Zd„Zd„Zd„Zy)ÚNimModelcó—||_yr )Úgame)Úselfr(s rÚ__init__zNimModel.__init__6s €Øˆ� rcóX—|jjtjtjfvryt «t «t «g|_d|_d|_|jjj«tj|j_y)Nr) r(rÚNimÚCREATEDÚOVERrÚsticksÚplayerÚwinnerÚviewÚsetupÚRUNNING©r)s rr3zNimModel.setup9sg€Ø �9‰9�?‰?¤3§;¡;´·±Ð"9Ñ 9Ø Ü “{¤I£K´³Ð=ˆŒ ؈Œ ؈Œ Ø � ‰ �‰×ÑÔÜŸ+™+ˆ� ‰ �rcóþ—|j|}||j|<|jjj||||j«|j «rUt j|j_|j|_ |jjj«y|jdk(r9d|_t|j«\}}|j||«d|_yy)Nrr) r/r(r2Ú notify_mover0Ú game_overr,r.rr1Ú notify_overr r)r)ÚrowÚcolÚ maxspaltes rrz NimModel.moveBsµ€Ø—K‘K Ñ$ˆ ؈� ‰ �CÑØ � ‰ �‰×"Ñ" 3¨¨Y¸¿ ¹ ÔDØ �>‰>Ô Ü!Ÿh™hˆD�I‰IŒOØŸ+™+ˆDŒKØ �I‰I�N‰N× &Ñ &Õ (Ø �[‰[˜AÒ ØˆDŒKÜ" 4§;¡;Ó/‰HˆC�Ø �I‰I�c˜3Ô ØˆD�Kð rcó$—|jgd¢k(S)N)rrr)r/r5s rr8zNimModel.game_overPs€Ø�{‰{šiÑ'Ð'rcóN—|j||kry|j||«yr )r/r©r)r:r;s rr7zNimModel.notify_moveSs$€Ø �;‰;�sÑ ˜sÒ "Ø Ø � ‰ �#�sÕrN)Ú__name__Ú __module__Ú __qualname__r*r3rr8r7rrrr&r&5s„òò&ò ò(órr&có—eZdZd„Zd„Zd„Zy)ÚStickcó¤—tjj|d¬«||_||_||_|j ||«\}}|jd«|jtdz tdz «|jd«|j«|j||«|jd«|j«y)NF©ÚvisibleÚsquareg$@g4@rÚwhite)ÚturtleÚTurtler*r:r;r(ÚcoordsÚshapeÚ shapesizeÚHUNITÚWUNITÚspeedÚpuÚgotoÚcolorÚ showturtle)r)r:r;r(ÚxÚys rr*zStick.__init__Zs›€Ü� ‰ ×јt¨UÐÔ3؈ŒØˆŒØˆŒ Ø�{‰{˜3 Ó$‰ˆˆ1Ø � ‰ �8ÔØ �‰”u˜T‘z¤5¨¡:Ô.Ø � ‰ �1Œ Ø �‰Œ Ø � ‰ �!�AŒØ � ‰ �7ÔØ �‰ÕrcóÀ—t|d«\}}dd|zzd|zztz}dd|zztz}|tdzz tdzztdz|z tdzz fS)Nrrrr)ÚdivmodrPrOÚ SCREENWIDTHÚ SCREENHEIGHT)r)r:r;ÚpacketÚ remainderrVrWs rrLz Stick.coordshsq€Ü" 3¨›Nш� Ø ��f‘‰_˜q 9™}Ñ ,´Ñ 5ˆØ ��S‘‰[œEÑ !ˆØ”; !Ñ#Ñ#¤e¨q¡jÑ0´,À!Ñ2CÀaÑ2GÌ%ÐSTÉ*Ñ2TÐTÐTrcóÈ—|jjtjk7ry|jjj |j |j«yr )r(rr,r4Ú controllerr7r:r;)r)rVrWs rÚmakemovezStick.makemovens;€Ø �9‰9�?‰?œcŸk™kÒ )Ø Ø � ‰ ×Ñ×(Ñ(¨¯©°4·8±8ÕØ � ‰ ×Ñ×јtŸy™yŸ~™~×3Ñ3°XÔ>Ø � ‰ �‰×ÑÐ>Ô?Ø � ‰ ×Ñ×ÑÕ!rcó†—|jryd|_|jjj||«d|_y)NTF)rŽr(rfr7r?s rr7zNimController.notify_moveÅs2€Ø �9Š9Ø ØˆŒ Ø � ‰ �‰×#Ñ# C¨Ô-؈� rN)r@rArBr*r7rrrrŠrЏs „ò "órrŠcó—eZdZdZdZdZd„Zy)r,rrrcóœ—tj|_||_t |«|_t |«|_t|«|_ yr ) r,r-rrer&rfrbr2rŠr_)r)res rr*z Nim.__init__Ñs6€Ü—[‘[ˆŒ ؈Œ ܘd“^ˆŒ ܘD“MˆŒ Ü'¨Ó-ˆ�rN)r@rArBr-r4r.r*rrrr,r,Ís„Ø€GØ€GØ €Dó.rr,có˜—tj«}|jd«|jtt «t |«}y)NÚstandardÚ EVENTLOOP)rJÚScreenÚmoder3rZr[r,)Ú mainscreenÚnims rÚmainržÙs5€Ü—‘“€J؇O�O�JÔØ×Ñ”[¤,Ô/Ü ˆj‹/€CØ rÚ__main__)Ú__doc__rJrrƒrZr[rrrOrPrr‚r…rr rÚobjectr&rKrDrbrŠr,ržr@ÚmainlooprrrÚr£sÛðñ óÛ Û à€ Ø€ à € Ø € à˜Ñ€Ø˜ a™¨2Ñ-°¸Q±À!Ñ0CÑCÑD€à €Ø €Ø€ò0òòô!ˆvô!ôH=ˆF�M‰Mô=ô6A ˆfôA ôH�Fôô* .ˆ&ô .òð ˆzÒÙ„FØ€F‡O�OÕðr