Beispiel #1
0
 void 引爆所有地雷()
 {
     foreach (Object control in _所属雷场.Controls)
     {
         try
         {
             区块 _地雷 = (区块)control;
             if (_地雷 != this)
             {
                 _地雷.Image = _地雷.设置区块外观();
             }
             else
             {
                 _地雷.Image = Properties.Resources.c;
             }
         }
         catch (Exception) {; }
     }
 }
Beispiel #2
0
        void 快速开辟安全区(int 在雷场中的行位置, int 在雷场中的列位置)
        {
            if (_已标记的周围邻居数量 == _所属雷场.地雷分布状态[在雷场中的行位置, 在雷场中的列位置])
            {
                foreach (Object control in _所属雷场.Controls)
                {
                    try
                    {
                        区块 _区块 = (区块)control;

                        if (_区块.当前状态 == 区块状态.未知 || _区块.当前状态 == 区块状态.可疑)
                        {
                            #region
                            try
                            {
                                //左上角
                                if (_区块.在雷场中的行位置 - 1 == _在雷场中的行位置 &&
                                    _区块.在雷场中的列位置 - 1 == _在雷场中的列位置)
                                {
                                    _区块.当前状态 = _区块._is地雷 ? 区块状态.爆炸 : 区块状态.安全;
                                }
                            }
                            catch (Exception) { /*坐标越界*/ }
                            try
                            {
                                //正左边
                                if (_区块.在雷场中的行位置 == _在雷场中的行位置 &&
                                    _区块.在雷场中的列位置 - 1 == _在雷场中的列位置)
                                {
                                    _区块.当前状态 = _区块._is地雷 ? 区块状态.爆炸 : 区块状态.安全;
                                }
                            }
                            catch (Exception) { /*坐标越界*/ }
                            try
                            {
                                //左下角
                                if (_区块.在雷场中的行位置 + 1 == _在雷场中的行位置 &&
                                    _区块.在雷场中的列位置 - 1 == _在雷场中的列位置)
                                {
                                    _区块.当前状态 = _区块._is地雷 ? 区块状态.爆炸 : 区块状态.安全;
                                }
                            }
                            catch (Exception) { /*坐标越界*/ }
                            try
                            {
                                //正上方
                                if (_区块.在雷场中的行位置 - 1 == _在雷场中的行位置 &&
                                    _区块.在雷场中的列位置 == _在雷场中的列位置)
                                {
                                    _区块.当前状态 = _区块._is地雷 ? 区块状态.爆炸 : 区块状态.安全;
                                }
                            }
                            catch (Exception) { /*坐标越界*/ }
                            try
                            {
                                //正下方
                                if (_区块.在雷场中的行位置 + 1 == _在雷场中的行位置 &&
                                    _区块.在雷场中的列位置 == _在雷场中的列位置)
                                {
                                    _区块.当前状态 = _区块._is地雷 ? 区块状态.爆炸 : 区块状态.安全;
                                }
                            }
                            catch (Exception) { /*坐标越界*/ }
                            try
                            {
                                //右上角
                                if (_区块.在雷场中的行位置 - 1 == _在雷场中的行位置 &&
                                    _区块.在雷场中的列位置 + 1 == _在雷场中的列位置)
                                {
                                    _区块.当前状态 = _区块._is地雷 ? 区块状态.爆炸 : 区块状态.安全;
                                }
                            }
                            catch (Exception) { /*坐标越界*/ }
                            try
                            {
                                //正右边
                                if (_区块.在雷场中的行位置 == _在雷场中的行位置 &&
                                    _区块.在雷场中的列位置 + 1 == _在雷场中的列位置)
                                {
                                    _区块.当前状态 = _区块._is地雷 ? 区块状态.爆炸 : 区块状态.安全;
                                }
                            }
                            catch (Exception) { /*坐标越界*/ }
                            try
                            {
                                //右下角
                                if (_区块.在雷场中的行位置 + 1 == _在雷场中的行位置 &&
                                    _区块.在雷场中的列位置 + 1 == _在雷场中的列位置)
                                {
                                    _区块.当前状态 = _区块._is地雷 ? 区块状态.爆炸 : 区块状态.安全;
                                }
                            }
                            catch (Exception) { /*坐标越界*/ }
                            #endregion
                        }
                    }
                    catch (Exception) {; }
                }
            }
        }
Beispiel #3
0
        void 修改周围区块的已标记数量(int 在雷场中的行位置, int 在雷场中的列位置, Boolean 是否增)
        {
            foreach (Object control in _所属雷场.Controls)
            {
                try
                {
                    区块 _区块 = (区块)control;

                    if (!_区块._is地雷)
                    {
                        #region
                        try
                        {
                            //左上角
                            if (_区块.在雷场中的行位置 - 1 == 在雷场中的行位置 &&
                                _区块.在雷场中的列位置 - 1 == 在雷场中的列位置)
                            {
                                _区块._已标记的周围邻居数量 += 是否增?1:-1;
                            }
                        }
                        catch (Exception) { /*坐标越界*/ }
                        try
                        {
                            //正左边
                            if (_区块.在雷场中的行位置 == 在雷场中的行位置 &&
                                _区块.在雷场中的列位置 - 1 == 在雷场中的列位置)
                            {
                                _区块._已标记的周围邻居数量 += 是否增 ? 1 : -1;
                            }
                        }
                        catch (Exception) { /*坐标越界*/ }
                        try
                        {
                            //左下角
                            if (_区块.在雷场中的行位置 + 1 == 在雷场中的行位置 &&
                                _区块.在雷场中的列位置 - 1 == 在雷场中的列位置)
                            {
                                _区块._已标记的周围邻居数量 += 是否增 ? 1 : -1;
                            }
                        }
                        catch (Exception) { /*坐标越界*/ }
                        try
                        {
                            //正上方
                            if (_区块.在雷场中的行位置 - 1 == 在雷场中的行位置 &&
                                _区块.在雷场中的列位置 == 在雷场中的列位置)
                            {
                                _区块._已标记的周围邻居数量 += 是否增 ? 1 : -1;
                            }
                        }
                        catch (Exception) { /*坐标越界*/ }
                        try
                        {
                            //正下方
                            if (_区块.在雷场中的行位置 + 1 == 在雷场中的行位置 &&
                                _区块.在雷场中的列位置 == 在雷场中的列位置)
                            {
                                _区块._已标记的周围邻居数量 += 是否增 ? 1 : -1;
                            }
                        }
                        catch (Exception) { /*坐标越界*/ }
                        try
                        {
                            //右上角
                            if (_区块.在雷场中的行位置 - 1 == 在雷场中的行位置 &&
                                _区块.在雷场中的列位置 + 1 == 在雷场中的列位置)
                            {
                                _区块._已标记的周围邻居数量 += 是否增 ? 1 : -1;
                            }
                        }
                        catch (Exception) { /*坐标越界*/ }
                        try
                        {
                            //正右边
                            if (_区块.在雷场中的行位置 == 在雷场中的行位置 &&
                                _区块.在雷场中的列位置 + 1 == 在雷场中的列位置)
                            {
                                _区块._已标记的周围邻居数量 += 是否增 ? 1 : -1;
                            }
                        }
                        catch (Exception) { /*坐标越界*/ }
                        try
                        {
                            //右下角
                            if (_区块.在雷场中的行位置 + 1 == 在雷场中的行位置 &&
                                _区块.在雷场中的列位置 + 1 == 在雷场中的列位置)
                            {
                                _区块._已标记的周围邻居数量 += 是否增 ? 1 : -1;
                            }
                        }
                        catch (Exception) { /*坐标越界*/ }
                        #endregion
                    }
                }
                catch (Exception) {; }
            }
        }