+
     BiM                        ^ RI t ^ RIt^ RItRtRt^t^t]^,          t]]^,          ^,          ]^,          ^,          ,           ,          tRt	Rt
RtR tR tR t ! R R]4      t ! R	 R
] P"                  4      t ! R R]4      t ! R R]4      t ! R R]4      tR t]R8X  d   ]! 4        ] P0                  ! 4        R# R# )    Ni  i  c                  @    \         P                  ! \        \        4      # N)randomrandint	MINSTICKS	MAXSTICKS     %/usr/lib/python3.14/turtledemo/nim.py	randomrowr      s    >>)Y//r
   c                     V ^ ,          V ^,          ,          V ^,          ,          pV^ 8X  d   \        V 4      # \        ^4       F&  pW,          V,          pW0V,          8:  g   K!  W#3pVu # 	  R# r   N)
randommoverange)statexoredzsmoves   &    r   computerzugr      s^    !HuQx%(*Ez%  1XHua=6DK	 r
   c                     \        V 4      p \        P                  ! ^ ^4      pW,          V^8  8  g   K*   \        P                  ! T^8  Y,          ^,
          4      pY#3# )T)maxr   r   )r   mr   rands   &   r   r   r   )   sP    E
A
NN1Q8q1u>>!a%!,D7Nr
   c                   >   a  ] tR t^3t o R tR tR tR tR tRt	V t
R# )NimModelc                    Wn         R # r   )game)selfr   s   &&r   __init__NimModel.__init__4   s    	r
   c                b   V P                   P                  \        P                  \        P                  39  d   R # \        4       \        4       \        4       .V n        ^ V n        R V n        V P                   P                  P                  4        \        P                  V P                   n        R # r   )r   r   NimCREATEDOVERr   sticksplayerwinnerviewsetupRUNNINGr   s   &r   r*   NimModel.setup7   sg    99??3;;"99 {IK=		++		r
   c                   V P                   V,          pW P                   V&   V P                  P                  P                  WW0P                  4       V P                  4       '       dW   \        P                  V P                  n        V P                  V n	        V P                  P                  P                  4        R# V P                  ^ 8X  d9   ^V n        \        V P                   4      w  rV P                  W4       ^ V n        R# R# r   )r&   r   r)   notify_mover'   	game_overr#   r%   r   r(   notify_overr   r   )r   rowcol	maxspaltes   &&& r   r   NimModel.move@   s    KK$	C		""3YD>>!hhDIIO++DKIINN&&([[ADK"4;;/HCIIcDK	 r
   c                $    V P                   . RO8H  # )r   )r   r   r   )r&   r,   s   &r   r0   NimModel.game_overN   s    {{i''r
   c                \    V P                   V,          V8:  d   R # V P                  W4       R # r   )r&   r   r   r2   r3   s   &&&r   r/   NimModel.notify_moveQ   s"    ;;ss"		#r
   )r   r'   r&   r(   N)__name__
__module____qualname____firstlineno__r    r*   r   r0   r/   __static_attributes____classdictcell____classdict__s   @r   r   r   3   s#     &( r
   r   c                   2   a  ] tR t^Wt o R tR tR tRtV tR# )Stickc                   \         P                  P                  V R R7       Wn        W n        W0n        V P                  W4      w  rEV P                  R4       V P                  \        R,          \        R,          4       V P                  ^ 4       V P                  4        V P                  WE4       V P                  R4       V P                  4        R# )Fvisiblesquareg      $@g      4@whiteN)turtleTurtler    r2   r3   r   coordsshape	shapesizeHUNITWUNITspeedpugotocolor
showturtle)r   r2   r3   r   xys   &&&&  r   r    Stick.__init__X   s    tU3	{{3$

8uTz5:.

1			!

7r
   c                >   \        V^4      w  r4^^V,          ,           ^V,          ,           \        ,          p^^V,          ,           \        ,          pV\        ^,          ,
          \        ^,          ,           \        ^,          V,
          \        ^,          ,
          3# )   )divmodrP   rO   SCREENWIDTHSCREENHEIGHT)r   r2   r3   packet	remainderrV   rW   s   &&&    r   rL   Stick.coordsf   so    "3Nf_q9},5S[E!;!##eqj0,!2Ca2G%ST*2TTTr
   c                    V P                   P                  \        P                  8w  d   R # V P                   P                  P                  V P                  V P                  4       R # r   )r   r   r#   r+   
controllerr/   r2   r3   )r   rV   rW   s   &&&r   makemoveStick.makemovel   s;    99??ckk)		((488<r
   )r3   r   r2   N)	r;   r<   r=   r>   r    rL   rc   r?   r@   rA   s   @r   rD   rD   W   s     U= =r
   rD   c                   H   a  ] tR t^rt o R tR	R ltR tR tR tR t	Rt
V tR# )
NimViewc                   Wn         VP                  V n        VP                  V n        V P                  P                  ^4       V P                  P	                  R4       V P                  P                  R4       \        P                  ! RR7      V n        V P                  P                  4        V P                  P                  ^ 4       / V n        \        ^4       F3  p\        \        4       F  p\        W#V4      V P                  W#3&   K  	  K5  	  V P                  R4       V P                  P	                  R4       R# )   FrF   z... a moment please ...TN)   ri   rh   )r   screenmodel	colormodetracerbgcolorrJ   rK   writerrR   rQ   r&   r   r   rD   display)r   r   r2   r3   s   &&  r   r    NimView.__init__s   s    	kkZZ
c"5!O,mmE2!8CY'*/$*?SJ' (  	./4 r
   Nc                N   V P                   P                  R 4       V P                  P                  4        Vei   V P                  P	                  ^ \
        ) ^,          ^0,           4       V P                  P                  R4       V P                  P                  VRRR7       V P                  P	                  ^ \
        ) ^,          ^,           4       V P                  P                  R4       V P                  P                  VRRR7       V P                   P                  R4       R# )	FNredcenter)alignfontblackT)Courier   bold)rx      rz   )rj   rm   ro   clearrS   r]   pencolorwrite)r   msg1msg2s   &&&r   rp   NimView.display   s    5!KKQ,! 3b 89KK  'KKd(9NOlNa/"45W%$h5JK4 r
   c                .   V P                   P                  R 4       \        ^4       FW  p\        V P                  P                  V,          4       F*  pV P                  W3,          P                  \        4       K,  	  KY  	  \        ^4       FX  p\        V P                  P                  V,          \        4       F&  pV P                  W3,          P                  R4       K(  	  KZ  	  V P                  R4       V P                   P                  R4       R# )FrI   *Your turn! Click leftmost stick to remove.TN)	rj   rm   r   rk   r&   rT   SCOLORr   rp   r9   s   &  r   r*   NimView.setup   s    5!8CTZZ..s34SJ'--f5 5  8CTZZ..s3Y?SJ'--g6 @  	AB4 r
   c                   V^ 8X  d>   \         p\        W#4       F&  pV P                  W3,          P                  V4       K(  	  R# V P	                  R4       \
        P                  ! R4       V P	                  R4       \        p\        V^,
          V^,
          R4       F<  p\
        P                  ! R4       V P                  W3,          P                  V4       K>  	  V P	                  R4       R# )r   z ... thinking ...         g      ?z ... thinking ... aaah ...g?r   N)HCOLORr   r&   rT   rp   timesleepCOLOR)r   r2   r3   r4   r'   farber   s   &&&&&  r   r/   NimView.notify_move   s    Q;E3*SH%++E2 + LL56JJsOLL56E9Q;Ar2

3SH%++E2 3 LLEFr
   c                ~    V P                   P                  P                  ^ 8X  d   RpMRpV P                  RV4       R# )r   zCongrats. You're the winner!!!z"Sorry, the computer is the winner.z2To play again press space bar. To leave press ESC.N)r   rk   r(   rp   )r   r   s   & r   r1   NimView.notify_over   s1    99??!!Q&3D7DI4Pr
   c                    V P                   P                  \        P                  8X  d   V P                  P                  4        R # R # r   )r   r   r#   r%   rj   r|   r,   s   &r   r|   NimView.clear   s+    99??chh&KK 'r
   )r   rk   rj   r&   ro   r   )r;   r<   r=   r>   r    rp   r*   r/   r1   r|   r?   r@   rA   s   @r   rf   rf   r   s*     !"
!	!GQ   r
   rf   c                   ,   a  ] tR t^t o R tR tRtV tR# )NimControllerc                p   Wn         VP                  P                  V n        R V n        V P                  P	                  4        F  pVP                  VP                  4       K   	  V P                   P                  P                  V P                   P                  P                  R4       V P                   P                  P                  V P                   P                  P                  R4       V P                   P                  P                  R4       V P                   P                  P                  4        R# )FspaceEscapezPress space bar to start gameN)r   r)   r&   BUSYvaluesonclickrc   rj   onkeyrk   r*   r|   rp   listen)r   r   sticks   && r   r    NimController.__init__   s    	ii&&	[['')EMM%..) *		tyy44g>		tyy~~33X>		>?		!r
   c                    V P                   '       d   R # RV n         V P                  P                  P                  W4       RV n         R # )NTF)r   r   rk   r/   r9   s   &&&r   r/   NimController.notify_move   s2    999			##C-	r
   )r   r   r&   N)r;   r<   r=   r>   r    r/   r?   r@   rA   s   @r   r   r      s     	" r
   r   c                   2   a  ] tR t^t o ^ t^t^tR tRtV t	R# )r#   c                    \         P                  V n        Wn        \	        V 4      V n        \        V 4      V n        \        V 4      V n	        R # r   )
r#   r$   r   rj   r   rk   rf   r)   r   rb   )r   rj   s   &&r   r    Nim.__init__   s4    [[
d^
DM	'-r
   )rb   rk   rj   r   r)   N)
r;   r<   r=   r>   r$   r+   r%   r    r?   r@   rA   s   @r   r#   r#      s     GGD. .r
   r#   c                      \         P                  ! 4       p V P                  R 4       V P                  \        \
        4       \        V 4      pR# )standard	EVENTLOOP)rJ   Screenmoder*   r\   r]   r#   )
mainscreennims     r   mainr      s5    JOOJ[,/
j/Cr
   __main__)?   r      )rh      r   )r   r   rh   )rJ   r   r   r\   r]   r   r   rO   rP   r   r   r   r   r   r   objectr   rK   rD   rf   r   r#   r   r;   mainloopr	   r
   r   <module>r      s      		a2-Q!0CCD		0!v !H=FMM =6A f A HF *	.& 	. zF
OO r
   