在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → 扫雷游戏

扫雷游戏

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:0.17M
  • 下载次数:97
  • 浏览次数:288
  • 发布时间:2020-08-11
  • 实例类别:C#语言基础
  • 发 布 人:周伶俐
  • 文件格式:.rar
  • 所需积分:0
 相关标签: WindowsForms C# 游戏 扫雷

实例介绍

【实例简介】

简单的扫雷游戏

【实例截图】

【核心代码】

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 扫雷
{
    public partial class Form1 : Form
    {
        static int hang = 16;
        static int lie = 16;
        static int leishu = 30;
        static bool over = false;
        static int sy = leishu;
        Button[,] Button1 = new Button[lie, hang];
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            groupBox1.Location = new Point(6, 26);
            groupBox1.Size = new Size(1354, 710);
            groupBox1.AutoSize = true;
            groupBox1.FlatStyle = FlatStyle.Standard;
            textBox1.Text = leishu.ToString();
            for (int x = 0; x < lie; x )
            {
                for (int y = 0; y < hang; y )
                {
                    Button1[x, y] = new Button();
                    Button1[x, y].Size = new Size(30, 30);
                    Button1[x, y].Location = new Point(x * 30, y * 30);
                    Button1[x, y].Tag = 0;
                    Button1[x,y].Font= new Font("宋体", 10.5F, FontStyle.Bold, GraphicsUnit.Point, ((byte)(134)));
                    groupBox1.Controls.Add(Button1[x, y]);
                    Button1[x, y].MouseUp = Form1_MouseUp;
                }
            }
            bulei();
        }
        private void bulei()
        {
            Random rand = new Random();
            for (int i = 0; i < leishu; i )
            {

                int position_x = rand.Next(lie - 1);
                int position_y = rand.Next(hang - 1);
                if (Convert.ToInt16(Button1[position_x, position_y].Tag) == 0)
                {
                    Button1[position_x, position_y].Tag = 1;

                }
                else
                    i = i - 1;
            }
        }
        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            if (!over)
            {
                Button B = (Button)sender;
                B.Enabled = false;
                int x = B.Right / 30 - 1;
                int y = (B.Top 30) / 30 - 1;
                switch (e.Button)
                {
                    case MouseButtons.Left:
                        if (Convert.ToInt16(B.Tag) == 1)
                        {
                            B.Text = "*";
                            over = true;
                            showlei();
                            MessageBox.Show("失败,游戏结束!");
                        }
                        else
                        {
                            B.Text = leigeshu(x, y).ToString();
                            shaolei(x, y);
                        }
                        break;
                    case MouseButtons.Right:
                        B.Text = "q";
                        B.Enabled = true;
                        if (Convert.ToInt16(B.Tag) == 1)
                        {
                            sy--;
                        }
                        win();
                        break;
                }
            }
        }

        private void showlei()
        {
            for (int i = 0; i <lie; i )
            {
                for (int j = 0; j <hang; j )
                {
                    Button1[i, j].Enabled = false;
                    if (Convert.ToInt16(Button1[i, j].Tag) == 1)
                    {
                        Button1[i, j].Text = "q";
                    }
                }
            }
        }

        private void win()
        {
            if (sy == 0)
            {
                over = true;
                MessageBox.Show("胜利!");
            }
        }

        private void shaolei(int x, int y)
        {
            int xmin = (x == 0) ? 0 : x - 1;
            int xmax = (x == lie - 1) ? x : x 1;
            int ymin = (y == 0) ? 0 : y - 1;
            int ymax = (y == hang - 1) ? y : y 1;
            if (leigeshu(x, y) == 0)
            {
                Button1[x, y].Enabled = false;
                for (int i = xmin; i <= xmax; i )
                {
                    for (int j = ymin; j <= ymax; j )
                    {
                        if (Convert.ToInt16(Button1[i, j].Tag) == 0 && Button1[i, j].Enabled == true)
                        {
                            shaolei(i, j);
                        }
                        Button1[i, j].Text = leigeshu(i, j).ToString();
                        Button1[i, j].Enabled = false;
                        if (Button1[i, j].Text == "0")
                        {
                            Button1[i, j].Text = string.Empty;
                        }
                    }
                }
            }
        }

        private int leigeshu(int x, int y)
        {
            int gs = 0;
            int xmin = (x == 0) ? 0 : x - 1;
            int xmax = (x == lie - 1) ? x : x 1;
            int ymin = (y == 0) ? 0 : y - 1;
            int ymax = (y == hang - 1) ? y : y 1;
            for (int i = xmin; i <= xmax; i )
            {
                for (int j = ymin; j <= ymax; j )
                {
                    if (Convert.ToInt16(Button1[i, j].Tag) == 1)
                    {
                        gs ;
                    }
                }
            }
            return gs;
        }
        private void button2_Click(object sender, EventArgs e)
        {
            if(int.Parse(textBox1.Text)>=(hang*lie)/2)
            {
                MessageBox.Show("超过最大可设置数");
                textBox1.Text = leishu.ToString();
                return;
            }
            leishu = int.Parse(textBox1.Text);
            for (int x = 0; x < lie; x )
            {
                for (int y = 0; y < hang; y )
                {
                    Button1[x, y].Tag = 0;
                    Button1[x, y].Enabled = true;
                    Button1[x, y].Text = string.Empty;
                }
            }
            bulei();
            over = false;
            sy = leishu;
        }

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!(e.KeyChar >= '0' && e.KeyChar <= '9') && !(e.KeyChar == '\b'))
            { e.Handled = true; }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警