【发布时间】:2017-10-24 15:51:39
【问题描述】:
我是一个名为 ChatDaemon 的 Astroflux(在线游戏)机器人的创建者。为了开发更高级的功能,我需要该程序(C#,在 Windows Visual Studio 2017 中编码)来跟踪哪些用户在哪个游戏房间中,以便可以关闭特定房间或通知事件。本质上,我需要一个房间列表,每个房间都包含该房间中的玩家列表。
硬上限:
- 最多 150 名玩家
- 最多 40 个房间
- 每个房间最多 20 名玩家
我曾尝试在这里寻找解决问题的方法,但似乎之前的所有问题都是针对与我的差异太大而无用的问题。我完全有可能不知道如何表达我的问题以找到我正在寻找的内容,所以如果这是重复的,请指出我正确的方向。
我尝试使用的代码(史诗般的失败:D)是这样的:
Dictionary<List<string>, List<string>> WhoIsWhere =
new Dictionary<List<string>, List<string>>();
字典似乎可以使用,但我不知道如何根据需要使用它。
我需要的简单示例: 我们有 3 个房间和 5 个人分布在它们之间。
1:a,b,c
2:d
3:e
a 移动到空系统并创建房间 4,e 移动到房间 2,关闭房间 3。我们现在有:
1:b,c
2:d,e
4:a
简而言之,我需要能够将玩家从房间 1 移动到另一个房间,在我的列表列表中创建新房间,并在每个人离开特定房间时删除它们。我不知道该怎么做。有人可以提供一些建议吗?我会尽量关注这个帖子来回答你可能有的任何问题。
注意: 不用担心有人移动时如何通知程序,我已经处理好了。它每 10 秒扫描一次运动。
建议: 有没有可能像下面这样工作?
WhoIsWhere.Add("room1");
WhoIsWhere[room1].Add("newPlayer");
WhoIsWhere[room2].Remove("oldPlayer");
WhoIsWhere[room3].Clear();
WhoIsWhere.Remove("room4");
foreach (string userId in WhoIsWhere[room3])
{
//send a message
}
【问题讨论】:
-
Dictionary<List<string>, List<string>> WhoIsWhere看起来很奇怪 -List键应该代表什么?此外,它会使使用这样的键相当尴尬(与例如:一个简单的string作为键相比) -
Dictionary<List<string>, List<string>>即使这样可以编译,我认为你想使用Dictionary<string>, string>,因为字典已经是一个集合 -
哦,我明白你的意思了。它应该是 Dictionary
> 而不是两个列表。我一定有这样的想法,既然我想要一个列表,它应该是字典中的两个列表。哎呀._. -
可以创建一个实际的
Room类,它有一个 id/name 和一个里面的玩家列表吗? -
只要我可以像上面指定的那样操作和访问值,那就行了。我大约在 8-9 个月前开始编码,我知道的唯一代码是构建我目前所拥有的东西所需的代码。直到上周我才知道演员表是什么。
标签: c#