gpt4 book ai didi

java - 如何将网络添加到我在 GridWorld 中制作的游戏中?

转载 作者:行者123 更新时间:2023-12-01 15:42:13 24 4
gpt4 key购买 nike

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。




8年前关闭。




(GridWorld 作为 Collegeboard 的 AP 考试案例研究的东西)

所以,几年来我一直在空闲时间开发这款游戏,而且进展非常顺利。我有一个不错的 lil'stick 角色,它在网格中跑来跑去,捡起元素并与怪物战斗。现在,我想我已经准备好将它提升到一个新的水平(无论如何我都有尽可能多的选择,因为我需要为我的网络类(class)制作一个项目,哈哈......),而且我我对如何进步感到有些困惑。

我过去使用 ServerSocket 制作了一些程序,其中我有一个服务器正在运行,并且几个客户端可以连接到它并接收消息,但它们都是简单的文本程序,不会交换超过几个字符串。套接字是我正在考虑使用的,但我不知道如何设置它......

现在,当 GridWorld 运行时,它会自动弹出一个看起来像 JFrame 的东西,其中包含网格和其中的所有参与者。在包含所有代码的主源文件中,呃,“引擎”,如果你愿意的话,基本上有两个巨大的方法:step(),它控制每单位时间发生的事情,以及 keyPressed(),它控制用户按下按键时发生的情况。现在,我在想 step() 肯定需要在服务器端,而 keyPressed() 应该在客户端以及窗口(当然——否则用户将如何看到他们的内容)重玩?)这个想法是让控制所有 NPC 的 Action 和游戏计算的主游戏在服务器上只运行一次,并且多个客户端能够连接到它,并且每个客户端都有自己的角色游戏(基本上就像一个mmorpg)。

但是就像,我将如何拆分它? (或者如果这甚至是正确的方法?)我什至不确定如何在服务器和客户端之间来回传递数据 - 对于我提到的简单文本程序,我一直使用 PrintWriter 和 BufferedReader。我发现 PrintWriter 确实有一个 print() 方法可以接受任何对象,但是 BufferedReader 将如何接收它呢?它没有任何可以读取对象的方法。

所以基本上,我想知道服务器应该做什么、客户端应该做什么、我应该使用哪些库以及将某些功能放在哪里的所有细节。

最佳答案

根据您目前的设计,您可能想要使用 RMI 之类的东西。用于客户端和服务器之间的通信。这将使您能够专注于如何在客户端和服务器之间调用方法,而不必过多担心管理网络通信。

RMI 可能不是您想要长期使用的,但它可能是让您的客户端启动并运行的正确下一步。

至于流 - PrintWriter.print(Object) 只是写出对象的 String 表示形式 - 即它调用 toString() -,因此无法将其转回对象。

为此,您需要 ObjectOutputStream 和 Java 序列化。但是 RMI 会为您做到这一点,而您无需深入了解细节。

关于java - 如何将网络添加到我在 GridWorld 中制作的游戏中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7869719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com