知识大全 自创C#扫雷代码
Posted 知
篇首语:少年辛苦终身事,莫向光阴惰寸功。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 自创C#扫雷代码相关的知识,希望对你有一定的参考价值。
趣味编程:自创C#扫雷代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
虽然不很好但是还可以玩 绝对是原版代码 using System; using System Drawing; using System Windows Forms; namespace WindowsFormsApplication public partial class Frm : Form #region 变量 public int qishu; public static int ls= hs= ; public int lgs = ; //列数 行数 public int bl= ; //是否重新布雷 public int time ; public int[ ] bulei = new int[ls hs]; //bulei数组的值 代表无雷 代表雷的个数 代表雷 public int ceshi = ; public int[ ] click = new int[ls hs]; // 表示要清除既是单击的 表示右击一次 表示右击两次 表示以清除过了 public int sum = ; public int timerEnable = ; //游戏所处的状态 是游戏中 #endregion public Frm () InitializeComponent() /// /// 标识雷的个数 和可插的旗数 /// public void Qishu() if (qishu <= lgs) gamesource Text = + (lgs qishu) ToString() else gamesource Text = + (lgs qishu) ToString() /// /// 画方格 /// /// <实例对象> /// <要画图的位置> /// <要画图的位置> /// <画图使用的颜色> public void Dline(Graphics dline int mx int my Pen mypen) dline DrawLine(mypen mx my mx + my ) dline DrawLine(mypen mx my mx my + ) dline DrawLine(new Pen(Color Black) mx + my mx + my + ) dline DrawLine(new Pen(Color Black) mx my + mx + my + ) /// /// 看是否可以向周围移动 /// /// <移动的基本X坐标> /// <移动的基本Y坐标> public void Panjie(int x int y) Pl(x y) if (y >= ) Pl(x y ) if (x >= ) Pl(x y ) if (x + Pl(x + y ) if (y + < hs) Pl(x y+ ) if (x >= ) Pl(x y + ) if (x + < ls) Pl(x + y + ) if (x >= ) Pl(x y) if (x + < ls) Pl(x + y) /// /// 判断是否要清清除 /// /// <要判断的基本X坐标> /// <要判断的基本Y坐标> public void Pl(int x int y) if (bulei[x y] == && click[x y] != && click[x y] != && click[x y] != ) click[x y] = ; Panjie(x y) if (bulei[x y] > && bulei[x y] < && click[x y] != && click[x y] != && click[x y] != ) click[x y] = ; /// /// 初始化数组 布雷 判断周围的雷数 /// public void Blpl() sum = ls * hs; qishu = ; int mx my; //初始化数组 表示雷数 int mx my ; int sum = ; for (mx = ; mx < ls; mx++) for (my = ; my bulei[mx my] = ; click[mx my] = ; while(sum //决定雷的个数和雷德位置 sum = ; Random r = new Random((int)DateTime Now Ticks) mx = r Next(ls ) my = r Next(hs ) bulei[mx my] = ; for (mx = ; mx < ls; mx ++) for (my = ; my < hs; my ++) sum += bulei[mx my ]; //判断周围雷的个数 for (mx = ; mx < ls; mx++) for (my = ; my < hs; my++) if (bulei[mx my] != ) if (mx >= ) if (bulei[mx my] == ) bulei[mx my]++; if (my >= && bulei[mx my ] == ) bulei[mx my]++; if ( my + < hs && bulei[mx my + ] == ) bulei[mx my]++; if (mx + if (bulei[mx + my] == ) bulei[mx my]++; if (my >= && bulei[mx+ my ] == ) bulei[mx my]++; if (my + < hs && bulei[mx + my + ] == ) bulei[mx my]++; if(my >= && bulei[mx my ]== ) bulei[mx my]++; if (my + bulei[mx my]++; /// /// 右击的重绘 /// /// > public void Rdraw(Graphics dline) string text; int mx my; int mx my ; for (mx = ;mx < ls; mx++) for (my = ; my < hs; my++) mx = mx * + mx * + ; my = my * + my * + ; if ( click[mx my] == ) //第一次右击画旗 dline DrawLine(new Pen(Color White) mx my mx + my + ) dline DrawLine(new Pen(Color White) mx my mx my + ) dline DrawLine(new Pen(Color Black) mx + my mx + my + ) dline DrawLine(new Pen(Color Black) mx my + mx + my + ) dline FillRectangle(new SolidBrush(Color FromArgb( )) mx + my + ) text = P ; dline DrawString(text new Font( 宋体 ) new SolidBrush(Color Red) mx + my + ) if ( click[mx my] == ) //第二次右击画问号 dline DrawLine(new Pen(Color White) mx my mx + my + ) dline DrawLine(new Pen(Color White) mx my mx my + ) dline DrawLine(new Pen(Color Black) mx + my mx + my + ) dline DrawLine(new Pen(Color Black) mx my + mx + my + ) dline FillRectangle(new SolidBrush(Color FromArgb( )) mx + my + ) text = ? ; dline DrawString(text new Font( 宋体 ) new SolidBrush(Color Black) mx + my + ) if (click[mx my] == ) //第三次右击 恢复原样 click[mx my] = ; dline DrawLine(new Pen(Color White) mx my mx + my + ) dline DrawLine(new Pen(Color White) mx my mx my + ) dline DrawLine(new Pen(Color Black) mx + my mx + my + ) dline DrawLine(new Pen(Color Black) mx my + mx + my + ) dline FillRectangle(new SolidBrush(Color FromArgb( )) mx + my + ) /// /// 初始化屏幕 (包还所有的) /// public void Startscr() Graphics dline = labdraw CreateGraphics() time = ; Blpl() timer Enabled = false; Color c = Color FromArgb( ) labdraw CreateGraphics() Clear(c) Drawscreen(dline) timerEnable = ; labtime Text = ( ) /// /// 画界面 /// /// > public void Drawscreen(Graphics dline) sum = ; //得到没清楚的格子数 int mx my; int mx = my = ; //得到要画图的坐标 string text; for (mx = ; mx < ls; mx++) for (my = ; my < hs; my++) //画图地位置 mx my分别是屏幕x y轴 mx = mx * + mx * + ; my = my * + my * + ; if (click[mx my] != && click[mx my] != && click[mx my] != && click[mx my] != ) //下面用于画立体形矩形 sum++; Pen mypen = new Pen(Color Gray) Dline(dline mx my mypen) dline FillRectangle(new SolidBrush(Color FromArgb( )) mx + my + ) if ((click[mx my] == || click[mx my] == )) click[mx my] = ; //清除的格子 //提示周围的雷数 if (bulei[mx my] <= && bulei[mx my] > ) text = bulei[mx my] ToString() dline DrawString(text new Font( 宋体 ) new SolidBrush(Color Black) mx + my + ) //显示雷 if ((bulei[mx my] == || bulei[mx my] == )) text = * ; dline DrawString(text new Font( 宋体 ) new SolidBrush(Color Black) mx + my + ) if (bulei[mx my] == ) //被单击的雷上画上叉号 dline DrawLine(new Pen(Color Red) mx my mx + my + ) dline DrawLine(new Pen(Color Red) mx my + mx + my ) //用于画旗 和问号 Rdraw(dline) /// /// 当为雷时的算法 /// /// > /// > public void Panlei(int x int y) if (bulei[x y] != ) if (bulei[x y] == ) timer Enabled = false; //使计时器停止 timerEnable = ; //使游戏出游结束状态 bulei[x y] = ; int i j; for (i = ; i < ls; i++) for (j = ; j < hs; j++) if (bulei[i j] == || bulei[i j] == ) click[i j] = ; //显示所有的雷 if (bulei[x y] > && bulei[x y] < ) click[x y] = ; else Panjie(x y) /// /// 回到游戏开始的界面 /// /// /// private void btnreplay_Click(object sender EventArgs e) //初始化一切 包括布雷 界面 click数组 Startscr() /// /// 计算游戏所用的时间 /// /// /// private void timer _Tick(object sender EventArgs e) time++; if (time <= ) if (time < ) labtime Text = ( + time ToString()) else labtime Text = ( + time ToString()) else if (time < ) labtime Text = (time ToString()) else timer Enabled = false; MessageBox Show( RIME OVER ) time = ; timerEnable = ; /// /// 在启动的游戏时初始化界面 /// /// /// private void labdraw_Paint(object sender PaintEventArgs e) Graphics dline = e Graphics; if (bl == ) Blpl() Drawscreen(dline) else Drawscreen(dline) /// /// //单击时触发的事件 /// /// /// private void labdraw_MouseClick(object sender MouseEventArgs e) bl = ; int i= j= ; if (timerEnable == ) //判断游戏是否处于结束状态 timer Enabled = true; Graphics dline = labdraw CreateGraphics() //将LAB 建立成图形对象 int mx = my = ; int mx = my = ; int mx = my = ; //判断鼠标所点位置 mx = e X; my = e Y; for (i = ; i < ls; i++) for (j = ; j < hs; j++) mx = + i * + i * ; my = + j * + j * ; //找到单击位置代表的数组 if (mx < mx && mx + + > mx && my < my && my < my + + ) mx = i; my = j; break; if (j < ) break; //判断是左击还是右击 if (e Button == MouseButtons Right && click[mx my ] != && mx >= && my >= && click[mx my ] != ) //第 次右击 if (click[mx my ] == && click[mx my ] != ) click[mx my ] = ; qishu; else //第 次右击 if (click[mx my ] != && click[mx my ] != ) if (qishu click[mx my ] = ; qishu++; if (click[mx my ] == && click[mx my ] != ) click[mx my ] = ; //右击的绘图事件 Rdraw(dline) Qishu() else //左击 if (click[mx my ] != && click[mx my ] != ) click[mx my ] = ; Color c = Color FromArgb( ) //清屏 用背景颜色 labdraw CreateGraphics() Clear(c) Panlei (mx my ) Drawscreen(dline) if (bulei[mx my ] == ) MessageBox Show( GAME OVER ) timer Enabled = false; timerEnable = ; if (sum == lgs) MessageBox Show( GAME WIN ) timer Enabled = false; timerEnable = ; private void Frm _Load(object sender EventArgs e) Qishu() //输出雷的个数 // this Height = hs * + ; // this Width = ls * + ; cha138/Article/program/net/201311/11988相关参考
C#代码文件生成扩展代码文件的想法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 看到这标题的朋
C#操作消息队列的代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这是一个关于C#操作消息队
C#异步Socket代码示例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 下面的代码示例演示如
动态执行C#代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 写这篇笔记的理由是因为上篇g提高
C#过滤HTML代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! publicstringNo
C#代码实现DataTemplate 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 不得不说Da
C#反射取值源代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ///<summary&
C#之不安全代码(1) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 主要参考的是C#Langu
C#之不安全代码(2) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 固定的和活动的变量 &a
知识大全 Delphi调用WebServices(C#)代码
Delphi调用WebServices(C#)代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!