Найти в Дзене
SamAlex

Крестики Нолики на Python: 5 Старт, Стоп и Результаты игры

Продолжаю серию статей по написанию игры «Крестики Нолики» на Python. Предыдущие части: 1 Игровое поле 2 Рисуем крестики и нолики 3 Глупый Бот 4 Проверка на выигрыш Ранее мы создали игровое поле, создали функции отрисовки Крестика и Нолика и функцию обработки кликов по игровому полю, создали «Глупого Бота», который ставит нолики в пустые ячейки. Сделали проверку выигрыша и функцию зачеркивания выигрышной комбинации. В этой статье доработаем функцию «end_game», чтобы игра завершалась корректно. Создадим функцию «new_game» которая будет запускать новую игру. Сделаем вывод статистики на экран. Добавим переменные «you_win», «bot_win», «draw_game» для подсчета статистики и присвоим им значение 0. Определим функцию «new_game», которая будет запускать новую игру. В функцию перенесем из основной программы создание переменных «win» и «condition» и определим как глобальные, к ним добавим еще одну переменную «run_game», которая будет хранить в себе состояние игры, запущена или нет. Присваиваем зн

Продолжаю серию статей по написанию игры «Крестики Нолики» на Python.

Предыдущие части:

1 Игровое поле
2 Рисуем крестики и нолики
3 Глупый Бот
4 Проверка на выигрыш

Ранее мы создали игровое поле, создали функции отрисовки Крестика и Нолика и функцию обработки кликов по игровому полю, создали «Глупого Бота», который ставит нолики в пустые ячейки. Сделали проверку выигрыша и функцию зачеркивания выигрышной комбинации.

В этой статье доработаем функцию «end_game», чтобы игра завершалась корректно. Создадим функцию «new_game» которая будет запускать новую игру. Сделаем вывод статистики на экран.

Добавим переменные «you_win», «bot_win», «draw_game» для подсчета статистики и присвоим им значение 0.

Добавим переменные «you_win», «bot_win», «draw_game»
Добавим переменные «you_win», «bot_win», «draw_game»

Определим функцию «new_game», которая будет запускать новую игру. В функцию перенесем из основной программы создание переменных «win» и «condition» и определим как глобальные, к ним добавим еще одну переменную «run_game», которая будет хранить в себе состояние игры, запущена или нет. Присваиваем значение «True».

Далее стираем все, что у нас есть на холсте (что осталось от предыдущей игры) командой «games.delete("all")». Цикл «for» который создавал ячейки на нашем холсте, переносим внутрь нашей функции. Все наша функция готова.

Функция «new_game»
Функция «new_game»

В низу программы перед «root.mainloop()» добавляем вызов функции «new_game»

Добавляем вызов функции «new_game»
Добавляем вызов функции «new_game»

В функции «winner» определим переменные «you_win», «bot_win», «draw_game» как глобальные. И в зависимости от того кто победил, будем добавлять 1 к значению соответствующей переменной.

В функции «winner» определим переменные «you_win», «bot_win», «draw_game» как глобальные
В функции «winner» определим переменные «you_win», «bot_win», «draw_game» как глобальные

В функцию «cliсk» добавим условие если игра запущена, то весь функционал работает. Иначе запускаем функцию «new_game». Что бы после завершения игры при клике на экран не отрабатывались нажатия с запуском функций «add_x».

В функцию «cliсk» добавим условие
В функцию «cliсk» добавим условие

Теперь займемся функцией «end_game». Импортируем модуль «time». Убираем вывод в консоль. Определяем переменную «run_game» как глобальную. Устанавливаем ей значение «False», чтобы отключить обработку кликов.

С помощью метода «time.sleep» делаем задержку 0,5 секунды.

Очищаем наш холст. И с помощью метода «create_text» выводим, текст, который хранится в переменной «win».

Обновляем экран «games.update», делаем задержку 0,5 секунды. Еще раз очищаем холст и с помощью метода «create_text» выводим нашу статистику. Для формирования текста используем «f-строку». Ниже еще выводим одну строку с текстом «Нажми для продолжения»

Функция «end_game»
Функция «end_game»

При клике функция «click» запускает функцию «new_game» и игра запускается.

Код в текстовом файле можно скачать ТУТ

А на сегодня все.

Спасибо за внимание. Если Вам понравился материал, поддержите канал, поставьте "Лайк", оставьте комментарий и подпишитесь на мой канал.

Продолжение следует:

6 Мозги для Бота
7 Из PY в EXE

#python #игры на python #tkinter #крестики-нолики #программирование