当前位置:K88软件开发文章中心编程语言.NET.NET01 → 文章内容

C#版扫雷游戏源代码

减小字体 增大字体 作者:佚名  来源:翔宇亭IT乐园  发布时间:2018-12-31 11:51:00

  •     }  
  •     if (click[mx, my] == 13)  
  •     {  
  •     //第三次右击 恢复原样  
  •     click[mx, my] = 2;  
  •     dline.DrawLine(new Pen(Color.White), mx1, my1, mx1 + 20, my1 + 20);  
  •     dline.DrawLine(new Pen(Color.White), mx1, my1, mx1, my1 + 20);  
  •     dline.DrawLine(new Pen(Color.Black), mx1 + 20, my1, mx1 + 20, my1 + 20);  
  •     dline.DrawLine(new Pen(Color.Black), mx1, my1 + 20, mx1 + 20, my1 + 20);  
  •     dline.FillRectangle(new SolidBrush(Color.FromArgb(224, 224, 224)), mx1 + 1, my1 + 1, 18, 18);  
  •     }  
  •     }  
  •     }  
  •     }  
  •     ///  
  •     /// 初始化屏幕 (包还所有的)  
  •     ///  
  •     public void Startscr()  
  •     {  
  •     Graphics dline = labdraw.CreateGraphics();  
  •     time = 0;  
  •     Blpl();  
  •     timer1.Enabled = false;  
  •     Color c = Color.FromArgb(224, 224, 224);  
  •     labdraw.CreateGraphics()。Clear(c);  
  •     Drawscreen(dline);  
  •     timerEnable = 0;  
  •     labtime.Text = ("000");  
  •     }  
  •     ///  
  •     /// 画界面  
  •     ///  
  •     /// >  
  •     public void Drawscreen(Graphics dline)  
  •     {  
  •     sum = 0; //得到没清楚的格子数  
  •     int mx, my;  
  •     int mx1 = 0, my1 = 0; //得到要画图的坐标  
  •     string text;  
  •     for (mx = 0; mx < ls; mx++)  
  •     {  
  •     for (my = 0; my < hs; my++)  
  •     {  
  •     //画图地位置 mx,my分别是屏幕x,y轴  
  •     mx1 = mx * 2 + mx * 20 + 4;  
  •     my1 = my * 2 + my * 20 + 4;  
  •     if (click[mx, my] != 10 && click[mx, my] != 12 && click[mx, my] != 16 && click[mx, my] != 15)  
  •     {  
  •     //下面用于画立体形矩形;  
  •     sum++;  
  •     Pen mypen = new Pen(Color.Gray);  
  •     Dline(dline, mx1, my1, mypen);  
  •     dline.FillRectangle(new SolidBrush(Color.FromArgb(224, 224, 224)), mx1 + 1, my1 + 1, 18, 18);  
  •     }  
  •     if ((click[mx, my] == 10 || click[mx, my] == 16))  
  •     {  
  •     click[mx, my] = 16; //清除的格子  
  •     //提示周围的雷数  
  •     if (bulei[mx, my] <= 8 && bulei[mx, my] > 0)  
  •     {  
  •     text = bulei[mx, my].ToString();  
  •     dline.DrawString(text, new Font("宋体", 15), new SolidBrush(Color.Black), mx1 + 2, my1 + 2);  
  •     }  
  •     //显示雷  
  •     if ((bulei[mx, my] == 9 || bulei[mx, my] == 100))  
  •     {  
  •     text = "*";  
  •     dline.DrawString(text, new Font("宋体", 15), new SolidBrush(Color.Black), mx1 + 2, my1 + 2);  
  •     if (bulei[mx, my] == 100)  
  •     {  
  •     //被单击的雷上画上叉号  
  •     dline.DrawLine(new Pen(Color.Red), mx1, my1, mx1 + 20, my1 + 20);  
  •     dline.DrawLine(new Pen(Color.Red), mx1, my1 + 20, mx1 + 20, my1);  
  •     }  
  •     }  
  •     }  
  •     }  
  •     //用于画旗 和问号  
  •     Rdraw(dline);  
  •     }  
  •     }  
  •     ///  
  •     /// 当为雷时的算法  
  •     ///  
  •     /// >  
  •     /// >  
  •     public void Panlei(int x, int y)  
  •     {  
  •     if (bulei[x, y] != 0)  
  •     {  
  •     if (bulei[x, y] == 9)  
  •     {  
  •     timer1.Enabled = false//使计时器停止  
  •     timerEnable = 1; //使游戏出游结束状态  
  •     bulei[x, y] = 100;  
  •     int i, j;  
  •     for (i = 0; i < ls; i++)  
  •     {  
  •     for (j = 0; j < hs; j++)  
  •     {  
  •     if (bulei[i, j] == 9 || bulei[i, j] ==100)  
  •     {  
  •     click[i, j] = 10; //显示所有的雷  
  •     }  
  •     }  
  •     }  
  •     }  
  •     if (bulei[x, y] > 0 && bulei[x, y] < 9)  
  •     {  
  •     click[x, y] = 10;  
  •     }  
  •     }  
  •     else 
  •     {  
  •     Panjie(x, y);  
  •     }  
  •     }  
  •     ///  
  •     /// 回到游戏开始的界面  
  •     ///  
  •     ///  
  •     ///  
  •     private void btnreplay_Click(object sender, EventArgs e)  
  •     {  
  •     //初始化一切 包括布雷 ,界面, click数组  
  •     Startscr();  
  •     }  
  •     ///  
  •     /// 计算游戏所用的时间  
  •     ///  
  •     ///  
  •     ///  
  •     private void timer1_Tick(object sender, EventArgs e)  
  •     {  
  •     time++;  
  •     if (time <= 99)  
  •     {  
  •     if (time < 10)  
  •     {  
  •     labtime.Text = ("00" + time.ToString());  
  •     }  
  •     else 
  •     {  
  •     labtime.Text = ("0" + time.ToString());  
  •     }  
  •     }  
  •     else 
  •     {  
  •     if (time < 99)  
  •     {  
  •     labtime.Text = (time.ToString());  
  •     }  
  •     else 
  •     {  
  •     timer1.Enabled = false;  
  •     MessageBox.Show("RIME OVER ");  
  •     time = 0;  
  •     timerEnable = 1;  
  •     }  
  •     }  
  •     }  
  •     ///  
  •     /// 在启动的游戏时初始化界面  
  •     ///  
  •     ///  
  •     ///  
  •     private void labdraw_Paint(object sender, PaintEventArgs e)  
  •     {  
  •     Graphics dline = e.Graphics;  
  •     if (bl == 0)  
  •     {  
  •     Blpl();  
  •     Drawscreen(dline);  
  •     }  
  •     else 
  •     {  
  •     Drawscreen(dline);  
  •     }  
  •     }  
  •     ///  
  •     /// //单击时触发的事件  
  •     ///  
  •     ///  
  •     ///  
  •     private void labdraw_MouseClick(object sender, MouseEventArgs e)  
  •     {  
  •     bl = 10;  
  •     int i=0, j=0;  
  •     if (timerEnable == 0) //判断游戏是否处于结束状态  
  •     {  
  •     timer1.Enabled = true;  
  •     Graphics dline = labdraw.CreateGraphics(); //将LAB1建立成图形对象  
  •     int mx = 0, my = 0;  
  •     int mx2 = 0, my2 = 0;  
  •     int mx3 = 0, my3 = 0;  
  •     //判断鼠标所点位置  
  •     mx2 = e.X;  
  •     my2 = e.Y;  
  •     for (i = 0; i < ls; i++)  
  •     {  
  •     for (j = 0; j < hs; j++)  
  •     {  
  •     mx = 4 + i * 2 + i * 20;  
  •     my = 4 + j * 2 + j * 20;  
  •     //找到单击位置代表的数组  
  •     if (mx < mx2 && mx + 20+4 > mx2 && my < my2 && my2 < my + 20+4 )  
  •     {  
  •     mx3 = i;  
  •     my3 = j;  
  •     break;  
  •     }  
  •     }  
  •     if (j < 9)  
  •     {  
  •     break;  
  •     }  
  •     }  
  •     //判断是左击还是右击  
  •     if (e.Button == MouseButtons.Right && click[mx3, my3] != 10 && mx3 >= 0 && my3 >= 0 && click[mx3, my3] != 16)  
  •     {  
  •     //第2次右击  
  •     if (click[mx3, my3] == 11 && click[mx3, my3] != 10)  
  •     {  
  •     click[mx3, my3] = 12;  
  •     --qishu;  
  •     }  
  •     else 
  •     {  
  •     //第1次右击  
  •     if (click[mx3, my3] != 12 && click[mx3, my3] != 10)  
  •     {  
  •     if (qishu  
  •     {  
  •     click[mx3, my3] = 11;  
  •     qishu++;  
  •     }  
  •     }  
  •     if (click[mx3, my3] == 12 && click[mx3, my3] != 10)  
  •     {  
  •     click[mx3, my3] = 13;  
  •     }  
  •     }  
  •     //右击的绘图事件  
  •     Rdraw(dline);  
  •     Qishu();  
  •     }  
  •     else 
  •     {  
  •     //左击  
  •     if (click[mx3, my3] != 11 && click[mx3, my3] != 16)  
  • 上一页  [1] [2] [3]  下一页


    C#版扫雷游戏源代码