我正在创建一个控制台应用程序游戏。游戏包含Point
对象(x
和y
属性)以及GameObject
其他类继承自哪些对象。
我创建了一个字典:
Dictionary<Point, List<GameObject>> myDict
字典中的每个点都存储带有对象/对象的列表。我不想空分。初始化字典的示例:
1. <(0,0), List<obj1>>
2. <(35,10), List<obj2, obj3>>
3. <(8,9), List<obj4, obj5>>
4. <(40,3), List<obj6>>
如果obj1
移动到 (0,1):
<(0,1), List<obj1>>
<(35,10), List<obj2, obj3>>
<(8,9), List<obj4, obj5>>
<(40,3), List<obj6>>
如您所见,key
(0,0) 的对已被删除,而 (0,1) 已被添加。
如果obj2
移动到 (8,9):
<(0,1), List<obj1>>
<(35,10), List<obj3>>
<(8,9), List<obj4, obj5, obj2>>
<(40,3), List<obj6>>
在这种情况下,obj2
刚刚从列表中删除并且密钥没有被删除,因为它存储obj3
并且它不是空的。obj3
已添加到 (8,9) 列表中。
这些操作将在游戏循环内每 250 毫秒自动完成一次。我尝试使用foreach loop
类似的东西:
foreach (KeyValuePair<Point, List<GameObject>> kvp in myDict)
{
foreach (GameObject obj in kvp.Value) {
obj.move();
}
}
但它不起作用,因为据我了解,我无法在迭代时添加/删除键。
你有什么建议吗?
一些重要的事情:
- 我必须为此使用字典。
GameObject
没有Point
财产。GameObject
只有查字典才能知道它的 位置。请不要告诉我添加此属性,因为我不能而且那不是目标。