NDdZddlZddlZddlZdZdZdZdZedzZeedzd zedzd zzzZ d Z d Z d Z dZ dZdZGddeZGddej$ZGddeZGddeZGddeZdZedk(reej2yy)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. Nii  )?r r)r )r r r c>tjttSN)randomrandint MINSTICKS MAXSTICKS5/opt/alt/python312/lib64/python3.12/turtledemo/nim.py randomrowrs >>)Y //rc|d|dz |dz }|dk(r t|StdD]}|||z }|||ks||f}|cSy)Nrr) randommoverange)statexoredzsmoves r computerzugr !sd !HuQx %( *E z%  1X !Hu  a=q6DK rct|} tjdd}|||dkDkDrn#tj|dkD||dz }||fS)Nrrr)maxrr)rmrrands rrr+s] E A  NN1Q  8q1u    >>!a%q! ,D d7Nrc*eZdZdZdZdZdZdZy)NimModelc||_yr )game)selfr(s r__init__zNimModel.__init__6s  rcX|jjtjtjfvryt t t g|_d|_d|_|jjjtj|j_y)Nr) r(rNimCREATEDOVERrsticksplayerwinnerviewsetupRUNNINGr)s rr3zNimModel.setup9sg 99??3;;"9 9  {IK=    ++ rc|j|}||j|<|jjj||||j|j rUt j|j_|j|_ |jjjy|jdk(r9d|_t|j\}}|j||d|_yy)Nrr) r/r(r2 notify_mover0 game_overr,r.rr1 notify_overr r)r)rowcol maxspaltes rrz NimModel.moveBsKK$  C ""3Y D >> !hhDIIO++DK IINN & & ( [[A DK"4;;/HC IIc3 DK rc$|jgdk(S)N)rrr)r/r5s rr8zNimModel.game_overPs{{i''rcN|j||kry|j||yr )r/rr)r:r;s rr7zNimModel.notify_moveSs$ ;;s s "  #srN)__name__ __module__ __qualname__r*r3rr8r7rrrr&r&5s& (rr&ceZdZdZdZdZy)Stickctjj|d||_||_||_|j ||\}}|jd|jtdz tdz |jd|j|j|||jd|jy)NFvisiblesquareg$@g4@rwhite)turtleTurtler*r:r;r(coordsshape shapesizeHUNITWUNITspeedpugotocolor showturtle)r)r:r;r(xys rr*zStick.__init__Zs tU3 {{3$1 8 uTz5:. 1    !A 7 rct|d\}}dd|zzd|zztz}dd|zztz}|tdzz tdzztdz|z tdzz fS)Nrrrr)divmodrPrO SCREENWIDTH SCREENHEIGHT)r)r:r;packet remainderrVrWs rrLz Stick.coordshsq"3N f_q9} , 5 S[E !;!##eqj0,!2Ca2G%ST*2TTTrc|jjtjk7ry|jjj |j |jyr )r(rr,r4 controllerr7r:r;)r)rVrWs rmakemovezStick.makemovens; 99??ckk )  ((488 tyy~~33X> >? !rc|jryd|_|jjj||d|_y)NTF)rr(rfr7r?s rr7zNimController.notify_moves2 99   ##C- rN)r@rArBr*r7rrrrrs  "rrceZdZdZdZdZdZy)r,rrrctj|_||_t ||_t ||_t||_ yr ) r,r-rrer&rfrbr2rr_)r)res rr*z Nim.__init__s6[[  d^ DM '-rN)r@rArBr-r4r.r*rrrr,r,sGG D.rr,ctj}|jd|jtt t |}y)Nstandard EVENTLOOP)rJScreenmoder3rZr[r,) mainscreennims rmainrs5JOOJ[,/ j/C r__main__)__doc__rJrrrZr[rrrOrPrrrrr robjectr&rKrDrbrr,rr@mainlooprrrrs     a2-Q!0CCD  0!v!H=FMM=6A fA HF* .& . zFFOOr