想要制作一个回合制的python游戏.我该何去何从


Wanting to make a turn-based python game. Where do I go from here?

所以我用PHP制作了一个运行良好的游戏,一个类似于井字游戏的简单游戏,我真的不想用PHP进一步改进游戏。考虑到这一点,我决定学习Python;我现在已经熟悉了基础知识。我用简单的数学、字典和条件语句创建了我的游戏模型。然而,这是基于回合的,我更希望两名玩家不要在同一台电脑上轮流使用电脑。

因此,我设想我的最终产品是一个独立的应用程序,每个用户都在自己的电脑上,他们执行应用程序并输入用户名,然后被带到屏幕上,其他用户也在屏幕上,他们已经按照描述登录,从那里两个用户可以相互同意开始一轮游戏,完成后他们将被带回"等候室"

现在,对于这样的事情,我是否需要(或得到)一个框架?如果是,是哪一个?

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

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

将此游戏制作成网络应用程序会更容易吗?(类似于我使用PHP并在网站上运行游戏时会创建的东西)

我很乐意阅读有关这个主题的材料。一个链接到一个示例源代码,它解决了一个类似于我得到的金星的问题=)

谢谢大家抽出时间,我非常感谢你们所做的一切。

一般响应

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

具体答案

现在,对于这样的事情,我是否需要(或得到)一个框架?如果是,是哪一个?

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

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

有一个"等候室"意味着有某种服务器可以方便玩家之间的连接。数据库是否必要完全取决于应用程序的规模。如果你想跟踪用户/启用重复登录,几乎可以肯定会涉及到一个数据库。

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

阅读更多关于CGI和套接字的内容,并思考一下这一点。

将此游戏制作成网络应用程序会更容易吗?(类似于我使用PHP并在网站上运行游戏时会创建的东西)

似乎有更多的资源可以帮助制作网络应用程序版本,但还有一系列全新的挑战,也许还有更多的新东西需要学习。这在一定程度上取决于你已经适应了什么。也许令人惊讶的是,制作一个网络应用程序和制作一个使用互联网的独立应用程序有很大的不同,但两者都需要大量的新学习。

结论

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

有几种方法可以使用:

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

无论如何,如果你想为匹配的玩家创建一个房间,你必须创建一个服务器。在我看来,python实际上是这方面的首选语言,因为您需要使用套接字,而python正致力于这类事情。你的服务器必须跟踪你游戏中的所有对手和所有比赛。它还必须跟踪每场比赛的比赛状态。如果你想让玩家登录等等,那么你需要一个数据库后端来跟踪用户,也许还有当前的游戏,这样你就可以防止有人同时从多个位置登录。

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

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