多维数组条目生成器
本文关键字:数组 | 更新日期: 2023-09-27 18:21:38
我目前正在通过创建一个基于文本的rpg自学c#,我决定增加额外的挑战,每次生成楼层时随机生成楼层地图(5x5个房间)。似乎一本字典的关键字=指向地图上的位置,而一个包含瓦片详细信息的列表似乎最适合(据我所知),我可以想出两种方法:1) 字典的关键字是包含位置信息的多维数组。2) 键是介于1和25之间的数字,并且位置信息包含在列表的开头。
在这一点上,我试图找到一种方法,可以将值写入其中,并将它们与之前生成的坐标进行比较。我找到了向量,但遗憾的是,它们是c++,我曾想过让For循环在if语句中的同一索引点迭代两个列表(在我看来,它在工作和不工作之间摇摆不定),一些奇怪的数组比较和其他想法。
主要是我想找一个比我更聪明的人,如果一些可能性被排除,也许我会想清楚的。或者,如果有人做了这样的事情,如果我能研究他们的代码,那也会有所帮助。
房间将显示为文本块,地图将显示为类似的阵列
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
简单开始。
对于这种大小的问题,List<T>
完全可以,只需在列表中的每个值上都有一个X和一个Y。
从List
到Dictionary
是您稍后可以进行的优化,您对键1-25的建议很好,您可以使用%
和/
来回转换为X、Y。
使用列表,您只需执行rooms.Where(r => r.X == x && r.Y == y)
即可获得您要查找的房间。
就我个人而言,我会将你的"世界"构建为一个图形而不是网格:每个房间都有一个字符串字典(或枚举,或类实例)到房间,字符串将是你想要移动的方向。
class Room {
public Dictionary<string, Room> Neighbors;
...
room1.Neighbors.Add("north", room3);
...
现在你可以有up
和down
、out
或in
等方向。。。