Python中文
首页
教程
问答
标签
搜索
登录
注册
基于Qt的用户界面连接自主游戏模型
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我用Python创建了一个简单的基于控制台的拼字游戏。我尽量从I/O封装游戏模型,这意味着我创建了几个类来描述游戏规则和当前状态。基本上我想到了这些课程:</p> <ul> <li><code>LetterSet</code>:描述游戏中的牌(分数、总金额等)</li> <li><code>Board</code>:用它的分片和辅助功能来表示电路板</li> <li><code>Player</code>:一个虚拟类,将像Human或Bot这样的真实类进行子类化,得到一个方法<code>play()</code>,它应该返回玩家的移动</li> <li><code>Game</code>:嗯。。。在</li> </ul> <p>在我的控制台应用程序中使用简单的线性和同步流,一切都很好。在</p> <p>但事实证明,将这个概念移植到Qt并不容易。我已经创建了所有必要的小部件,比如一个可拖动的板,描述游戏状态的一般视觉元素和简单的按钮,如“通过”、“继续”、“交换”。在</p> <p>问题是,我不确定如何处理<code>play()</code>方法,该方法可能使用我创建的Qt接口来生成有效的移动。这对<code>Bot</code>来说没有问题,它只搜索一个移动而不进行任何交互。在</p> <p>我目前的想法是创建一个类似于所描述的<a href="https://web.archive.org/web/20120625214400/http://doc.qt.nokia.com:80/qq/qq27-responsive-guis.html#waitinginalocaleventloop" rel="nofollow noreferrer">here</a>的本地事件循环,并等待在<code>Human(Bot)</code>中定义的<code>play()</code>方法中单击按钮。这有点难看,所以我想知道有没有更好的方法。在</p> <p>我希望主逻辑是相同的,例如,<code>Player</code>类服务于生成移动并返回它的<code>play()</code>方法。这样就可以创建任何类型的<code>Player</code>,比如网络播放器或机器人。这种同步方式与基于Qt的signal/slot方式不太适合。希望有人想出个好主意来解决我的问题。在</p> <p><strong>总结:</strong><em>如何在<code>play()</code>方法中生成<code>Player</code>的移动,并像一个简单的<code>move = player.play(game)</code>调用一样返回它?</em></p> <p><strong>编辑:</strong>快照,了解我在说什么: <a href="https://i.stack.imgur.com/6od2s.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/6od2s.png" alt="snapshot"/></a><br/> <sub>(来源:<a href="http://reaktor42.de/~b52/shots/2011-06-26-235749_972x729_scrot.png" rel="nofollow noreferrer">b52 at reaktor42.de</a>)</sub></p> <p><strong>Edit2:</strong>这是一个相当古老的问题,我在大约两年前成功地完成了这项任务。尽管如此,我认为如果我发布<a href="https://github.com/b52/wordjuggler" rel="nofollow noreferrer">results through github</a>,它可能对其他人有用。在</p> <p>先谢谢你,奥利</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>在Player <code>play</code>函数中可以做的是:</p> <ol> <li>启用按钮并将其连接到插槽(每个操作一个)</li> <li>等待玩家移动被验证(或任何其他原因退出)</li> <li>收到(或验证)玩家移动后,断开插槽信号</li> </ol> <p>这是一种方法,但你应该修改它以适合你的游戏模型</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
在python3中使用Scipy pearsonr函数
1 回答
在Python3中使用scipy对多个lorentzian进行数据拟合
7 回答
在Python3中使用Script=argv
1 回答
在python3中使用selenium webdriver进行未解析的回溯
3 回答
在python3中使用selenium和phantomjs的网页截图之前如何等待?
5 回答
在Python3中使用Selenium和Requests模块从网页获取文件
6 回答
在python3中使用SIGINT终止函数
3 回答
在Python3中使用SIGTERM时,允许进程完成而不是中断
9 回答
在python3中使用smtplib发送XML内容
8 回答
在python3中使用socket库(RFCOMM模式)重新连接蓝牙设备?
7 回答
在python3中使用sounddevice和numpy编写wav文件
6 回答
在python3中使用Sqlalchemy插入MySQL查找类型错误的原因
6 回答
在python3中使用sqlite、pandas和sqlalchemy很难让rollback工作
3 回答
在python3中使用SQLite的FTS3/4
6 回答
在Python3中使用struct.calcsize()和len()有区别吗?
7 回答
在python3中使用substring函数时发生TypeError
7 回答
在Python3中使用Tkinter entry小部件写入串行设备
9 回答
在python3中使用tkinter时,如何在每次按下函数时获得运行该函数的按钮?
3 回答
在python3中使用tkinter的子帧
3 回答
在Python3中使用tryexcept块时,如何避免使用未初始化的变量?
5 回答