知识大全 自创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#代码文件生成扩展代码文件的想法

C#代码文件生成扩展代码文件的想法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  看到这标题的朋

知识大全 C#操作消息队列的代码

C#操作消息队列的代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这是一个关于C#操作消息队

知识大全 C#异步Socket代码示例

C#异步Socket代码示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  下面的代码示例演示如

知识大全 动态执行C#代码

动态执行C#代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  写这篇笔记的理由是因为上篇g提高

知识大全 C#过滤HTML代码

C#过滤HTML代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  publicstringNo

知识大全 C#代码实现DataTemplate

C#代码实现DataTemplate  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  不得不说Da

知识大全 C#反射取值 源代码

C#反射取值源代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ///<summary&

知识大全 C#之不安全代码(1)

C#之不安全代码(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  主要参考的是C#Langu

知识大全 C#之不安全代码(2)

C#之不安全代码(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  固定的和活动的变量  &a

知识大全 Delphi调用WebServices(C#)代码

Delphi调用WebServices(C#)代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!