Создание пошаговой игры с помощью Kivy

#python #kivy

#python #kivy

Вопрос:

Я создаю реализацию пошаговой игры на Python «Mancala» для школьного проекта. У меня уже есть базовая игра с вводом-выводом с консоли. Теперь мне нужно интегрировать графику с Kivy в проект. Короче говоря, игровое поле наследует Kivy GridLayout , а ямы — Kivy Button s. Проблема, с которой я столкнулся, заключается в том, что для запуска приложения Kivy мне нужно вызвать app.run() , и этот метод выполняется бесконечно. Это проблема, потому что я здесь уже реализовал базовую игру без графики с помощью своего собственного лупера, поэтому, если я запускаю приложение Kivy, вся программа просто ждет и практически останавливается. Мой вопрос в том, как мне интегрировать цикл Kivy ( app.run() ) с моим собственным циклом. Я думал о вызове всей логики игры из on_press нажатой кнопки, но я предпочитаю не использовать такой дизайн. Другим решением, о котором я подумал, было использование двух отдельных потоков, один из которых запускал цикл Kivy, а другой — мой цикл, но у меня нет никакого опыта работы с потоками.

Весь проект можно найти здесь (да, я знаю, что название репозитория теперь неверно :-)). Большое спасибо!

Ответ №1:

Быстрый и грязный способ — это использовать класс Clock в Kivy для запуска вашего метода Game._turn() через регулярные промежутки времени.

 from kivy.clock import Clock
  

И:
Clock.schedule_interval(Game._turn, 0.1)