首页 / 软件开发 / .NET编程技术 / 基于.NET平台网络编程入门实战系列 二 - 让单击版的扫雷跑起来
基于.NET平台网络编程入门实战系列 二 - 让单击版的扫雷跑起来2011-01-28 博客园 当耐特砖家今天的主要任务就是把单击版的搞定,这是过渡到网络版的必备过程。如果没有玩过扫雷的,建议先去体验一下;体验完后,自己尝试写出扫雷的算法;经过思考揣摩推敲才能有收获。不建议一上来就下载源码剖析,跟踪代码!现在我来说下我的思路,如果有更优雅的算法,欢迎大家分享------竞争引发技术进步,分享推动技术进步!【一】单机版扫雷划为两层第一层为Button,Button盖在Lable上,Lable被隐藏在Button下面;第二层为Lable, Lable上的背景图片改成地雷图案表示有雷。雷区的大家我定为20*20.private const int Xcount = 20;
private const int Ycount = 20;
添加Lable的代码如下:1 private Label[] labels2 = new Label[Xcount * Ycount];
2 private Label[,] labels = new Label[Xcount, Ycount];
3 int indexOfLable = 0;
4 private void CreateLable()
5 {
6 int[] ints = new int[400];
7 Random rd = new Random();
8 for (int i = 0; i < 400; i++)
9 {
10
11 ints[i] = rd.Next(1, 400);
12 }
13 for (int i = 0; i < Xcount; i++)
14 {
15 for (int j = 0; j < Ycount; j++)
16 {
17 Label lb = new Label();
18 lb.Location = new Point(i * 30, 30 * j);
19 lb.Size = new Size(30, 30);
20 lb.BorderStyle = BorderStyle.Fixed3D;
21 this.Controls.Add(lb);
22 labels[i, j] = lb;
23 labels2[indexOfLable] = lb;
24 indexOfLable++;
25 }
26 }
27 for (int i = 0; i < ints.Length; i++)
28 {
29 if (ints[i] < 40)
30 {
31 labels2[i].Image = Properties.Resources.标准地雷;
32 }
33 }
34 }