2013-03-23 308 views
-2

与我一起,因为我第一次学习这一点,但我试图通过互联网制作四人棋牌游戏。到目前为止,我有这些类:Java - 用于制作在线4人棋牌游戏的结构

MultiPlayerServer 
MultiPlayerServerThread 

Client 

MultiPlayerServer使一个端口监听,每当一个Client开始听,它给责任到MultiPlayerServerThread处理请求,但在这里,我的问题是:我想有一个类可以处理游戏的状态,我是否会创建一个静态类(如果有的话,它可能会去哪里?)。除此之外,客户端需要大量的工作,因为服务器将把客户端数据作为在哪里绘制棋子和实现的其余部分。

TL; DR 如果我是做一个多人在线4播放器棋牌游戏服务器类,服务器线程类和客户端类,其中可能是一个好地方,以使游戏的副本,所以如果多人加入,他们都加入同一个游戏,而不是为自己创建游戏。

回答

1

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

当客户进行移动时,会访问该公共游戏状态,如果移动合法,则会发生变化。

由于每个客户端运行在单独的线程中,因此通常需要进行同步以确保两个客户端不会在同一时间修改状态。使用国际象棋这个问题不大,因为规则只允许一名玩家一次修改游戏状态 - 但如果将“游戏状态”扩展到包含聊天记录之类的内容,请注意引入此规则。

请注意,您可能需要设计这一点,因为您可能会希望MultiPlayerServer跟踪几个 GameState对象。这将允许您的国际象棋服务器保持同时运行多个国际象棋游戏。您需要额外的逻辑来跟踪哪些玩家在哪些游戏中玩。

+0

非常感谢svk,你对问题有真正的洞察力。非常感谢!祝你今天愉快 :) – Zac 2013-03-23 20:51:52