不知道这段代码是楼主写的还是楼主学习别人的,我来分析下这段代码功能。
这段代码是作扫雷游戏时候初始化雷的位置时候用的,使用bool 2维数组来定义棋盘,当坐标点bool值为true时表示有雷,false时表示无雷。
代码中有点小错误,也就是上面仁兄说的没有意义的那句(红色标注) :
public struct Miner
{
public bool[,] buriedMine;
public int totalMine;
public Miner(int m, int n, int totalMine)
{
this.buriedMine = new bool[m, n];
this.totalMine = totalMine;
Random rm = new Random();
int i = rm.Next() % m;
int j = rm.Next() % n;
for (int k = 0; k < totalMine; k++)
{
while (buriedMine[i, j])
{
i = rm.Next() % m;
j = rm.Next() % n;
}
buriedMine[i, j] = true;
}
}
}
这句,如果要实现我猜想的功能的话,得放到while循环里面,也就是:
public struct Miner
{
public bool[,] buriedMine;
public int totalMine;
public Miner(int m, int n, int totalMine)
{
this.buriedMine = new bool[m, n];
this.totalMine = totalMine;
Random rm = new Random();
int i = rm.Next() % m;
int j = rm.Next() % n;
for (int k = 0; k < totalMine; k++)
{
while (buriedMine[i, j])
{
i = rm.Next() % m;
j = rm.Next() % n;
buriedMine[i, j] = true;
}
}
}
}
楼主可以再看看自己的代码粘贴是否正确,基本功能和解释就是上面强人那样的。 |