我的第一个问题在这里,网络通信,所以请不要在恶劣的,如果出事了:)一个回合的棋盘游戏
我目前一个CS的学生(来自德国,如果这个信息是任何使用;)),我们得到了一个可自由选择的编程任务,我们必须在C++/CLI Windows窗体应用程序中编写这些任务。
我的团队,其他两个人和我决定去参加一个网络兼容的棋盘游戏风险端口。
我们将工作分为3部分,即UI,游戏逻辑和网络。现在我们正在努力让所有的东西一起工作,而最大的问题在于如何让客户端彼此同步?
我们的方法到目前为止,每个客户端都具有计算和/或执行所有可能操作所必需的所有信息。事实上,除了游戏初始化阶段(添加玩家,选择地图等)之外,客户端可以获得所有信息,这需要一个“超级客户端”和一些额外的东西来控制事物。
这是我们的做法的标准场景:
- 玩家进行行动,行动是有效的,玩家客户端
- 动作是在网络上执行
- 行动派出上得到执行其他客户
到目前为止我们提出的设计(即没有或代码到目前为止),就像下面的伪序列图。
桂,控制器和网络工具所有可能的操作(即,其改变数据的所有行动),如从一个接口的方法。所以每个部分都可以通过一种方式来实现这个方法来完成他们的工作。
例与行动():
者侧的客户:
Player-->Gui.Action()
Gui-->Controller.Action()
Controller-->Logic.Action
(Logic.Action() == NoError)?
Controller-->Network.Action()
Network-->Parser.ParseAction()
Network.Send(msg)
在所有其他客户端:
Network.Recv(msg)
Network-->Parser.Deparse(msg)
Parser-->Logic.Action()
Logic-->Gui.Action()
的问题:
这是一个可行的方法来完成我们的任务吗?
任何更好/更简单的方法呢?
建议,批评?
我们的知识(这样你就可以更好地针对您的答案):
我们对初学侧,与一个小团队关于编程的一个稍大的项目。 我们都有一些一般的编程经验和.Net库和Windows窗体的基本理解。
如果您需要更多信息,请随时询问。
嗨, 感谢您的回答。 问题是,我们必须使用这些技术,即C++/CLI和.Net Windows窗体。甚至不可能使用其他.Net语言,我们的教授在这方面非常严格:)(不要问我为什么。) 我想说的是,初学者的事情是,我们所有人都知道C++和.NET的东西,至少理论方面。但是我们都没有任何“真实世界”编程经验,更不用说这个规模的项目了。 – randooom 2010-06-03 07:11:51
是的,我们使用服务器/客户端方法。上例中的网络类只是整个网络的抽象概念。 但服务器只是在那里管理连接和客户端,并将传入的操作广播到所有其他客户端。通过上述方法,我们认为不需要给服务器更多的权力,因为每个客户都可以自己做计算和工作。 – randooom 2010-06-03 07:18:49
当然听起来像你知道你在做什么。我只是抱歉,我没有任何现实世界的建议给你 - 这似乎适用。 – 2010-06-03 08:54:11