我正在试图找出使用Java RMI实现“Hearts”多人游戏的最佳做法。
这是我到目前为止的想法:
一个远程接口,包含玩家要求的常见任务的方法(每个玩家的交易卡,将牌传递给其他玩家,打牌等)。
服务器将包含4个玩家对象,其中包含他们的牌,当前效果(追求2个俱乐部,允许或不允许在游戏中玩心牌等)以及定义当前游戏状态的变量(卡片)已经玩过,正在使用的套装,如果可以玩心牌等等。)
客户端实例只处理GUI(根据远程方法调用提供的结果进行更改)
我仍然不知道:
播放器播放卡片后,如何在操作完成后立即与其他客户端进行有效通信以更新其GUI? (我只找到客户端调用服务器做某事的例子,而不是相反的例子)
我是否应该将每个Player对象实现为远程对象?或者只是常规对象进入服务器实例?
是否可以使用线程控制每个客户端状态(正在播放,等待其他玩家,结束回合......)如果是这样,我该怎么做?
欢迎任何关于应用程序结构如何变得更好的建议。