1

您好我正在创建一个纸牌游戏并使用 System.Net 和 System.Net.Sockets 类。我很难做的是弄清楚我将如何区分谁做了什么以及将信息包发送给谁。例如,这是将要发生的事情的顺序。

  1. 用户登录到程序并根据 MySQL 数据库检查凭据。

  2. 用户可以创建一个游戏 ID 或游戏编号,该游戏 ID 也会根据数据库进行检查,以查看是否已经存在匹配的游戏 ID 并允许他们加入游戏,或者如果没有游戏则将数据插入数据库并基本上等待让其他玩家加入它(如果您愿意在线游戏,请考虑服务器浏览器)。

  3. 一旦用户加入正在进行的游戏或创建游戏,它就会调用 Async BeginConnect()。

  4. 用户然后玩游戏,并且像(“打出的牌”)或(“失去生命”)等数据被发送给当前游戏中唯一的其他玩家。

我的问题是如何只将该信息发送给正确的玩家。该游戏仅支持 2 名玩家 1 对 1,但在一个给定时间可能会进行多场游戏。例如,可能有 5 场比赛,每场比赛支持 2 名玩家。对我来说,跟踪这些套接字以便区分游戏 ID 的最佳方法是什么。

-> user#1 is playing in game with ID #1 against user#2
--> user#1 "plays a card"
---> Only send this information to user#2

我提前感谢您的帮助,如果我遗漏了一些有助于回答我的问题的内容,请告诉我。

更新
我一直在继续查看其他人如何处理跟踪每个用户的单个套接字的示例,或者在这种情况下为 Game Room。我应该为让我们说一个 ClientSocket 创建一个类并为其分配属性吗?

4

1 回答 1

0

您可以通过将每个连接添加到每个客户端中的键值列表来跟踪,例如(伪代码):

Dictionary<string gameId, socket gameIdConnection> gameConnections;

您知道每个动作属于哪个 gameId,因此您可以使用它获取关联的连接/套接字,然后将数据包写入该套接字。

于 2014-03-03T06:20:56.990 回答