0

所以我用 PHP 制作了一个运行良好的游戏,一个与井字游戏非常相似的简单游戏,我真的不想在 PHP 改进游戏方面走得更远。考虑到这一点,我决定学习 Python;我现在对基础知识很熟悉了。我使用简单的数学、字典和条件语句来创建我的游戏模型。但是它是基于回合制的,我希望两个玩家不要在同一台计算机上轮流使用计算机。

所以我设想我的最终产品是一个独立的应用程序,每个用户在他们的计算机上都有,他们执行应用程序并输入用户名,然后被带到其他用户所在的屏幕,他们已经按照描述登录,来自有两个用户可以相互同意开始一轮游戏,完成后他们将被带回“等候室”

现在对于这样的事情,我需要(或得到很大帮助)一个框架吗?如果有,是哪一个?

这需要服务器上的数据库,还是所有数据都存储在用户的计算机上?

在创建这样的东西时,我会处理 CGI 或套接字还是两者兼而有之?

把这个游戏变成一个网络应用程序会更容易吗?(类似于我使用 PHP 并在网站上运行游戏时创建的东西)

我将不胜感激阅读有关该主题的材料。一个指向示例源代码的链接,它解决了一个类似于我得到一个金星的问题 =)

谢谢大家的时间,我非常感谢一切。

4

2 回答 2

2

一般反应

特别是如果你包括一个“等候室”和这样的东西/希望它被广泛使用,这是一个相当大的项目(绝对不是一件坏事,但你可能想先做一些小项目来让你的脚沾上 python网络编程)。然而,拥有一个简单的基于终端的回合制游戏,通过网络在其玩家之间传输数据是相对容易的;我会专注于首先制作简单的版本,以了解所涉及的内容。话虽如此,以下是您提出的具体问题的一些答案;不幸的是,它们不能太详细,因为要了解这些主题的内容太多了。

具体答案

现在对于这样的事情,我需要(或得到很大帮助)一个框架吗?如果有,是哪一个?

有一些框架可以帮助这个项目的几个不同部分,但是在你开始研究框架来帮助实现之前,你需要做出一些重大的设计决策。

这需要服务器上的数据库,还是所有数据都存储在用户的计算机上?

拥有“等候室”意味着设置了某种服务器以促进玩家之间的联系。是否需要数据库完全取决于应用程序的规模。如果您想跟踪用户/启用重复登录,几乎可以肯定会涉及到一个数据库。

在创建这样的东西时,我会处理 CGI 或套接字还是两者兼而有之?

阅读有关 CGI 和套接字是什么的更多信息并考虑这一点。

把这个游戏变成一个网络应用程序会更容易吗?(类似于我使用 PHP 并在网站上运行游戏时创建的东西)

似乎有更多资源可以帮助制作 Web 应用程序版本,但也有一系列全新的挑战,甚至可能还有更多新的东西需要学习。这部分取决于你已经习惯了什么。制作一个网络应用程序和制作一个使用互联网的独立应用程序,也许令人惊讶的是,非常不同,但两者都将涉及很多新的学习。

结论

好吧,我希望这在某种程度上有所帮助。祝你好运!

于 2012-07-18T06:23:57.227 回答
1

您可以使用以下几种方法:

  • 使用直接连接到对方的计算机。他们必须确切地知道他们想与谁比赛。幸运的是,python 的套接字实现非常容易使用。
  • 在某处创建并托管一个服务器,该服务器执行与所有玩家建立连接、将两个玩家匹配在一起以及在游戏玩家之间转发数据包的步骤。如果您还想让游戏浏览器基于此,您可以使用 HTML5 WebSockets 来执行此操作。

无论如何,如果您想为匹配的玩家创建一个房间,您将必须创建一个服务器。在我看来,python 实际上是为此选择的语言,因为您将需要使用套接字,而 python 是针对这种事情的。您的服务器必须跟踪游戏中的所有对等点和所有匹配项。它还必须跟踪每场比赛的比赛状态。如果您希望玩家登录等,那么您将需要一个数据库后端来跟踪用户以及当前的游戏,以便您可以防止某人同时从多个位置登录。

有很多关于在 python 中使用套接字的教程。只需快速搜索就可以找到一个超级简单的教程:http: //www.kellbot.com/2010/02/tutorial-writing-a-tcp-server-in-python/

我编写了一个 HTML5 WebSocket 服务器,它有一个聊天室实现,演示了跟踪几个连接的对等点并有选择地将消息从一个对等点转发到其他对等点。演示页面在这里:http ://cuznersoft.com/python-websocket-server/html/demo_chatroom.html ,源代码可以在这里找到:https ://github.com/kcuzner/python-websocket-server 。服务器是用 python 编写的,总共大约 1000 行,所以它的长度并不可怕。

于 2012-07-18T06:25:26.273 回答