⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 controls.cs

📁 用vc#编写的小游戏
💻 CS
📖 第 1 页 / 共 3 页
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Windows.Forms;


namespace Mine.Model
{

    
    /// <summary>
    /// // 控制类,进行一些必要的操作
    /// </summary>
    public class Control 
    {

        
        /// <summary>
        /// 动态数组,用来存储方格类的对象
        /// </summary>
        public ArrayList _arrayList=new ArrayList();

        /// <summary>
        /// 存储是"雷"的方块的序号
        /// </summary>
        int[] mineList ;

        /// <summary>
        /// button的数量
        /// </summary>
        private int _buttonNumber;

        /// <summary>
        /// // 动态数组的长度
        /// </summary>
        private int _length = 0;

        /// <summary>
        /// 雷的数量
        /// </summary>
        private int _minesNumber;
        
        /// <summary>
        /// // 剩余的雷的数量
        /// </summary>
        private int _oddMines;


        #region 设置属性

        /// <summary>
        /// 获取或设置数组的长度
        /// </summary>
        public int Length
        {
            get { return _length; }
            set { _length = value; }
        }

        /// <summary>
        /// 获取或设置雷的数量
        /// </summary>
        public int MinesNumber
        {
            get { return _minesNumber; }
            set { _minesNumber = value; }
        }

        /// <summary>
        /// 获取或设置button的数量
        /// </summary>
        public int ButtonNumber
        {
            get { return _buttonNumber; }
            set { _buttonNumber = value; }
        }

        /// <summary>
        /// 获取或设置剩余的雷的数量
        /// </summary>
        public int OddMines
        {
            get { return _oddMines; }
            set { _oddMines = value; }
        }
        /// <summary>
        /// 根据序号获取或设置该方块周围的雷的数量
        /// </summary>
        /// <param name="paneList">方块的序号</param>
        /// <returns>Pane类的对象</returns>
        public int this[int paneList]
        {
            get { return ((Pane)_arrayList[paneList]).PaneNumber; }
            set { ((Pane)_arrayList[paneList]).PaneNumber =value  ; }
        }
        #endregion

        /// <summary>
        /// 构造函数
        /// </summary>
        public Control()
        { 
            
        }

        /// <summary>
        /// 重载构造函数
        /// </summary>
        /// <param name="buttonNumber">按钮的数量</param>
        /// <param name="MineNumber">雷的数量</param>
        public Control(int buttonNumber, int MineNumber)
        {
            _buttonNumber = buttonNumber;
            _minesNumber = _oddMines = MineNumber;
            

            //增加按钮
            AddPane();
            //随机布雷
            LayMines();

            //设置方块旁边的雷的数量
            SetNumber();
        }


        /// <summary>
        /// 增加方块
        /// </summary>
        public void AddPane()
        {
            int temp=0;
            int temp2=Convert.ToInt32( Math.Sqrt(_buttonNumber)) -1;
            int yPos;
            int xPos;

            for (int i = 0; i < _buttonNumber; i++)
            {
                Mine.Model.Pane p = new Pane();
                p.PaneList = i;
                p._button.Tag=i;
                p.State = "normal";

                xPos=Convert.ToInt32(i / Convert.ToInt32(Math.Sqrt(_buttonNumber)) * 20);
                #region 设置Y坐标的值
                if (i > temp2)
                {
                    temp2 += Convert.ToInt32(Math.Sqrt(_buttonNumber));
                   
                    temp = 0;
                    yPos = temp * 20;
                    temp++;
                }
                else
                {
                    yPos = temp * 20;
                    temp++;
                }

                #endregion

                p._button.SetBounds(xPos, yPos, 20, 20);
              

                _arrayList.Add(p);
                _length++;
            }
        }

        /// <summary>
        /// 判断是否标记成功
        /// </summary>
        public int IsSucceed1(System.Windows.Forms.Button button)
        {
             if (((Pane)_arrayList[(int)button.Tag]).IsMine==true)
             {
                    _oddMines --;
             }

             return _oddMines;
        }
        /// <summary>
        /// 判断是否标记成功
        /// </summary>
        public int IsSucceed(System.Windows.Forms.Button button)
        {
            if (((Pane)_arrayList[(int)button.Tag]).IsMine == true)
            {
                _oddMines ++;
            }

            return _oddMines;
        }
     
        /// <summary>
        /// // 开始随机布雷
        /// </summary>
        public void LayMines()
        {
            Random rand = new Random();
            mineList = new int[_minesNumber];


            for (int i = 0; i < _minesNumber; i++)
            {
                int paneList;
               bool bo=false;
               paneList= rand.Next(_buttonNumber);

               foreach(int ff in mineList)
                {
                    if (ff == paneList)
                    {
                        bo = true;
                    }
                }

                if (!bo)
                {
                    mineList[i] = paneList;
                    for (int j = 0; j < Length; j++)
                    {
                        if (((Pane)_arrayList[j]).PaneList == paneList)
                        {
                            ((Pane)_arrayList[j]).IsMine = true;

                        }
                    }
                }
                else
                {
                    i--;
                }
            }
        }

        /// <summary>
        /// 给方块添加图片
        /// </summary>
        /// <param name="paneList"></param>
        public void AddImage(int paneList)
        {
            switch (((Pane)_arrayList[paneList]).PaneNumber)
            {
                case 1: ((Pane)_arrayList[paneList])._button.Image = global::Mine.Properties.Resources.button1; ((Pane)_arrayList[paneList])._button.Enabled = false; break;
                case 2: ((Pane)_arrayList[paneList])._button.Image = global::Mine.Properties.Resources.button2; ((Pane)_arrayList[paneList])._button.Enabled = false; break;
                case 3: ((Pane)_arrayList[paneList])._button.Image = global::Mine.Properties.Resources.button3; ((Pane)_arrayList[paneList])._button.Enabled = false; break;
                case 4: ((Pane)_arrayList[paneList])._button.Image = global::Mine.Properties.Resources.button4; ((Pane)_arrayList[paneList])._button.Enabled = false; break;
                case 5: ((Pane)_arrayList[paneList])._button.Image = global::Mine.Properties.Resources.button5; ((Pane)_arrayList[paneList])._button.Enabled = false; break;
                case 6: ((Pane)_arrayList[paneList])._button.Image = global::Mine.Properties.Resources.button6; ((Pane)_arrayList[paneList])._button.Enabled = false; break;
                case 7: ((Pane)_arrayList[paneList])._button.Image = global::Mine.Properties.Resources.button7; ((Pane)_arrayList[paneList])._button.Enabled = false; break;
                case 8: ((Pane)_arrayList[paneList])._button.Image = global::Mine.Properties.Resources.button8; ((Pane)_arrayList[paneList])._button.Enabled = false; break;
            }
        }

        
        /// <summary>
        /// // 当点中一个空格时,显示周围八个方格的数字
        /// </summary>
        public void DisplayAround(int paneList)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -