📄 controls.cs
字号:
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 + -