看了篇扫雷的程序,看到初始化雷的时候,发现了点问题.代码如下:
1
int count = 0;
2
Random r = new Random((int)DateTime.Now.Ticks);
3
4
while (count < _mines)
5
{
6
int row = r.Next(0, _rows);
7
int col = r.Next(0, _cols);
8
9
if (!_board[row, col].IsMine)
10
{
11
_board[row, col].IsMine = true;
12
count++;
13
}
14
}

2

3

4

5



6

7

8

9

10



11

12

13

14

思考,当100个位置中放入80个雷的时候很慢,因为到后期的几颗雷会总是早到重复的雷.
为了解决这个问题,讨论了下,得出以下结果:
先写一个函数用来把所有的雷顺序填充到数组中,然后进行随机找放雷的坐标,将第一颗雷的坐标和这个坐标互换,依次类推.
有鸡蛋就扔吧..