基本信息
源码名称:扫雷游戏
源码大小:0.17M
文件格式:.rar
开发语言:C#
更新时间:2020-08-11
   源码介绍

简单的扫雷游戏

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();
        }
    }
}