我正在尝试在游戏板上的空闲位置随机生成游戏对象。我创建了一个函数来获取空闲的随机位置。该代码向我抛出一个错误...
int getRandPos()
{
for (int i = 0; i < 9; i++)
{
i = Random.Range(0, 8);
if (player[i] == Seed.EMPTY)
{
break;
}
}
return i;
}
错误:当前上下文中不存在名称“i” 我已经用 int 关键字初始化了它,并在 for 循环中使用了大括号,那么为什么仍然存在错误?我该如何修复它?非常感谢你
编辑:我的玩家对象的代码
public Seed[] player = new Seed[9];
根本原因是
i
是在循环内初始化的,所以你不能在循环外引用它。如果你只想找到一个随机的空位,你可以循环直到找到一个:
int getRandPos()
{
int pos = -1;
while(pos < 0)
{
i = Random.Range(0, 8);
if (player[i] == Seed.EMPTY)
{
break;
}
}
return pos;
}
但是如果没有空位,这将无限循环。另一种选择是收集所有空槽并随机选择一个:
int getRandPos()
{
List<int> emptySlots = new List<int>();
for (int i = 0; i < 9; i++)
{
if (player[i] == Seed.EMPTY)
{
emptySlots.Add(i);
}
}
return emptySlots[Random.Range(0, emptySlots.Length)];
}
如果没有空位,我会留给你决定该怎么做...