使用Python在GAE上进行简单游戏,逻辑应该在哪里?

时间:2015-09-23 18:01:00

标签: python python-2.7 google-app-engine

我最近开始学习Python,并且已经阅读了第一篇关于python的书,并完成了Python runtime environment GAE上的教程。到目前为止一切都很好。

现在我想创建一个使用Python的小项目,以便在做有意义的事情时获得更多体验。我选择为将在GAE上托管的浏览器制作小型纸牌游戏。

我有一个main.py,它显示了迎接用户的index.html文件以及当用户点击主页上的播放时加载的game.html文件。我还有一个deck.py和card.py代表卡片和卡片。现在这些非常模糊,卡片类中只有一个值,卡片组中只有4张卡片。

我使用jinja2来提供html模板和webapp2作为我的web框架。

在game.html中,我想展示与游戏有关的所有内容。显示游戏的初始设置,处理更多卡片,处理按钮按下,更新正在播放的卡片等等。

我尝试在main.py中创建一个deck对象,然后通过jinja将它传递给html,希望我能以某种方式将它存储在页面上,但这似乎不起作用。

问题是,我在哪里让游戏逻辑发生? 我是否被迫使用javascript来编写我的游戏和逻辑?

感谢任何输入..

2 个答案:

答案 0 :(得分:1)

这是一个棘手的问题。通常,您可以在Javascript中对UI进行所有更改。但是你想在python中做多少游戏逻辑取决于你,但你仍然需要重绘屏幕,你需要一种快速的方法来在javascript和你的服务器之间来回发送请求,这就是python方面。有些游戏会做很多激烈的服务器端工作,比如战队的冲突。但通常逻辑是在客户端,无论是在javascript或flash的浏览器中,还是在移动设备上,服务器只是保存信息。它总是在速度,便利性以及您希望在服务器上跟踪的数量之间进行权衡 - 例如,您可以为想要跟踪他们在多个设备上执行的操作的用户执行此操作。

答案 1 :(得分:-1)

对于简单游戏,您应首先使用input()print()语句将其编写为独立的Python程序。然后,使用来自客户端的HTTP GET请求替换输入,使用HTML替换输出。虽然这是过度杀伤(你完全用每个请求重写页面),但它足以让你开始。稍后,您可以优化页面。

这种方法的优势在于您可以测试游戏逻辑而无需担心浏览器,GAE,框架等。它还可以在事情中断时更容易进行调试。