python - 使用 Kivy 构建回合制游戏
问题描述
我正在为学校的一个项目构建回合制游戏“Mancala”的 Python 实现。我已经有一个带有来自控制台的 I/O 的基本游戏。现在我需要将图形与 Kivy 集成到项目中。总之,游戏的棋盘继承了Kivy's GridLayout
,坑都是Kivy's Button
。我遇到的一个问题是,要运行 Kivy 应用程序,我需要调用app.run()
,并且此方法无限期运行。这是一个问题,因为我已经用自己的 Looper 实现了一个没有图形的基础游戏,所以如果我运行 Kivy 应用程序,整个程序只会等待并实际上停止。我的问题是如何将 Kivy 的循环 ( app.run()
) 与我自己的循环集成。我想过调用所有游戏的逻辑on_press
按下按钮,但这是我不想追求的设计。我想到的另一个解决方案是使用两个单独的线程,一个运行 Kivy 的循环,另一个运行我的循环,但我没有任何线程经验。
整个项目可以在这里找到(是的,我知道 repo 的名称现在不正确 :-))。非常感谢!
解决方案
一种快速而肮脏的方法是,如果您使用 Kivy 中的 Clock 类定期运行 Game._turn() 方法。
from kivy.clock import Clock
并且: Clock.schedule_interval(Game._turn, 0.1)
推荐阅读
- reactjs - React、redux 和路由
- pdf - gopdf如何将文本数据打印成pdf?
- json - 如何在 Flutter 中解析地图列表时修复“.map.tolist() 返回实例而不是列表”?
- magento2 - Magento 2 Override by preference 在我的自定义模块中不起作用
- oracle - 如何修复此包体创建错误?
- payment - 有没有办法从 windows 10 将付款金额同步到信用卡终端,例如 verifone vx520 或 Ingenico ict250?
- java - 在多个黄瓜步骤定义中使用多个软断言时,黄瓜范围报告显示通过
- html - 使用表格单元格样式化 UL 的问题
- sql - 通过特定条件存在于 where 子句中的 SQL 验证
- amazon-web-services - 如何在 AWS DocumentDB 中编写 Join 查询