首页 > 解决方案 > 使用 Kivy 构建回合制游戏

问题描述

我正在为学校的一个项目构建回合制游戏“Mancala”的 Python 实现。我已经有一个带有来自控制台的 I/O 的基本游戏。现在我需要将图形与 Kivy 集成到项目中。总之,游戏的棋盘继承了Kivy's GridLayout,坑都是Kivy's Button。我遇到的一个问题是,要运行 Kivy 应用程序,我需要调用app.run(),并且此方法无限期运行。这是一个问题,因为我已经用自己的 Looper 实现了一个没有图形的基础游戏所以如果我运行 Kivy 应用程序,整个程序只会等待并实际上停止。我的问题是如何将 Kivy 的循环 ( app.run()) 与我自己的循环集成。我想过调用所有游戏的逻辑on_press按下按钮,但这是我不想追求的设计。我想到的另一个解决方案是使用两个单独的线程,一个运行 Kivy 的循环,另一个运行我的循环,但我没有任何线程经验。

整个项目可以在这里找到(是的,我知道 repo 的名称现在不正确 :-))。非常感谢!

标签: pythonkivy

解决方案


一种快速而肮脏的方法是,如果您使用 Kivy 中的 Clock 类定期运行 Game._turn() 方法。

from kivy.clock import Clock

并且: Clock.schedule_interval(Game._turn, 0.1)


推荐阅读