public partial class 点灯游戏 : Form
{
public 点灯游戏()
{
InitializeComponent();
}
//初始大小
int wide = 3;
int lon = 3;
//用二维数组来存储button的信息
Button[,] btn;
//调节开始的宽度和高度的输入框
private void Form1_Load(object sender, EventArgs e)
{
//开始按钮
Button btn_star = new Button();
btn_star.Size = new System.Drawing.Size(100, 30);
btn_star.Location = new Point(150,120);
btn_star.Name = "btn_start";
btn_star.Text = "开始游戏";
this.Controls.Add(btn_star);
//点击的时候初始化
btn_star.Click += new EventHandler(btn_star_Click);
}
void btn_star_Click(object sender, EventArgs e)
{
//画size为05,50的button,然后根据坐标画出3*3的九宫格
this.Size = new System.Drawing.Size(50 * wide + 100, 50 * lon + 100);
btn = new Button[wide, lon];
for (int i = 0; i < btn.GetLength(0); i++)
{
for (int j = 0; j < btn.GetLength(1); j++)
{
btn[i, j] = new Button();
btn[i, j].Size = new Size(50, 50);
btn[i, j].Location = new Point(50 * j + 100, 50 * i + 180);
btn[i, j].Text = i.ToString() + j.ToString();
btn[i, j].Name = string.Format("{0},{1}", i, j);
btn[i, j].BackColor = Color.Black;
this.Controls.Add(btn[i, j]);
//点击一个按钮后这个按钮的上下左右变色,点击按钮变为原来颜色
this.btn[i, j].Click += new EventHandler(Form1_Click);
}
}
}
//点击触发事件
public void Form1_Click(object sender, EventArgs e)
{
//将触发点击事件的button对象传过来
Button btn1 = sender as Button;
//根据name属性的标识来区别是哪个按钮触发了事件
string[] str = btn1.Name.Split(',');
int x = int.Parse(str[0]);
int y = int.Parse(str[1]);
//点击按钮变色
ChangeBtnColor(x, y);
//点击按钮的上方变色
if (x - 1 >= 0)
{
ChangeBtnColor(x - 1, y);
}
//点击按钮的下方变色
if (x + 1 < btn.GetLength(0))
{
ChangeBtnColor(x + 1, y);
}
//点击按钮的左方变色
if (y - 1 >= 0)
{
ChangeBtnColor(x, y - 1);
}
//点击按钮的右方变色
if (y + 1 < btn.GetLength(1))
{
ChangeBtnColor(x, y + 1);
}
//判断是否全部变色
bool isAllTurn = true;
foreach (Button tBtn in btn)
{
if (tBtn.BackColor == Color.Black)
{
isAllTurn = false;
}
}
if (isAllTurn)
{
DialogResult dr = MessageBox.Show("增加难度", "过关", MessageBoxButtons.OKCancel);
//点击确定后自动调用点击
if (dr == DialogResult.OK)
{
this.Controls.Clear();
wide++;
lon++;
btn_star_Click(sender, e);
//Form1_Load(sender, e);
}
}
}
//点击后颜色变化
public void ChangeBtnColor(int i,int j)
{
if (btn[i, j].BackColor == Color.Black)
{
btn[i, j].BackColor = Color.Red;
}
else
{
btn[i, j].BackColor = Color.Black;
}
}
}