简单的c#winform象棋游戏(附带源码)

算法源自网络(网络源码连接:http://www.mycodes.net/161/6659.htm)

  整体思路:用二维数组构建棋盘每一个数组元素封装为一个picturebox附带若干属性(例如:棋子归属方、棋子的类型),用一个抽象基类规定基本的棋子移动规则(例如:不能选中空白picturebox、该红方走棋时不能选中蓝方棋子),具体的棋子单独从基类棋子类派生 重写派生类的方法规定其走棋规则,和相应填充picturebox的图片(例如: 炮不能斜着走不能直线吃子,翻山炮必须吃子且移动路径上只能有一个棋子)  

  窗体所用控件:lable、timer、picturebox

  

            

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using System.Windows.Forms;
  6 using System.Drawing;
  7 
  8 namespace 象棋_封_
  9 {
 10     enum chess_type
 11     {
 12         blank,
 13         jiang,
 14         che,
 15         ma,
 16         pao,
 17         xiang,
 18         zu,
 19         shi
 20     };//棋类的枚举类型
 21     enum player_type
 22     {
 23         blank,
 24         red,
 25         blue,
 26     };//玩家类别的枚举类型
 27     abstract class Chess
 28     {
 29         private static Chess[] cover_blue =new Chess[16];//被吃区
 30         private static int r=0;
 31         private static Chess[] cover_red = new Chess[16];//被吃区
 32         private static int f=0;
 33         protected static int chosenX;
 34         protected static int chosenY;
 35         public static bool chosen;
 36         static int n = 1;
 37         public static player_type control_side;
 38         public PictureBox PB;
 39         public chess_type type;
 40         public player_type side;
 41         public Chess()
 42         {
 43             side = player_type.blank;
 44             type = chess_type.blank;
 45         }
 46         public abstract bool Move_judge(object sender, int X, int Y, Chess[][] checkerboard);
 47         public abstract void Put_picture();
 48         //public void Assignment(chess_type ct, player_type pt, Image pic)
 49         //{
 50         //    side = pt;
 51         //    type = ct;
 52         //    PB.Image = pic;
 53         //}//给棋子赋值
 54         public void Bg_Tored()
 55         {
 56             this.PB.BackColor = Color.Red;
 57         }//背景变为红色
 58         public void Bg_Toblank()
 59         {
 60             this.PB.BackColor = Color.Transparent;
 61         }//背景变为白色
 62         private void Chess_Toblank(ref Chess a, PictureBox PB)
 63         {
 64             this.Bg_Toblank();
 65             this.PB.Image = null;
 66             a = new Chess_blank(PB);
 67         }//棋子属性清空
 68         public static void Clearground(Main f, ref Chess[][] checkerboard)//布置战场
 69         {
 70             int i, j;
 71             Control[] col_blue=null;
 72             Control[] col_red=null;
 73             Chess.control_side = player_type.red;
 74             Chess.chosen = false;
 75             //*********************初始化被吃区**************//
 76             for (i = 0; i < 16; i++)
 77             {
 78                 cover_blue[i] = new Chess_blank();
 79                 cover_red[i] = new Chess_blank();
 80             }
 81             for (i = 1; i <= 16; i++)
 82             {
 83                 col_blue = f.Controls.Find("Cover_PBox_blue" + i, false);//检索控件
 84                 col_red = f.Controls.Find("Cover_PBox_red" + i, false);//检索控件
 85                 cover_blue[i - 1].PB = col_blue[0] as PictureBox;
 86                 cover_red[i - 1].PB = col_red[0] as PictureBox;
 87             }
 88             //*********************初始话被吃区**************//
 89 
 90             //*****************构建棋盘********************//
 91             checkerboard = new Chess[10][];
 92             for (i = 0; i < 10; i++)
 93             {
 94                 checkerboard[i] = new Chess[9];//10行9列
 95             }
 96             for (i = 0; i < 10; i++)
 97                 for (j = 0; j < 9; j++)
 98                 {
 99                     checkerboard[i][j] = new Chess_blank();
100                 }
101             checkerboard[0][0] = new Chess_che(player_type.blue);
102             checkerboard[0][1] = new Chess_ma(player_type.blue);
103             checkerboard[0][2] = new Chess_xiang(player_type.blue);
104             checkerboard[0][3] = new Chess_shi(player_type.blue);
105             checkerboard[0][4] = new Chess_jiang(player_type.blue);
106             checkerboard[0][5] = new Chess_shi(player_type.blue);
107             checkerboard[0][6] = new Chess_xiang(player_type.blue);
108             checkerboard[0][7] = new Chess_ma(player_type.blue);
109             checkerboard[0][8] = new Chess_che(player_type.blue);
110             checkerboard[2][1] = new Chess_pao(player_type.blue);
111             checkerboard[2][7] = new Chess_pao(player_type.blue);
112             checkerboard[3][0] = new Chess_zu(player_type.blue);
113             checkerboard[3][2] = new Chess_zu(player_type.blue);
114             checkerboard[3][4] = new Chess_zu(player_type.blue);
115             checkerboard[3][6] = new Chess_zu(player_type.blue);
116             checkerboard[3][8] = new Chess_zu(player_type.blue);
117 
118 
119             checkerboard[6][0] = new Chess_zu(player_type.red);
120             checkerboard[6][2] = new Chess_zu(player_type.red);
121             checkerboard[6][4] = new Chess_zu(player_type.red);
122             checkerboard[6][6] = new Chess_zu(player_type.red);
123             checkerboard[6][8] = new Chess_zu(player_type.red);
124             checkerboard[7][1] = new Chess_pao(player_type.red);
125             checkerboard[7][7] = new Chess_pao(player_type.red);
126             checkerboard[9][0] = new Chess_che(player_type.red);
127             checkerboard[9][1] = new Chess_ma(player_type.red);
128             checkerboard[9][2] = new Chess_xiang(player_type.red);
129             checkerboard[9][3] = new Chess_shi(player_type.red);
130             checkerboard[9][4] = new Chess_jiang(player_type.red);
131             checkerboard[9][5] = new Chess_shi(player_type.red);
132             checkerboard[9][6] = new Chess_xiang(player_type.red);
133             checkerboard[9][7] = new Chess_ma(player_type.red);
134             checkerboard[9][8] = new Chess_che(player_type.red);
135             for (i = 0; i < 10; i++)
136                 for (j = 0; j < 9; j++)//control 是一个存放控件类的容器
137                 {
138                     Control[] col = f.Controls.Find("pictureBox" + (i * 9 + j + 1), false);//检索控件
139                     checkerboard[i][j].PB = col[0] as PictureBox;//类型转换
140                     checkerboard[i][j].PB.Location = new Point(170 + 60 * j, 57 * i);
141                 }
142             for (i = 0; i < 10; i++)
143                 for (j = 0; j < 9; j++)
144                 {
145                     checkerboard[i][j].Put_picture();
146                 }
147             //*****************构建棋盘********************//
148         }
149         protected static int Getx(object sender)
150         {
151             int x;
152             string name = (sender as PictureBox).Name;
153             string number = name.Substring(10);//在字符串中从指定位开始检索(这里是在x后也就是picturebox控件ID不同的尾号)
154             int index = Convert.ToInt32(number);
155             x = (index - 1) / 9;//
156             return x;
157         }
158         protected static int Gety(object sender)
159         {
160             int y;
161             string name = (sender as PictureBox).Name;
162             string number = name.Substring(10);//在字符串中从指定位开始检索(这里是在x后也就是picturebox控件ID不同的尾号)
163             int index = Convert.ToInt32(number);
164             y = (index - 1) % 9;//
165             return y;
166         }
167         public static void Nochozen_dispose(object sender, Chess[][] checkerboard)
168         {
169             Chess.chosen = true;
170             chosenX = Chess.Getx(sender);
171             chosenY = Chess.Gety(sender);
172             if (checkerboard[chosenX][chosenY].side != control_side)//选择的不是当前应该走棋的一方
173             {
174                 chosen = false;
175                 return;
176             }
177             if (checkerboard[chosenX][chosenY].side != player_type.blank)//选择的不是空白
178                 checkerboard[chosenX][chosenY].Bg_Tored();
179             return;
180         }
181         public static bool Chozen_dispose(object sender, Chess[][] checkerboard)
182         {
183             Chess.chosen = false;
184             int x= Getx(sender);
185             int y= Gety(sender);
186             if (checkerboard[chosenX][chosenY].side == checkerboard[x][y].side)//移动位置与选择位是同一阵营
187             {
188                 checkerboard[chosenX][chosenY].Bg_Toblank();
189                 return false;
190             }
191             if (checkerboard[chosenX][chosenY].side == player_type.blank)//选中的是空白
192                 return false;
193             if (checkerboard[chosenX][chosenY].type == chess_type.ma || checkerboard[chosenX][chosenY].type == chess_type.xiang || checkerboard[chosenX][chosenY].type == chess_type.shi)//马象士的移动不能同y或同x
194             {
195                 if (chosenX == x || chosenY == y)
196                 {
197                     checkerboard[chosenX][chosenY].Bg_Toblank();
198                     return false;
199                 }
200             }
201             else
202             {
203                 if (chosenX != x && chosenY != y)//其他棋类都必须同x或同y移动
204                 {
205                     checkerboard[chosenX][chosenY].Bg_Toblank();
206                     return false;
207                 }
208             }
209 
210             if (!checkerboard[chosenX][chosenY].Move_judge(sender, x, y, checkerboard))
211             {
212                 checkerboard[chosenX][chosenY].Bg_Toblank();
213                 return false;
214             }
215             if (Chess.Setmove(checkerboard, x, y))
216                 return true;
217             else
218                 return false;
219         }
220         static bool Setmove(Chess[][] checkerboard,int X,int Y)
221         {
222             n++;
223             bool over = false;
224             player_type z=player_type.blank;
225             if (checkerboard[X][Y].type == chess_type.jiang)
226             {
227                 over = true;
228                 z = checkerboard[X][Y].side;
229             }
230             if (checkerboard[X][Y].PB.Image!=null)
231             Cover(checkerboard[X][Y]);
232             Chess.Change(ref checkerboard[Chess.chosenX][Chess.chosenY],ref  checkerboard[X][Y]);
233             Chess.chosen = false;
234             if (over)
235             {
236                 if (z == player_type.blue)
237                     MessageBox.Show("红方胜利");
238                 else
239                     MessageBox.Show("蓝方胜利");
240                 End f = new End(Time.fen + "" + Time.miao + "");
241                 f.Show();
242                 return true;
243             }
244             if (n % 2 == 0)
245                 Chess.control_side = player_type.blue;
246             else
247                 Chess.control_side = player_type.red;
248             return false;
249         }
250         private static void Change(ref Chess a,ref  Chess b)//a子位移到b子
251         {
252             Chess c = new Chess_blank();
253             c.PB = b.PB;
254             switch (a.type)
255             { 
256                 case chess_type.zu:
257                     b = new Chess_zu(a.side);break;
258                 case chess_type.pao:
259                     b = new Chess_pao(a.side);break;
260                 case chess_type.che:
261                     b = new Chess_che(a.side); break;
262                 case chess_type.ma:
263                     b = new Chess_ma(a.side); break;
264                 case chess_type.xiang:
265                     b = new Chess_xiang(a.side); break;
266                 case chess_type.shi:
267                     b = new Chess_shi(a.side); break;
268                 case chess_type.jiang:
269                     b = new Chess_jiang(a.side); break;
270             }
271             b.type = a.type;
272             b.side = a.side;
273             b.PB = c.PB;
274             b.PB.Image = a.PB.Image;
275             a.Chess_Toblank(ref a,a.PB);
276         }
277         private static void Cover(Chess a)
278         {
279             if (a.side == player_type.blue)
280             {
281                 Change(ref a, ref cover_red[r]);
282                 r++;
283             }
284             else
285             {
286                 Change(ref a, ref cover_blue[f]);
287                 f++;
288             }
289         
290         }//棋子被吃后移动到被吃区
291 
292     }
293 }
棋子抽象基类
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Windows.Forms;
 6 
 7 namespace 象棋_封_
 8 {
 9     class Chess_blank : Chess
10     {
11         public Chess_blank()
12         {
13             base.type = chess_type.blank;
14             base.side = player_type.blank;
15         }
16         public Chess_blank(PictureBox PB)
17         {
18             base.type = chess_type.blank;
19             base.side = player_type.blank;
20             this.PB = PB;
21         }
22         public override bool Move_judge(object sender, int X, int Y, Chess[][] checkerboard)
23         {
24             return false;
25         }
26         public override void Put_picture()
27         {
28                 this.PB.Image = null;
29         }
30     }
31 }
空白属性棋子类
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace 象棋_封_
 7 {
 8     class Chess_che:Chess
 9     {
10         public Chess_che(player_type b)
11         {
12             base.type = chess_type.che;
13             base.side = b;
14         }
15         public override bool Move_judge(object sender, int X, int Y, Chess[][] checkerboard)
16         {
17             int i, j, k;
18             if (Chess.chosenX == X)
19             {
20                 i = Chess.chosenY < Y ? Chess.chosenY : Y;
21                 j = Chess.chosenY > Y ? Chess.chosenY : Y;
22                 for (k = i + 1; k < j; k++)
23                 {
24                     if (checkerboard[X][k].side != player_type.blank)//在移动路径上有棋子情况
25                     {
26                         return false;
27                     }
28                 }
29             }
30             if (Chess.chosenY == Y)
31             {
32                 i = Chess.chosenX < X ? Chess.chosenX : X;
33                 j = Chess.chosenX > X ? Chess.chosenX : X;
34                 for (k = i + 1; k < j; k++)
35                 {
36                     if (checkerboard[k][Y].side != player_type.blank)
37                     {
38                         return false;
39                     }
40                 }
41             }
42             return true;
43         }
44         public override void Put_picture()
45         {
46             if (base.side == player_type.red)
47                 this.PB.Image = global::象棋_封_.Properties.Resources.红車;
48             else
49                 this.PB.Image = global::象棋_封_.Properties.Resources.蓝車;
50         }
51     }
52 }
车类
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace 象棋_封_
 7 {
 8     class Chess_jiang:Chess
 9     {
10         public  Chess_jiang(player_type b)
11         {
12             base.type = chess_type.jiang;
13             base.side = b;
14         }
15         public override bool Move_judge(object sender, int X, int Y, Chess[][] checkerboard)
16         {
17             int i, j, k;
18             if (checkerboard[X][Y].type == chess_type.jiang && Chess.chosenY == Y)//王吃王情况
19             {
20                 i = Chess.chosenX < X ? Chess.chosenX : X;//棋子移动的起点行
21                 j = Chess.chosenX > X ? Chess.chosenX : X;//棋子移动的结束行
22                 for (k = i + 1; k < j; k++)
23                 {
24                     if (checkerboard[k][Y].side != player_type.blank)//中间有棋子情况
25                     {
26                         return false;
27                     }
28                 }
29                 return true;
30             }
31             if (this.side == player_type.blue)
32             {
33 
34                 if (Y < 3 || Y > 5 || X > 2)//当控制者是蓝色方  限制将的移动范围
35                 {
36                     return false;
37                 }
38             }
39             else
40             {
41                 if (Y < 3 || Y > 5 || X < 7)//当控制者是红色方  限制将的移动范围
42                 {
43                     return false;
44                 }
45             }
46             if ((Chess.chosenX - X) * (Chess.chosenX - X) + (Chess.chosenY - Y) * (Chess.chosenY - Y) != 1)//点到点距离x平方加y平方
47             {
48                 return false;
49             }
50             return true;
51         }
52         public override void Put_picture()
53         {
54             if (base.side == player_type.red)
55                 this.PB.Image = global::象棋_封_.Properties.Resources.红帥;
56             else
57                 this.PB.Image = global::象棋_封_.Properties.Resources.蓝将;
58         }
59     }
60 }
将类
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace 象棋_封_
 7 {
 8     class Chess_ma:Chess
 9     {
10        public Chess_ma(player_type b)
11         {
12             base.type = chess_type.ma;
13             base.side = b;
14         }
15        public override bool Move_judge(object sender, int X, int Y, Chess[][] checkerboard)
16        {
17            if (Math.Abs(Chess.chosenX - X) == 1 && Math.Abs(Chess.chosenY - Y) == 2)//移动X方向绝对值为1y方向为2
18            {
19                if (checkerboard[Chess.chosenX][Chess.chosenY + (Y - Chess.chosenY) / Math.Abs(Y - Chess.chosenY)].side != player_type.blank)//不是撇脚马
20                {
21                    return false;
22                }
23            }
24            else if (Math.Abs(Chess.chosenX - X) == 2 && Math.Abs(Chess.chosenY - Y) == 1)//移动y方向绝对值为2x方向为1
25            {
26                if (checkerboard[Chess.chosenX + (X - Chess.chosenX) / Math.Abs(X - Chess.chosenX)][Chess.chosenY].side != player_type.blank)//不是撇脚马
27                {
28                    return false;
29                }
30            }
31            else
32            {
33                return false;
34            }
35            return true;
36        }
37        public override void Put_picture()
38        {
39            if (base.side == player_type.red)
40                this.PB.Image = global::象棋_封_.Properties.Resources.红马;
41            else
42                this.PB.Image = global::象棋_封_.Properties.Resources.蓝马;
43        }
44     }
45 }
马类
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace 象棋_封_
 7 {
 8     class Chess_pao:Chess
 9     {
10        public Chess_pao(player_type b)
11         {
12             base.type = chess_type.pao;
13             base.side = b;
14         }
15        public override bool Move_judge(object sender, int X, int Y, Chess[][] checkerboard)
16        {
17            int p = 0;//用于记录路径上的棋子数
18            int i, j, k;
19            if (Chess.chosenX == X)//同列移动情况
20            {
21                i = Chess.chosenY < Y ? Chess.chosenY : Y;//定起始点
22                j = Chess.chosenY > Y ? Chess.chosenY : Y;//定起始点
23                p = 0;
24                for (k = i + 1; k < j; k++)
25                {
26                    if (checkerboard[X][k].side != player_type.blank)
27                    {
28                        p++;//移动路径上有棋子的个数
29                    }
30                }
31                if (p > 1)
32                {
33                    return false;
34                }
35            }
36 
37 
38            else if (Chess.chosenY == Y)//同行移动情况
39            {
40                i = Chess.chosenX < X ? Chess.chosenX : X;
41                j = Chess.chosenX > X ? Chess.chosenX : X;
42                p = 0;
43                for (k = i + 1; k < j; k++)
44                {
45                    if (checkerboard[k][Y].side != player_type.blank)
46                    {
47                        p++;
48                    }
49                }
50                if (p > 1)
51                {
52                    return false;
53                }
54            }
55            else
56            {
57                return false;
58            }
59            if (p == 0 && checkerboard[X][Y].side != player_type.blank)//中间没有棋子炮不能吃子
60            {
61                return false;
62            }
63            if (p == 1 && checkerboard[X][Y].side == player_type.blank)//中间有棋子但是不能打空炮
64            {
65                return false;
66            }
67            return true;
68        }
69        public override void Put_picture()
70        {
71            if (base.side == player_type.red)
72                this.PB.Image = global::象棋_封_.Properties.Resources.红炮;
73            else
74                this.PB.Image = global::象棋_封_.Properties.Resources.蓝炮;
75        }
76     }
77 }
炮类
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace 象棋_封_
 7 {
 8     class Chess_shi:Chess
 9     {
10          public Chess_shi(player_type b)
11         {
12             base.type = chess_type.shi;
13             base.side = b;
14         }
15          public override bool Move_judge(object sender, int X, int Y, Chess[][] checkerboard)
16          {
17              if (this.side == player_type.blue)
18              {
19                  if (Y < 3 || Y > 5 || X > 2)//限制将的移动范围
20                  {
21                      return false;
22                  }
23              }
24              else
25              {
26                  if (Y < 3 || Y > 5 || X < 7)//限制将的移动范围
27                  {
28                      return false;
29                  }
30              }
31              if (Math.Abs(X - Chess.chosenX) != 1 || Math.Abs(Chess.chosenY - Y) != 1)//只能跨一个方格
32              {
33                  return false;
34              }
35              return true;
36          }
37          public override void Put_picture()
38          {
39              if (base.side == player_type.red)
40                  this.PB.Image = global::象棋_封_.Properties.Resources.红士;
41              else
42                  this.PB.Image = global::象棋_封_.Properties.Resources.蓝士;
43          }
44     }
45 }
士类
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace 象棋_封_
 7 {
 8     class Chess_xiang:Chess
 9     {
10         public Chess_xiang(player_type b)
11         {
12             base.type = chess_type.xiang;
13             base.side = b;
14         }
15         public override bool Move_judge(object sender, int X, int Y, Chess[][] checkerboard)
16         {
17             if (this.side == player_type.blue)
18             {
19                 if (X > 4)
20                 {
21                     return false;
22                 }
23             }
24             else
25             {
26                 if (X < 5)
27                 {
28                     return false;
29                 }
30             }
31             if ((X - Chess.chosenX) * (X - Chess.chosenX) + (Chess.chosenY - Y) * (Chess.chosenY - Y) != 8)
32             {
33                 return false;
34             }
35             if (checkerboard[(X + Chess.chosenX) / 2][(Y + Chess.chosenY) / 2].side != player_type.blank)
36             {
37                 return false;
38             }
39             return true;
40         }
41         public override void Put_picture()
42         {
43             if (base.side == player_type.red)
44                 this.PB.Image = global::象棋_封_.Properties.Resources.红象;
45             else
46                 this.PB.Image = global::象棋_封_.Properties.Resources.蓝象;
47         }
48     }
49 }
象类
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace 象棋_封_
 7 {
 8     class Chess_zu:Chess
 9     {
10        public Chess_zu(player_type b)
11         {
12             base.type = chess_type.zu;
13             base.side = b;
14         }
15        public override bool Move_judge(object sender, int X, int Y, Chess[][] checkerboard)
16        {
17            if (this.side == player_type.blue)//蓝方卒
18            {
19                if (Chess.chosenX < 5 && X - Chess.chosenX != 1)//在5行后选中的卒  
20                {
21                    return false;
22                }
23                if (Chess.chosenX > 4)//移动布数不能大于1
24                {
25                    if (X == Chess.chosenX && Math.Abs(Y - Chess.chosenY) != 1)
26                    {
27                        return false;
28                    }
29                    if (Y == Chess.chosenY && X - Chess.chosenX != 1)
30                    {
31                        return false;
32                    }
33                }
34            }
35            else//红方卒
36            {
37                if (Chess.chosenX > 4 && Chess.chosenX - X != 1)
38                {
39                    return false;
40                }
41                if (Chess.chosenX < 5)
42                {
43                    if (X == Chess.chosenX && Math.Abs(Y - Chess.chosenY) != 1)
44                    {
45                        return false;
46                    }
47                    if (Y == Chess.chosenY && Chess.chosenX - X != 1)
48                    {
49                        return false;
50                    }
51                }
52            }
53            return true;
54        }
55        public override void Put_picture()
56        {
57            if (base.side == player_type.red)
58                this.PB.Image = global::象棋_封_.Properties.Resources.红兵;
59            else
60                this.PB.Image = global::象棋_封_.Properties.Resources.蓝卒;
61        }
62     }
63 }
卒类
 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Windows.Forms;
 9 
10 namespace 象棋_封_
11 {
12     public partial class Start : Form
13     {
14         public Start()
15         {
16             InitializeComponent();
17         }
18 
19         private void LB_Begin_Click(object sender, EventArgs e)
20         {
21             Main f = new Main();
22             f.Show();
23             this.Hide();
24         }
25 
26         private void label2_Click(object sender, EventArgs e)
27         {
28             About f = new About();
29             f.Show();
30             this.Hide();
31         }
32 
33         private void LB_exit_Click(object sender, EventArgs e)
34         {
35             Application.Exit();
36         }
37     }
38 }
主窗体代码
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Windows.Forms;
 6 
 7 namespace 象棋_封_
 8 {
 9     class Time
10     {
11         public Timer t;
12         private Label l;
13         private double s ;
14         private double m ;
15         public  double sum=0;
16         public static string fen="0";
17         public static string miao ="0";
18         public Time(Timer t,Label L) 
19         {
20             s = 0;
21             m = 0;
22             this.t = t;
23             this.l = L;
24         }
25         public string outtime()
26     {
27         string second;
28         string minute;
29         s++;
30         if (s >= 60)
31         {
32             m = s / 60;
33             s = s % 60;
34         }
35         second = Convert.ToString(s);
36         minute = Convert.ToString(m);
37         string sum = minute + "" + second;
38         return sum;
39     }
40         public void clear()
41     {
42         fen = (Convert.ToInt32(fen) + m).ToString();
43         miao = (Convert.ToInt32(miao) + s).ToString();
44         l.Text = "";
45         m = 0;
46         s = 0;
47     }
48     }
49 }
timer类

 

      

posted @ 2016-08-07 19:52  故木  阅读(8145)  评论(1编辑  收藏  举报