Sindbad~EG File Manager
�
&Μgq��D�dZddlZddlZddlZdZdZdZdZedzZeedzd zedzd
zzzZ dZ
dZd
Zd�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)rrr
c�>�tjtt�S�N)�random�randint� MINSTICKS� MAXSTICKS���+/usr/local/lib/python3.12/turtledemo/nim.py� randomrowrs���>�>�)�Y�/�/rc��|d|dz|dz}|dk(rt|�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�rUtj|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�|jtdztdz�|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 rrLzStick.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�<rN)r@rArBr*rLr`rrrrDrDYs���U�=rrDc�2�eZdZd�Zdd�Zd�Zd�Zd�Zd�Zy) �NimViewc�~�||_|j|_|j|_|jjd�|jj d�|jjd�t
jd��|_|jj�|jjd�i|_td�D]2}tt�D]}t|||�|j||f<� �4|jd�|jj d�y) Nr
F)��rdr
rFrrz... a moment please ...T)r(�screen�model� colormode�tracer�bgcolorrJrK�writerrRrQr/rrrD�display)r)r(r:r;s rr*zNimView.__init__us����� ��k�k����Z�Z��
������c�"������5�!������O�,��m�m�E�2��������������!�������8�C��Y�'��*/��S�$�*?����S�#�J�'�(��
���.�/������4� rNc�(�|jjd�|jj�|�`|jj dt
dzdz�|jj
d�|jj|dd��|jj dt
dzd z�|jj
d
�|jj|dd��|jjd�y)
NFrr�0�red�center)�Courier��bold)�align�font��black)rp�rrT)rerhrj�clearrSr[�pencolor�write)r)�msg1�msg2s rrkzNimView.display�s��������5�!����������K�K���Q�,��!� 3�b� 8�9��K�K� � ��'��K�K���d�(�9N��O�������l�N�a�/�"�4�5������W�%������$�h�5J��K������4� rc��|jjd�td�D]M}t|jj|�D]&}|j||fjt��(�Otd�D]N}t|jj|t�D]"}|j||fjd��$�P|jd�|jjd�y)NFrrI�*Your turn! Click leftmost stick to remove.T) rerhrrfr/rT�SCOLORrrkr?s rr3z
NimView.setup�s��������5�!���8�C��T�Z�Z�.�.�s�3�4�����S�#�J�'�-�-�f�5�5����8�C��T�Z�Z�.�.�s�3�Y�?�����S�#�J�'�-�-�g�6�@��
���A�B������4� rc��|dk(r8t}t||�D]"}|j||fj|��$y|j d�tjd�|j d�t}t|dz
|dz
d�D]7}tjd�|j||fj|��9|j d�y) Nrz ... thinking ... g�?z ... thinking ... aaah ...r���g�������?r~)�HCOLORrr/rTrk�time�sleep�COLOR)r)r:r;r<r0�farbers rr7zNimView.notify_move�s����Q�;��E��3� �*�����S�!�H�%�+�+�E�2�+�
�L�L�5�6��J�J�s�O��L�L�5�6��E��9�Q�;��A��r�2���
�
�3�����S�!�H�%�+�+�E�2�3�
�L�L�E�Frc�x�|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_over�s1���9�9�?�?�!�!�Q�&�3�D�7�D����I�4�Prc��|jjtjk(r|jj�yyr
)r(rr,r.rerxr5s rrxz
NimView.clear�s+���9�9�?�?�c�h�h�&��K�K����'rr
) r@rArBr*rkr3r7r9rxrrrrbrbts"��!�"
!� !�
G�Q� rrbc��eZdZd�Zd�Zy)�
NimControllerc�l�||_|jj|_d|_|jj �D]}|j|j��|jjj|jjjd�|jjj|jjjd�|jjjd�|jjj�y)NF�space�EscapezPress space bar to start game)r(r2r/�BUSY�values�onclickr`re�onkeyrfr3rxrk�listen)r)r(�sticks rr*zNimController.__init__�s����� ��i�i�&�&����� ��[�[�'�'�)�E��M�M�%�.�.�)�*�� � �����t�y�y���4�4�g�>�� � �����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*zNim.__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�<module>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
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists