为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

扫雷程序

2017-10-22 21页 doc 42KB 30阅读

用户头像

is_270070

暂无简介

举报
扫雷程序扫雷程序 using System;   using System.Drawing;   using System.Windows.Forms;  namespace WindowsFormsApplication1  {   public partial class Frm1 : Form  {   #region 变量   public int qishu;   public static int ls=20, hs=11;  public int lgs = 30; //列~行。数数   public int bl=0...
扫雷程序
扫雷程序 using System;   using System.Drawing;   using System.Windows.Forms;  namespace WindowsFormsApplication1  {   public partial class Frm1 : Form  {   #region 变量   public int qishu;   public static int ls=20, hs=11;  public int lgs = 30; //列~行。数数   public int bl=0; //是否重新布雷  public int time ;   public int[,] bulei = new int[ls, hs]; //bulei变的变数0代表无雷~1-8代表雷的~个数9 代表雷   public int ceshi = 0;   public int[,] click = new int[ls, hs]; //10表示要除是变变的 清既11表示右变一次~12表 示右变次 两16表示以除变了清   public int sum = 0;   public int timerEnable = 0; //游变所变的变 状0是游变中  #endregion   public Frm1;,   {   InitializeComponent;,~   }   ///   /// 变变雷的 和可的旗个数插数   ///   public void Qishu;,   {   if ;qishu <= lgs,   {   gamesource.Text = "00" + ;lgs - qishu,。ToString;,~  }   else   {   gamesource.Text = "00" + ;lgs - qishu,。ToString;,~  }   }   ///   /// 方格画   ///   /// <变例变象>   /// <要变的位置画>   /// <要变的位置画>   /// <变使用的变色画>   public void Dline;Graphics dline,int mx1,int my1,Pen mypen,  {   dline.DrawLine;mypen , mx1, my1, mx1 + 20, my1,~  dline.DrawLine;mypen, 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,~   }   ///   /// 看是否可以向周变移变   ///   /// <移变的基本X坐变>   /// <移变的基本Y坐变>   public void Panjie;int x,int y,   {   Pl;x, y,~   if ;y - 1 >= 0,  {   Pl;x,y-1,~   if ;x - 1 >= 0,  {   Pl;x-1,y-1,~  }   if ;x + 1   {   Pl;x + 1, y - 1,~  }   }   if ;y + 1 < hs,  {   Pl;x,y+1,~   if ;x - 1 >= 0,  {   Pl;x - 1, y + 1,~  }   if ;x + 1 < ls,  {   Pl;x + 1, y +1,~  }   }   if ;x - 1 >= 0,  {   Pl;x - 1 ,y,~  }   if ;x + 1 < ls,  {   Pl;x + 1,y,~   }   }   ///   /// 判是否要除断清清   ///   /// <要判的基本断X坐变>   /// <要判的基本断Y坐变>   public void Pl;int x, int y,   {   if ;bulei[x, y] == 0 && click[x, y] != 10 && click[x, y] != 11 && click[x, y] ! = 16,   {   click[x, y] = 10;  Panjie;x,y,~   }   if ;bulei[x, y] > 0 && bulei[x, y] < 9 && click[x, y] != 10 && click[x, y] != 11 && click[x, y] != 16,   {   click[x, y] = 10;  }   }   ///   /// 初始化变~布雷~判周变的雷数断数   ///   public void Blpl;,  {   sum = ls * hs;  qishu = 0;   int mx,my;   //初始化变 数9表示雷数   int mx1,my1;   int sum1=0;   for ;mx = 0; mx < ls; mx++,  {   for ;my = 0; my   {   bulei[mx, my] = 0;   click[mx, my] = 0;   }   }   while;sum1   //定雷的和雷德位置决个数   {   sum1= 0;   Random r = new Random;;int,DateTime.Now.Ticks,~   mx = r.Next;ls-1,~   my = r.Next;hs-1,~   bulei[mx,my] = 9;   for ;mx1 = 0; mx1 < ls; mx1++,  {   for ;my1 = 0; my1 < hs; my1++,  {   sum1 += bulei[mx1, my1];  }   }   }   //判周变雷的断个数   for ;mx = 0; mx < ls; mx++,  {   for ;my = 0; my < hs; my++,  {   if ;bulei[mx,my] != 9,  {   if ;mx - 1 >= 0,   {   if ;bulei[mx - 1, my] == 9,  {   bulei[mx, my]++;   }   if ;my - 1 >= 0 && bulei[mx - 1, my - 1] == 9,   {   bulei[mx, my]++;   }   if ; my + 1 < hs && bulei[mx - 1, my + 1] == 9,   {   bulei[mx , my]++;   }   }   if ;mx +1   {   if ;bulei[mx + 1, my] == 9,  {   bulei[mx, my]++;   }   if ;my- 1 >= 0 && bulei[mx+ 1, my - 1] == 9,   {   bulei[mx, my]++;   }   if ;my + 1 < hs && bulei[mx + 1, my + 1] == 9,   {   bulei[mx, my]++;   }   }   if;my-1>=0 && bulei[mx,my-1]==9,  {   bulei[mx, my]++;   }   if ;my +1   {   bulei[mx, my]++;   }   }   }   }   }   ///   /// 右变的重变   ///   /// >   public void Rdraw;Graphics dline,   {   string text;   int mx,my;   int mx1, my1;   for ;mx = 0;mx < ls; mx++,  {   for ;my = 0; my < hs; my++,  {   mx1 = mx * 2 + mx * 20 + 4;  my1 = my * 2 + my * 20 + 4;  if ; click[mx, my] == 11,  {   //第一次右变旗画   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,~   text = "P";   dline.DrawString;text, new Font;"宋体", 15,~ new SolidBrush;Color.Red,~ mx1 + 2, my1 + 2,~   }   if ; click[mx, my] == 12,   {   //第二次右变变变画号   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,~   text = "?";   dline.DrawString;text, new Font;"宋体", 15,~ new SolidBrush;Color.Black,~ mx1 + 2, my1 + 2,~   }   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,   {   click[mx3, my3] = 15;   Color c = Color.FromArgb;224, 224, 224,~   // 用背景变色清屏   labdraw.CreateGraphics;,。Clear;c,~  Panlei ;mx3, my3,~   Drawscreen;dline,~   }   if ;bulei[mx3, my3] == 100,  {   MessageBox.Show;"GAME OVER",~  timer1.Enabled = false;  timerEnable = 1;   }   }   if ;sum == lgs,   {   MessageBox.Show;"GAME WIN",~  timer1.Enabled = false;  timerEnable = 1;   }   }   }   private void Frm1_Load;object sender, EventArgs e,   {   Qishu;,~ //变出雷的个数   // this.Height = hs * 22 + 20;  // this.Width = ls * 22 + 8;  }   }   }
/
本文档为【扫雷程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索