和我一起,因为我第一次学习这个,但我试图在互联网上制作一个四人棋牌游戏。到目前为止,我有这些课程:
MultiPlayerServer
MultiPlayerServerThread
Client
MultiPlayerServer
设置了一个端口来监听,只要Client
开始收听,它就会负责MultiPlayerServerThread
处理请求,但是我的问题出现了:我希望有一个类处理游戏的状态,我是否制作一个静态类(如果是,它可能去哪里?)。除此之外,客户端将需要大量的工作,因为服务器将提供客户端数据作为绘制典当的位置和其余的实现。
TL; DR 如果我要制作一个具有服务器类,服务器线程类和客户端类的多人在线4人棋牌游戏,那么可能是制作单个游戏副本的好地方,所以如果多人加入,他们都加入同一个游戏而不是为自己创造游戏。
答案 0 :(得分:1)
MultiPlayerServer应该“拥有”游戏状态的一个实例 - 这对所有玩家来说都很常见。 MultiPlayerServerThread类(它抽象到客户端的连接)包含对此公共对象的引用。
当客户移动时,会访问此常见游戏状态,如果移动合法,则会发生变异。
由于每个客户端都在一个单独的线程中运行,因此通常需要同步以确保两个客户端不会在同一时间修改状态。使用国际象棋这不是一个问题,因为规则只允许一个玩家一次修改游戏状态 - 但是如果你扩展“游戏状态”以包括类似聊天记录的东西,请小心引入它。 / p>
请注意,您可能需要设计此项,请记住以后您可能希望MultiPlayerServer跟踪几个 GameState对象。这将允许您的国际象棋服务器保持多个国际象棋游戏同时运行。您需要额外的逻辑来跟踪哪些玩家正在玩哪些游戏。