#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)