110,536
社区成员
发帖
与我相关
我的任务
分享
//布雷且计算非雷点的数字
Random r = new Random();
int[,] mm = new int[width, height];
for (int i = 0; i < mines; i++)
{
int m = r.Next() % width;
int n = r.Next() % height;
if (mm[m, n] != 1)
mm[m, n] = 1;
else
i--;
}
for (int x = 0; x < width; x++)
{
for (int y = 0; y < height; y++)
{
if (mm[x, y] == 1)
state[x, y] = -1;
else
state[x, y] = 0;
}
}
int[,] b = new int[width + 2, height + 2];
for (int x = 0; x < width + 2; x++)
{
for (int y = 0; y < height + 2; y++)
{
if (x == 0 || y == 0 || x == width + 1 || y == height + 1)
b[x, y] = 0;
else
b[x, y] = -state[x - 1, y - 1];
}
}
for (int x = 0; x < width; x++)
{
for (int y = 0; y < height; y++)
{
if (b[x + 1, y + 1] == 0)
{
state[x, y] = b[x, y] + b[x, y + 1] + b[x, y + 2] + b[x + 1, y] + b[x + 1, y + 2] + b[x + 2, y] + b[x + 2, y + 1] + b[x + 2, y + 2];
}
}
}