python (3.12.0)

(root)/
lib/
python3.12/
turtledemo/
__pycache__/
nim.cpython-312.pyc

̑eqDdZddlZddlZddlZdZdZdZdZedzZeedzd	zedzd
zzzZ	dZ
dZd
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)rrr
c>tjttSN)randomrandint	MINSTICKS	MAXSTICKSB/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/turtledemo/nim.py	randomrowrs>>)Y//rc|d|dz|dz}|dk(rt|StdD]}|||z}|||ks||f}|cSy)Nrr)
randommoverange)statexoredzsmoves     rcomputerzugr !si!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|jjtjtjfvrytttg|_d|_d|_|jjjtj|j_y)Nr)r(rNimCREATEDOVERrsticksplayerwinnerviewsetupRUNNINGr)s rr3zNimModel.setup9sg99??3;;"99 {IK=		++		rc|j|}||j|<|jjj||||j|jrUtj|j_|j|_	|jjjy|jdk(r9d|_t|j\}}|j||d|_yy)Nrr)
r/r(r2notify_mover0	game_overr,r.rr1notify_overr r)r)rowcol	maxspaltes    rrz
NimModel.moveBsKK$	C		""3YD>>!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$;;ss"		#srN)__name__
__module____qualname__r*r3rr8r7rrrr&r&5s&(rr&ceZdZdZdZdZy)Stickctjj|d||_||_||_|j
||\}}|jd|jtdztdz|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)divmodrPrOSCREENWIDTH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<rN)r@rArBr*rLr`rrrrDrDYsU=rrDc2eZdZdZddZdZdZdZdZy)	NimViewc~||_|j|_|j|_|jjd|jj	d|jjdt
jd|_|jj|jjdi|_tdD]2}ttD]}t||||j||f< 4|jd|jj	dy)	Nr
F)rdr
rFrrz... a moment please ...T)r(screenmodel	colormodetracerbgcolorrJrKwriterrRrQr/rrrDdisplay)r)r(r:r;s    rr*zNimView.__init__us	kkZZ
c"5!O,mmE2!8	@CY'
@*/S$*?S#J'
@	@	
./4 rNc(|jjd|jj|`|jj	dt
dzdz|jj
d|jj|dd|jj	dt
dzd	z|jj
d
|jj|dd|jjdy)
NFrr0redcenter)Courierbold)alignfontblack)rprrT)rerhrjclearrSr[pencolorwrite)r)msg1msg2s   rrkzNimView.displays5!KKQ,! 3b 89KK  'KKd(9NOlNa/"45W%$h5JK4 rc|jjdtdD]M}t|jj|D]&}|j||fjt(OtdD]N}t|jj|tD]"}|j||fjd$P|jd|jjdy)NFrrI*Your turn! Click leftmost stick to remove.T)	rerhrrfr/rTSCOLORrrkr?s   rr3z
NimView.setups5!8	6CTZZ..s34
6S#J'--f5
6	68	7CTZZ..s3Y?
7S#J'--g6
7	7	
AB4 rc|dk(r8t}t||D]"}|j||fj|$y|j	dtjd|j	dt}t|dz
|dz
dD]7}tjd|j||fj|9|j	dy)	Nrz ... thinking ...         g?z ... thinking ... aaah ...rg?r~)HCOLORrr/rTrktimesleepCOLOR)r)r:r;r<r0farbers       rr7zNimView.notify_movesQ;E3	*
3S!H%++E2
3
LL56JJsOLL56E9Q;Ar2
3

3S!H%++E2
3
LLEFrcx|jjjdk(rd}nd}|jd|y)NrzCongrats. You're the winner!!!z"Sorry, the computer is the winner.z2To play again press space bar. To leave press ESC.)r(rfr1rk)r)r|s  rr9zNimView.notify_overs199??!!Q&3D7DI4Prc|jjtjk(r|jjyyr
)r(rr,r.rerxr5s rrxz
NimView.clears+99??chh&KK'rr
)	r@rArBr*rkr3r7r9rxrrrrbrbts"!"
!	!
GQ rrbceZdZdZdZy)
NimControllercl||_|jj|_d|_|jj	D]}|j|j|jjj|jjjd|jjj|jjjd|jjjd|jjjy)NFspaceEscapezPress space bar to start game)r(r2r/BUSYvaluesonclickr`reonkeyrfr3rxrklisten)r)r(sticks   rr*zNimController.__init__s	ii&&	[['')	*EMM%..)	*		tyy44g>		tyy~~33X>		>?		!rc|jryd|_|jjj||d|_y)NTF)rr(rfr7r?s   rr7zNimController.notify_moves299			##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/Cr__main__)__doc__rJrrrZr[rrrOrPrrrrr robjectr&rKrDrbrr,rr@mainlooprrr<module>rs	

		a2-Q!0CCD		0!v!H=FMM=6A fA HF*	.&	.zFFOOr