gpt4 book ai didi

python - 将自主游戏模型与基于 Qt 的 UI 连接起来

转载 作者:太空狗 更新时间:2023-10-30 00:08:23 25 4
gpt4 key购买 nike

我使用 Python 创建了一个简单的基于控制台的拼字游戏。我尝试尽可能多地从 I/O 封装游戏模型,这意味着我创建了一些类来描述游戏及其规则和当前状态。基本上我想出了这些类:

  • LetterSet:描述游戏中的牌(分数、总数等)
  • Board:Board 及其图 block 和辅助功能的表示
  • Player:一个虚拟类来继承真实类,如 Human 或 Bot,有一个方法 play() 应该返回玩家移动
  • 游戏:嗯...

在我的控制台应用程序中使用简单的线性和同步流程一切正常。

但事实证明,将这个概念移植到Qt中并不是那么容易。我已经创建了所有必要的小部件,如可拖动板、描述游戏状态的一般视觉元素和简单按钮,如“通过”、“继续”、“交换”。

问题是,我不确定如何处理 play() 方法,该方法可能会使用我创建的 Qt 接口(interface)来生成有效的移动。不过,对于 Bot 来说这不是问题,它只是在没有任何交互的情况下搜索着法。

我目前的想法是创建一个像 here 中描述的本地事件循环并等待在 Human(Bot) 中定义的 play() 方法中单击按钮。这有点丑陋,所以我想知道是否有更好的方法。

我希望主要逻辑相同,例如Player 类提供一个 play() 方法,该方法生成移动并返回它。这样应该可以创建任何类型的 Player,例如网络播放器或机器人。这种同步的方式与 Qt 基于信号/槽的方式并不能很好地工作。希望有人有一个好主意来解决我的问题。

总结: 如何在 play() 方法中生成 Player 的移动并像简单的 一样返回它code>move = player.play(game) 调用?

编辑:一张快照来了解我在说什么: snapshot
(来源:b52 at reaktor42.de)

Edit2: 这是相当古老的,我大约在两年前成功完成了任务。尽管如此,我认为如果我发布 results through github 可能对其他人有用.

提前致谢,奥利

最佳答案

您可以在 Player play 函数中执行的操作是:

  1. 启用按钮并将它们连接到插槽(每个操作一个)
  2. 等到玩家移动有效(或任何其他退出原因)
  3. 当玩家移动已被接收(或被验证)时断开信号槽

这是一种方式,但您应该修改它以适合您的游戏模型

关于python - 将自主游戏模型与基于 Qt 的 UI 连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6485465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com