今天的主要任务就是把单击版的搞定,这是过渡到网络版的必备过程。
如果没有玩过扫雷的,建议先去体验一下;体验完后,自己尝试写出扫雷的算法;经过思考揣摩推敲才能有收获。不建议一上来就下载源码剖析,跟踪代码!
现在我来说下我的思路,如果有更优雅的算法,欢迎大家分享------竞争引发技术进步,分享推动技术进步!
【一】单机版扫雷划为两层
第一层为Button,Button盖在Lable上,Lable被隐藏在Button下面;
第二层为Lable, Lable上的背景图片改成地雷图案表示有雷。
雷区的大家我定为20*20.
privateconstintXcount=20;
privateconstintYcount=20;
添加Lable的代码如下:
1privateLabel[]labels2=newLabel[Xcount*Ycount];
2privateLabel[,]labels=newLabel[Xcount,Ycount];
3intindexOfLable=0;
4privatevoidCreateLable()
5{
6int[]ints=newint[400];
7Randomrd=newRandom();
8for(inti=0;i<400;i++)
9{
10
11ints[i]=rd.Next(1,400);
12}
13for(inti=0;i
15for(intj=0;j
17Labellb=newLabel();
18lb.Location=newPoint(i*30,30*j);
19lb.Size=newSize(30,30);
20lb.BorderStyle=BorderStyle.Fixed3D;
21this.Controls.Add(lb);
22labels[i,j]=lb;
23labels2[indexOfLable]=lb;
24indexOfLable++;
25}
26}
27for(inti=0;i
29if(ints[i]<40)
30{
31labels2[i].Image=Properties.Resources.标准地雷;
32}
33}
34}