-3

我正在尝试通过互联网制作一个四人国际象棋游戏。到目前为止,我有这些课程:

MultiPlayerServer
MultiPlayerServerThread

Client

使MultiPlayerServer端口进行侦听,并且每当Client开始侦听时,它就负责MultiPlayerServerThread处理请求,但是我的问题来了:我希望有一个单独的类来处理游戏的状态,是否要制作一个静态类(如果是这样,它会去哪里?)。除此之外,客户端将需要大量工作,因为服务器将向客户端提供数据,作为绘制棋子的位置和其余的实现。

TL;DR 如果我要制作一个包含服务器类、服务器线程类和客户端类的多人在线 4 人国际象棋游戏,哪里可能是制作单个游戏副本的好地方,这样如果多人加入,他们都加入了同一个游戏,而不是为自己创造游戏。

4

1 回答 1

1

MultiPlayerServer 应该“拥有”游戏状态的一个实例——这对所有玩家都是通用的。MultiPlayerServerThread 类(抽象到客户端的连接)包含对这个公共对象的引用。

当客户端移动时,会访问这种常见的游戏状态,如果移动是合法的,则会发生变异。

由于每个客户端都在单独的线程中运行,因此您通常需要同步以确保两个客户端不会同时修改状态。对于国际象棋,这不是什么大问题,因为规则一次只允许一个玩家修改游戏状态——但如果您将“游戏状态”扩展为包含聊天日志之类的内容,请小心引入这一点。

请注意,您可能希望在设计时记住您以后可能希望 MultiPlayerServer 跟踪多个GameState 对象。这将允许您的国际象棋服务器同时运行多个国际象棋游戏。您需要额外的逻辑来跟踪哪些玩家正在玩哪些游戏。

于 2013-03-23T20:44:46.920 回答