2010-05-19 106 views
1

所以我只想对我必须为编程类构建的游戏的整体结构提出一些意见。本质上 - 我正在构建两个程序 - 一个客户和一个战舰游戏服务器。我已经编写了玩战舰游戏的实际程序。我写的程序是读入地图和规则文件的地方,用户试图猜测船只的位置,直到他们沉没所有的船只。C CLI游戏概念

对于这个新的程序 - 服务器必须允许两个人的团队使用战列舰游戏相互对抗。客户使用游戏名称连接到游戏,一旦游戏接收到两个客户端,它就可以开始。我们需要在本地机器上使用TCP来在服务器和客户机之间进行通信,并且至少在服务器中使用线程。

这就是我的想法..

一旦客户端连接 - 检查自己要连接到哪个游戏。如果它是一款新游戏 - 为该游戏创建一个新线程并为第一个客户端提供套接字描述符。否则,如果游戏中已经有一个人,请提醒新参与者的游戏线程,并且可以开始游戏。

当游戏开始时 - 游戏线程将不得不产生两个线程..每个玩家的战舰游戏的一个实例。每个玩家的实例都将放置在他们的船上。然后线程会依次监听来自每个客户端的输入并将该信息传递到相应的游戏。

这个解释是否正确?每个运行游戏需要3个线程?另外,是否可以在线程中使用exec()来运行新的战列舰实例,然后使用线程将信息传递给该实例的stdin(并获取stdout)?

请让我知道,如果我什么都朦胧,我会澄清。提前感谢您提供任何帮助!

+0

这不是一个真正的问题。 – 2010-05-19 08:09:17

+1

@Tadeusz A. Kadlubowski:这是一堆模糊的问题,但它们绝对是真实的*。 – ereOn 2010-05-19 08:15:57

+0

对不起,没有真正考虑一个明确的问题。我们可以说我的问题是:我的解释是否有效?是否包含一些问题? – Gary 2010-05-19 09:39:27

回答

1

我会使用尽可能多的线程作为连接的客户端,并将它们仅用于处理连接。游戏本身只是数据/对象,不需要特定的线程。

+0

但我怎么会真的从程序运行游戏。我需要以某种方式使用某个exec()函数来开始战舰计划,不是吗? – Gary 2010-05-19 08:16:47

+0

认为MVC模式。连接是观点,游戏是模型。您需要一个控制器来连接视图和模型,但它可以从主线程运行并控制许多游戏和连接。 – mouviciel 2010-05-19 08:25:36

+0

我不得不不同意。我之前尝试过,失败了。当你有1000个连接时会发生什么?这意味着操作1000个线程,因此会减慢一切。但这只是我的看法 – Sanctus2099 2010-05-19 10:17:08