【问题标题】:C CLI game conceptC CLI 游戏概念
【发布时间】:2010-05-19 08:03:27
【问题描述】:

所以我只是想就我必须为编程课程构建的游戏的整体结构获得一些意见。

基本上 - 我正在为战舰游戏构建两个程序 - 一个客户端和一个服务器。我已经编写了玩战舰游戏的实际程序。我编写的程序是读取地图和规则文件的地方,用户试图猜测船只的位置,直到他们沉没所有船只。

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

这就是我的想法..

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

当游戏开始时 - 游戏线程必须再生成两个线程。每个玩家都有一个战舰游戏实例。每个玩家的实例将是他们的船只所在的位置。然后该线程将依次侦听来自每个客户端的输入,并将该信息传递给相应的游戏。

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

如果我对任何事情模糊不清,请告诉我,我会澄清。非常感谢您的帮助!

【问题讨论】:

  • @Tadeusz A. Kadlubowski:这是一堆模糊的问题,但它们绝对是真实的
  • 抱歉,我并没有真正考虑一个明确的问题。我们可以说我的问题是:我的解释是否有效还是包含一些问题?

标签: c networking multithreading command-line-interface


【解决方案1】:

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

【讨论】:

  • 但是我将如何从程序中实际运行游戏。我需要以某种方式使用其中一个 exec() 函数来启动战舰程序,不是吗?
  • 思考 MVC 模式。连接是视图,游戏是模型。您需要一个控制器来连接视图和模型,但它可以从主线程运行并控制许多游戏和连接。
  • 我不同意。我以前试过这个,但失败了。当你有 1000 个连接时会发生什么?这意味着打开 1000 个线程,因此它会减慢一切。但这只是我的意见
  • @Sanctus2099:我的建议是每场比赛只用两个线程替换 3 个线程。您为性能问题找到了什么解决方案?这可能对 OP 有帮助。
猜你喜欢
  • 2011-02-10
  • 2012-12-24
  • 2010-09-28
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多