【发布时间】:2023-04-07 04:52:01
【问题描述】:
我在我使用的 PHP 中有这个脚本
while( in_array(array('x' => $x, 'y' => $y), $worldMap) ){ ... }
检查我的世界地图是否已经在这些 XY 位置有一个房间。 如果为真,我会随机化 X 或 Y,然后 WHILE 循环再次检查新值等等,如果为假,我会使用生成的最后一个 XY 填充世界地图数组。
现在,我正在尝试用 C# 重写该代码,但我得到了一个无限循环。
这是我当前的代码:
public int nbRooms = 10;
private Dictionary<int, Dictionary<string, int>> worldMap = new Dictionary<int, Dictionary<string, int>>();
private Dictionary<string, int> roomXY = new Dictionary<string, int>();
private string[] arrayXY = {"X","Y"};
private int[] arrayNbr = {-1,1};
private int X = 0;
private int Y = 0;
for(int i = 0; i <= nbRooms; i++)
{
while(worldMap.ContainsValue(roomXY))
{
string XorY = arrayXY[Random.Range(0, 2)];
switch(XorY)
{
case "X": X += arrayNbr[Random.Range(0, 2)];
break;
case "Y": Y += arrayNbr[Random.Range(0, 2)];
break;
}
roomXY.Clear();
roomXY.Add("X", X);
roomXY.Add("Y", Y);
}
worldMap.Add(i, roomXY);
}
【问题讨论】:
标签: c# dictionary while-loop contains infinite