using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ShaoLei
{
public partial class Form1 : Form
{
static private int N = 10;//定义一个静态变量
private int[,] objs = new int[N, N];//用于标注数组坐标
private int[,] datas = new int[N, N];//用于计算此坐标周围的雷的个数
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
init();
}
//初始化游戏
private void init()
{
for (int j = 0; j < N; j++)
{
for (int k = 0; k < N; k++)
{
objs[j, k] = 0;
}
}
for (int i = 0; i < N; i++) //在游戏区域,随机生成N个雷
{
while(true)
{
Random r=new Random();
int rowIndex = r.Next(0, N);
int ColIndex = r.Next(0, N);
if (objs[rowIndex, ColIndex] != -1)
{
objs[rowIndex, ColIndex] = -1;
break;
}
}
}
SetData();
DrawUI();
}
private void DrawUI()
{
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
Button btn = new Button();
btn.Click += new EventHandler(btn_Click);
btn.Name = "btn-" + i.ToString() + "-" + j.ToString();//给你所点击的btn命名,如btn-0-4
btn.Location = new Point(i * 25 + 50, j * 25 + 50);
btn.Width = 23;
// btn.Text=datas[i,j].ToString();
// if (objs[i, j] == -1) btn.Text = "雷";
this.splitContainer1.Panel2.Controls.Add(btn);
}
}
}
void btn_Click(object sender, EventArgs e)
{
string name = (sender as Button).Name;
string[] index = name.Split('-');//执行后如index[btn,0,4]
int row = Convert.ToInt32(index[1]);
int col = Convert.ToInt32(index[2]);
if (objs[row, col] == -1)
{
(sender as Button).Text = "*";
MessageBox.Show("结束");
}
else
{
(sender as Button).Text=datas[row,col].ToString();
}
}
private int getValue(int row, int col, int[,] objs) //如果是区域以年就返回0 ,如果是区域以内就乘以-1
{
if (row < 0 || row > N - 1 || col < 0 || col > N-1)
return 0;
else
return objs[row, col] * (-1);//返回0或1
}
private void SetData() //计算此数组坐标周围雷的个数
{
for (int row = 0; row < N; row++)
{
for (int col = 0; col < N; col++)
{
datas[row, col] =
getValue(row - 1, col - 1,objs) +
getValue(row - 1, col,objs) +
getValue(row - 1, col + 1,objs) +
getValue(row, col - 1,objs) +
getValue(row, col + 1,objs) +
getValue(row + 1, col - 1,objs) +
getValue(row + 1, col,objs) +
getValue(row + 1, col + 1,objs);
}
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ShaoLei
{
public partial class Form1 : Form
{
static private int N = 10;//定义一个静态变量
private int[,] objs = new int[N, N];//用于标注数组坐标
private int[,] datas = new int[N, N];//用于计算此坐标周围的雷的个数
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
init();
}
//初始化游戏
private void init()
{
for (int j = 0; j < N; j++)
{
for (int k = 0; k < N; k++)
{
objs[j, k] = 0;
}
}
for (int i = 0; i < N; i++) //在游戏区域,随机生成N个雷
{
while(true)
{
Random r=new Random();
int rowIndex = r.Next(0, N);
int ColIndex = r.Next(0, N);
if (objs[rowIndex, ColIndex] != -1)
{
objs[rowIndex, ColIndex] = -1;
break;
}
}
}
SetData();
DrawUI();
}
private void DrawUI()
{
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
Button btn = new Button();
btn.Click += new EventHandler(btn_Click);
btn.Name = "btn-" + i.ToString() + "-" + j.ToString();//给你所点击的btn命名,如btn-0-4
btn.Location = new Point(i * 25 + 50, j * 25 + 50);
btn.Width = 23;
// btn.Text=datas[i,j].ToString();
// if (objs[i, j] == -1) btn.Text = "雷";
this.splitContainer1.Panel2.Controls.Add(btn);
}
}
}
void btn_Click(object sender, EventArgs e)
{
string name = (sender as Button).Name;
string[] index = name.Split('-');//执行后如index[btn,0,4]
int row = Convert.ToInt32(index[1]);
int col = Convert.ToInt32(index[2]);
if (objs[row, col] == -1)
{
(sender as Button).Text = "*";
MessageBox.Show("结束");
}
else
{
(sender as Button).Text=datas[row,col].ToString();
}
}
private int getValue(int row, int col, int[,] objs) //如果是区域以年就返回0 ,如果是区域以内就乘以-1
{
if (row < 0 || row > N - 1 || col < 0 || col > N-1)
return 0;
else
return objs[row, col] * (-1);//返回0或1
}
private void SetData() //计算此数组坐标周围雷的个数
{
for (int row = 0; row < N; row++)
{
for (int col = 0; col < N; col++)
{
datas[row, col] =
getValue(row - 1, col - 1,objs) +
getValue(row - 1, col,objs) +
getValue(row - 1, col + 1,objs) +
getValue(row, col - 1,objs) +
getValue(row, col + 1,objs) +
getValue(row + 1, col - 1,objs) +
getValue(row + 1, col,objs) +
getValue(row + 1, col + 1,objs);
}
}
}
}
}
用例结果图: