Акисаат, как вы, вероятно, догадываетесь, этот форум не создан для вашего запроса на помощь в программировании. Переполнение стека больше для технических вопросов опытными программистами. Существуют веб-сайты, ориентированные на ваш уровень обучения. Этого сайта нет.
С учетом сказанного, только один раз, давайте посмотрим на ваш код и посмотрим, где вы ошиблись.
Для большинства ваших квадратов тест верхнего элифа ловит X, но внутренний тест Y работает только для одного квадрата, в то время как все другие значения Y игнорируются. В результате, как только тест elif поймает значение X и не сможет найти значение Y, которое он может использовать, элемент управления выпадет из цепочки if-elif, и эти квадраты никогда не будут обработаны.
Например, это строка ловит ВСЕ щелчки в среднем столбце ...
elif toX (pos) <= 400 и toX (pos)> 200:
.. но вложенные Тест «if» ловит ТОЛЬКО верхнюю строку. ВСЕ ДРУГИЕ квадраты теряются , когда контроль выпадает из цепочки if-elif. Вам необходимо проверить ПЕРВЫЙ для строки, а затем проверить для всех трех столбцов, содержащихся в этой строке. Вы проверяете только ОДИН квадрат в любой строке.
Но я бы предложил другой подход, чтобы вы помещали ВСЕ тесты строк и столбцов в одну строку. Таким образом, вы можете иметь отдельные блоки кода, по одному для каждого уникального квадрата, без слишком большого вложения в какой-либо отдельный блок кода.
Например:
elif toX (pos) <= 400 и toX (pos)> 200 и toY (pos) <200: # Если в столбце 1 строка 0 нажата .. </p>
Затем сделайте что-нибудь в этом поле.
Следовать логике c вашей программы будет проще для вас, если вы будете использовать комментарии для именования квадратов и использовать команды print () для создания отчетов, чтобы вы могли убедиться, что ваш код работает в соответствии с планом. Вы всегда можете go вернуться назад и удалить эти строки, как только ваш код будет проверен. Попробуйте что-то вроде этого в своем коде ..
# As an aid, let's identify the squares for our logic block below
# | |
# Square [0,0] | Square [1,0] | Square [2,0]
# | |
# --------------------------------------
# | |
# Square [0,1] | Square [1,1] | Square [2,1]
# | |
# --------------------------------------
# | |
# Square [0,2] | Square [1,2] | Square [2,2]
# | |
def makeX(pos):
# Square [0,0]
if toX(pos)<=200 and toY(pos)<=200: # If the far left column and the top row is Clicked
print(" Square [0,0] Clicked")
position = (100, 100)
message_display(letter, position)
# Square [1,0]
elif toX(pos)<=400 and toX(pos)>200: # If the middle column is clicked
print(" Column 1 Clicked")
if toY(pos) <= 200: # And then if the top Row is clicked
print(" Row 0 Clicked")
position = (300,100)
message_display(letter, position)
# Square [2,0]
elif toX(pos)<=600 and toX(pos)>400 and toY9pos) <= 200: # If the far right Column
print(" Column 2 Clicked")
if toY(pos) <= 200: # And then if the top row is clicked
print(" Row 0 Clicked")
position = (500,100)
message_display(letter, position)
# Square [0,1]
elif toX(pos)<=200: # If the far left column is clicked
print(" Column 0 Clicked")
if toY(pos) <= 400 and toY(pos) > 200: # And then if the middle Row is Clicked
print(" Row 1 Clicked")
position = (100,300)
message_display(letter, position)
Выполните это, чтобы проверить логи c вашего кода, и исправьте ошибку, которую я идентифицировал ранее, чтобы вы хорошо написали свой тик- Та c -тое проект. Удачи и веселья!