1

我正在尝试开发基于网络的文本策略游戏。这个想法包括在太空中,看到雷达屏幕,四处移动,攻击其他玩家,挖掘行星等等。

我尝试过的当前技术是:

  • 用于服务器端游戏引擎/数据库查询的 Python
  • 用于托管数据库的 Mongodb
  • Web.py 用于提供网页。
  • Jquery 用于网站上的界面。
  • HTML5 W/canvas 用于显示雷达,这将只是对我当前位置附近的简单查询。

目前发展阶段:

Python:

我编写了一个基于文本的命令行游戏,它通过一些扫描和移动数据库周围的玩家对象。

蒙古数据库:

数据库已设置并运行良好。我能够操作对象和查询对象。

网络.py:

目前支持 'localhost:8080('/', '/register', '/game') 当你到达时,它有一个非常简单的登录框,它不使用真正的身份验证,而是一个简单的 db.users.find({})验证用户。稍后我将对此进行扩展,但是对于与朋友进行的简单测试,我还不太担心安全性。如果他们输入了错误的值,它将滚动到 /register,他们可以在其中创建帐户。然后将它们放入 /game 中,我可以从表单('name')中提取用户名并打印一个简单的 Hello %name。

查询:

能够执行 jquery 脚本来操作 div 等等。

HTML5:

还没有真正的开发,但 HTML 是我的强项,所以我现在还不担心。

挑战:

我遇到的真正障碍是试图弄清楚如何向用户提供带有 jquery 的 *.html 页面,并将其发布到我的后端 python 脚本,以对数据库执行查询或更新,或者执行一些战斗代码以及什么不是。

我一直在阅读所有不同的技术和框架,但我还没有真正找到完全符合我需要的东西,或者我缺乏经验使我无法理解如何实现它。

我想知道是否有一种简单的方法可以编写一个 jquery(post) 将数据发布到 python 中,以便我编写的函数可以基于 jquery(post) 执行查询或更新并返回用户请求的数据

我观看了一个发布到 php 的 youtube 教程,它看起来非常简单,但是每当我搜索发布到 python 时,我得到的结果很少,几乎所有人都宣称他们的框架最适合这个。我几乎想知道我是否不应该只切换到 php。

你们能指出我正确的方向吗?我需要废弃 web.py 并切换到 ajax 和 mod_python 吗?

我应该认真阅读 django 的文档吗?

这个周末我的网速非常慢,我希望我能找到正确的研究方向,所以当我周六回到我的位置时,我可以开始研究策略游戏的网络部分。

代码示例:

web.py 脚本:

import web
from web import form
import pymongo

db = pymongo.Connection('localhost', 27017).bbarnes_test
render = web.template.render('templates/')
urls = (
  '/', 'index',
  '/register', 'register',
  '/game', 'game')

app = web.application(urls, globals(), True)

login = form.Form(
    form.Textbox("Username",
                form.notnull),
    form.Password("Password",
        form.notnull))


class index:
    def GET(self):
        form = login()
        return render.formtest(form)

    def POST(self):
        form = login()
        if not form.validates():
            return render.formtest(form)
        else:
                        uname = db.users.find_one({'name' : form.d.Username, 'pw' : form.d.Password})

                        if uname != None:
                                return render.game(uname['name'])
                        else:
                                raise web.seeother('/register')

class register:
        def GET(self):
                form = login()
                return render.register(form)

        def POST(self):
                form = login()
                if not form.validates():
                        return render.register(form)
                else:
                        db.users.insert({'name' : form.d.Username, 'pw' : form.d.Password})
                uname = db.users.find_one({'name' : form.d.Username})
                raise web.seeother('/')


class game:
        def GET(self):
                return render.game(form)

if __name__=="__main__":
    web.internalerror = web.debugerror
    app.run()
~

游戏.html

$def with(uname)
<html>
<!DOCTYPE html>
<head>
<script type="text/javascript" src="../static/jquery.js"></script>
<script type="text/javascript">
J = jQuery;
J(document).ready(function(){
        J("p").click(function(){
                J(this).hide();
        });
});



</script>

<title>The Game</title>
</head


<body>
<p> This is a test of jQuery.</p>
<p> Welcome to the game $uname</p>

</body>

</html>
4

1 回答 1

1

如果您认为您的 Python 脚本与您的 Web 基础设施是分开的,那么您的想法是错误的。当您谈论对 Web 应用程序进行 POST 之类的 HTTP 调用以操作数据库中的数据时,这就是 Web 服务。我的大部分经验是使用 Pyramid + Cornice 和 Django + Piston(呃),但 web.py 相当有能力,应该能够做到这一点。 这篇博客文章很旧,但看起来很有希望。搜索“RESTful web services python”或类似的东西也会有更多的运气。

于 2012-11-21T19:10:58.070 回答