使用 Python 创建 2 人游戏

2024-01-07

我的朋友向我提出挑战,要求我制作一个我们可以互相对战的流行游戏“战舰”的版本。如果你不了解这款游戏,那其实并不重要,因为对我来说,困难的部分不是制作游戏,而是弄清楚我们如何通过计算机相互对战。我之前制作过同样的游戏,只针对一名玩家(我使用的是Python),所以我现在想知道的是:

  • 最简单的方法是什么?(我在想Hamachi)。
  • 我应该从哪里开始?从什么开始?

提前致谢 :)


我建议首先制作一个非网络版本的游戏,在同一程序实例/窗口中支持 2 个玩家。这样您就能够重新建模/设计您的代码以首先支持 2 个玩家。

如果这有效,您必须选择要使用的网络库(或原始 TCP/套接字),稍微考虑一下问题,然后重构/拆分程序,以便您可以将 2 个玩家分成 2 个独立的程序进行通信通过网络相互联系。

对于网络来说,RPC(远程过程调用)可能是最容易使用的选择;有关选项,请查看:目前使用 Python 进行 RPC 的选择是什么? https://stackoverflow.com/questions/1879971/what-is-the-current-choice-for-doing-rpc-in-python。或者您可能只想使用一些非常原始的东西,例如socket,或者稍微不那么原始的,例如 ZeroMQ。

您可能对此也感兴趣:http://pygnetic.readthedocs.org/en/latest/ http://pygnetic.readthedocs.org/en/latest/:

pygnetic 是一个旨在帮助在 Pygame 中开发网络游戏和应用程序的库

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Python 创建 2 人游戏 的相关文章

随机推荐

  • WCF 跨域使用 Jsonp 错误未捕获 SyntaxError:意外的标记:

    我正在尝试使用 jQuery 跨域调用 Web 服务 这是我调用服务的代码 document ready function ajax type GET async false contentType application json url
  • AWS Device Farm。如何将测试用例后生成的自定义报告保存到本地空间

    我正在使用 AWS 设备场 我的测试脚本在本地系统上运行时按预期工作 并在本地系统中的指定路径生成报告 现在 当我在设备场中运行代码时 不会生成报告 Am我错过了什么 这是我的测试代码 用于将测试用例写入 html 报告 package t
  • docs 文件夹中的 GitHub Pages 引用 docs 文件夹外部的文件

    我遵循了 GitHub 的文档并使用成功发布了我的项目页面docs我的项目存储库下的文件夹 但我想知道如何解决这个小问题 我正在开发一个 JavaScript 库wesa js http caiyi us wesa 源文件存储在src存储库
  • 如何使用 TypeORM 创建这个 ViewEntity?

    假设我正在构建一个有 4 个表的地址簿 user contact friend and stranger contact是链接表连接user与两个friend and stranger表 它的结构如下 id user id friend i
  • 为什么将 strlen 重新实现为循环+减法?

    灵感来自这个问题 https stackoverflow com q 6842130 57428关于 SQLite3 中的以下代码 static int strlen30 const char z const char z2 z while
  • 发布回复收件箱消息?

    我正在尝试通过发送 POST 请求来回复收件箱消息 message id comments 这是发送收件箱消息回复的正确方法吗 我收到以下错误 error type OAuthException message 3 App must be
  • c++ 打洞UDP(RTP)

    我正在做一个客户端 服务器语音聊天程序 非托管C win32 其中客户端使用TCP连接到服务器 文本聊天 聊天室功能是在TCP中完成的 而所有音频传输都是通过单独的UDP RTP套接字发送的 使用API来自 JRTPLIB 因此 从 TCP
  • 如何将数据帧字典绘制到子图

    我有一个包含不同系列的字典 每个系列都有不同的长度 我将为它们绘制条形图 每个都在一个子图中 这是字典 data df A 0 0 1 0 2 0 3 0 4 0 5 14343 6 14343 7 0 8 8107 9 11 10 0 1
  • WooCommerce - 将产品描述从选项卡移至摘要中

    我一直在寻找如何将 Woocommerce 单个产品页面上的产品描述从选项卡移至主要部分 我就是到处都找不到它 如果有人能帮助我 我将非常感激 因为我有点失去理智了 谢谢 担 Edit 提交后 我有了一个想法 所有的钩子都只是函数 所以我创
  • python sqlAlchemy:更改类位置后出现 InvalidRequestError

    如果我把CapacityMin类和单元测试类在同一个 py 文件中 一切安好 但我搬家后CapacityMin类到一个单独的文件 并运行单元测试 我得到这个错误 预期的 SQL 表达式 列或映射实体 DETAILS InvalidReque
  • 如果为空则隐藏表格行

    我的 JSP 中有一个表 当生成页面时 该表可以为空 我想知道是否有办法仅在它们中没有实际文本的情况下隐藏它们 这是它们的样子 table border 1 style padding left 4px tr td td tr table
  • 禁用单个(禁用)@Html.EditorFor 上的验证

    我读过 给定的执行方式似乎对于不同的操作 控制器具有不同的视图模型 在我看来 这有点矫枉过正 我想 Html EditorFor model gt model Ingredient Name new htmlAttributes new c
  • 如何将 Carbon AXUIElementRef 转换为 Cocoa NSWindow

    在我的项目中 我可以获得鼠标所在的窗口 并且我可以使用AXUIElementSetAttributeValue element kAXFrontmostAttribute kCFBooleanTrue 使窗口暂时处于顶层 所以我想将元素转换
  • 如何在 PrimeNG 15.4+ 中替换表头排序图标

    在最新版本的 PrimeNG 中 图标排序的方式发生了变化 他们曾经只是有一个i带有 CSS 类的标签 我可以在 CSS 中覆盖它以使用我公司的图标 但现在他们使用带有 SVG 的模板 我在他们的发行说明中看到如何覆盖菜单中的图标 例如下拉
  • git 提交目录

    我创建了一个存储库 并在本地将现有项目目录拖放到该存储库中 然后我做了类似 git add directory 的事情并提交并推送它 当我在 github 上查看我的存储库时 我看到的只是没有子文件夹 没有内容的目录 如何将该项目的所有文件
  • 如何将图库按钮添加到有意打开的相机中?

    在我的应用程序中 用户可以使用相机拍摄照片 我使用意图来启动它 Intent android provider MediaStore ACTION IMAGE CAPTURE 现在 当打开相机时 缺少图库按钮 该按钮允许用户从 SD 卡中选
  • 主导基线在 Firefox 中不起作用

    考虑以下示例 g transform translate 50px 50px dominant baseline central text anchor middle
  • 在 JavaScript 中分析 JSON 数据

    我并不是说这是一个完全聪明的想法 我认为 理想情况下 大量数据的计算应该在后端完成 但请幽默一下 我正在尝试从 JSON 源中提取视图数据并进行一些分析 给定以下数据源 group satellite 1 data label feed 1
  • 以编程方式更改标签属性

    问题是我需要以编程方式更改标签字体粗细和字体样式 但似乎没有任何效果 这是我到目前为止所尝试的 label FontWeight FontWeight FromOpenTypeWeight 99 对于 label FontStyle 我不知
  • 使用 Python 创建 2 人游戏

    我的朋友向我提出挑战 要求我制作一个我们可以互相对战的流行游戏 战舰 的版本 如果你不了解这款游戏 那其实并不重要 因为对我来说 困难的部分不是制作游戏 而是弄清楚我们如何通过计算机相互对战 我之前制作过同样的游戏 只针对一名玩家 我使用的