o ­=?hqã@sìdZddlZddlZddlZdZdZdZdZedZeedd edd Z d Z d Z d Z dd„Z dd„Zdd„ZGdd„deƒZGdd„dejƒZGdd„deƒZGdd„deƒZGdd„deƒZdd„Zed krteƒe ¡dSdS)!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àééé éé é)é?rr)éÿéÌr )r r r cCs t tt¡S©N)ÚrandomÚrandintÚ MINSTICKSÚ MAXSTICKS©rrú5/opt/alt/python310/lib64/python3.10/turtledemo/nim.pyÚ randomrows rcCsb|d|dA|dA}|dkrt|ƒStdƒD]}|||A}|||kr.||f}|SqdS)Nréré)Ú randommoveÚrange)ÚstateZxoredÚzÚsÚmoverrrÚ computerzug!s   þþrcCsJt|ƒ} t dd¡}|||dkkrnqt |dk||d¡}||fS)NTrrr)Úmaxr r )rÚmrZrandrrrr+s ýrc@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) ÚNimModelcCs ||_dSr )Úgame)ÚselfrrrrÚ__init__6s zNimModel.__init__cCsP|jjtjtjfvr dStƒtƒtƒg|_d|_d|_|jj   ¡tj |j_dS)Nr) rrÚNimÚCREATEDÚOVERrÚsticksÚplayerÚwinnerÚviewÚsetupÚRUNNING©r rrrr)9s zNimModel.setupcCsŒ|j|}||j|<|jj ||||j¡| ¡r*tj|j_|j|_ |jj  ¡dS|jdkrDd|_t |jƒ\}}|  ||¡d|_dSdS)Nrr) r%rr(Ú notify_mover&Ú game_overr"r$rr'Ú notify_overrr)r ÚrowÚcolÚ maxspalterrrrBs      üz NimModel.movecCs|jgd¢kS)N)rrr)r%r+rrrr-PszNimModel.game_overcCs"|j||kr dS| ||¡dSr )r%r©r r/r0rrrr,SszNimModel.notify_moveN)Ú__name__Ú __module__Ú __qualname__r!r)rr-r,rrrrr5s   rc@s$eZdZdd„Zdd„Zdd„ZdS)ÚStickcCs„tjj|dd||_||_||_| ||¡\}}| d¡| t dt d¡|  d¡|  ¡|  ||¡| d¡| ¡dS)NF©ZvisibleZsquareg$@g4@rÚwhite)ÚturtleÚTurtler!r/r0rÚcoordsÚshapeZ shapesizeÚHUNITÚWUNITÚspeedÚpuÚgotoÚcolorZ showturtle)r r/r0rÚxÚyrrrr!Zs     zStick.__init__cCs^t|dƒ\}}dd|d|t}dd|t}|tdtdtd|tdfS)Nrrrr)Údivmodr>r=Ú SCREENWIDTHÚ SCREENHEIGHT)r r/r0ZpacketZ remainderrCrDrrrr;hs(z Stick.coordscCs*|jjtjkr dS|jj |j|j¡dSr )rrr"r*Ú controllerr,r/r0)r rCrDrrrÚmakemovenszStick.makemoveN)r3r4r5r!r;rIrrrrr6Ys r6c@s>eZdZdd„Zddd„Zdd„Zdd „Zd d „Zd d „ZdS)ÚNimViewcCs°||_|j|_|j|_|j d¡|j d¡|j d¡tjdd|_|j  ¡|j  d¡i|_ t dƒD]}t t ƒD] }t|||ƒ|j ||f<qr\r^rarrrÚobjectrr:r6rJrbr"rfr3ZmainlooprrrrÚs4   $D  þ