(GridWorld 作为 Collegeboard 的 AP 考试案例研究的东西)
所以,几年来我一直在空闲时间开发这款游戏,而且进展非常顺利。我有一个不错的 lil'stick 角色,它在网格中跑来跑去,捡起物品并与怪物和东西战斗。现在,我想我已经准备好将它提升到一个新的水平(无论如何我都有尽可能多的选择,因为我需要为我的网络课程制作一个项目,哈哈......),而且我'我对如何进步感到有些困惑。
过去我使用 ServerSocket 制作了一些程序,其中我有一个服务器正在运行,并且几个客户端可以连接到它并接收消息,但它们都是简单的文本程序,不会交换超过几个字符串。套接字是我正在考虑使用的,但我不知道如何设置它......
现在,当 GridWorld 运行时,它会自动弹出一个看起来像 JFrame 的东西,其中包含网格和其中的所有参与者。在包含所有代码的主源文件中,呃,“引擎”,如果你愿意的话,基本上有两个巨大的方法:step(),它控制每单位时间发生的事情,以及 keyPressed(),它控制用户按下按键时发生的情况。现在,我在想 step() 肯定需要在服务器端,而 keyPressed() 应该在客户端,还有窗口(当然——否则用户怎么能看到他们的内容呢?重玩?)这个想法是让控制所有 NPC 的动作和游戏计算的主游戏在服务器上只运行一次,
但是就像,我将如何拆分它?(或者如果这甚至是正确的方法?)我什至不确定如何在服务器和客户端之间来回传递数据 - 对于我提到的简单文本程序,我一直使用 PrintWriter 和 BufferedReader。我发现 PrintWriter 确实有一个 print() 方法可以接受任何对象,但是 BufferedReader 将如何接收它呢?它没有任何可以读取对象的方法。
所以基本上,我想知道服务器应该做什么、客户端应该做什么、我应该使用哪些库以及将某些功能放在哪里的所有细节。