C#8*8连连看问题(同一张图出现四次)
让button的name用数字随机生成,(应该是1-16)如何使每个数字出现四次,让出现的数字用数组存起来,之后的代码该怎么写????privatevoidGenerat...
让button的name用数字随机生成,(应该是1-16)如何使每个数字出现四次,让出现的数字用数组存起来,之后的代码该怎么写????
private void Generate() //产生带图片的button
{
const int t = 16;
int same;
Random rd = new Random(); //声明随即对象rd
int n = rd.Next(1, 17); //产生范围是1-16的随机整数
int[] all = new int[64]; //声明数组all(包含1-16各4个)
int[] allNew = new int[t];
Button[,] bt = new Button[10, 10];
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
bt[i, j] = new Button(); //按钮大小初始化
bt[i, j].Size = new Size(43, 43); //按钮大小初始化
bt[i, j].Location = new Point(i * 40, j * 40); //按钮位置初始化
for (int b = 0; b < 64; b++)
{ all[b] = n;
bt[i, j].Name = n.ToString(); //为bt设置name属性}
if (i == 0 || j == 0 || i == 9 || j == 9) //最外层按钮不可见
{ bt[i, j].Visible = false; }
pictureBox1.Controls.Add(bt[i, j]); //在picturebox中添加按钮bt
}
}
for (int k = 1; k < 17; k++)
{
int limit = 0;
foreach (int x in all)
{ same= n; limit++; }
if (limit == 4)
{ allNew[n - 1] = n; } }} 展开
private void Generate() //产生带图片的button
{
const int t = 16;
int same;
Random rd = new Random(); //声明随即对象rd
int n = rd.Next(1, 17); //产生范围是1-16的随机整数
int[] all = new int[64]; //声明数组all(包含1-16各4个)
int[] allNew = new int[t];
Button[,] bt = new Button[10, 10];
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
bt[i, j] = new Button(); //按钮大小初始化
bt[i, j].Size = new Size(43, 43); //按钮大小初始化
bt[i, j].Location = new Point(i * 40, j * 40); //按钮位置初始化
for (int b = 0; b < 64; b++)
{ all[b] = n;
bt[i, j].Name = n.ToString(); //为bt设置name属性}
if (i == 0 || j == 0 || i == 9 || j == 9) //最外层按钮不可见
{ bt[i, j].Visible = false; }
pictureBox1.Controls.Add(bt[i, j]); //在picturebox中添加按钮bt
}
}
for (int k = 1; k < 17; k++)
{
int limit = 0;
foreach (int x in all)
{ same= n; limit++; }
if (limit == 4)
{ allNew[n - 1] = n; } }} 展开
展开全部
可以先定义一个
List<int> lstNumber = new List<int>;
然后往里面先存4组1-16的数字
for(int i = 1; i <= 16; i++)
{
lstNumder.Add(i);
lstNumder.Add(i);
lstNumder.Add(i);
lstNumder.Add(i);
}
这样,lstNumber中就有64个数字: 1 1 1 1 2 2 2 2 3 3 3 3 ... ... 16 16 16 16
然后用随机数行成lstNumber的下标,赋值,当某个值用过了后,就把它移除
Random random = new Random((int)DateTime.Now.Ticks);
for(int i = 0; i < 10; i++)
{
for(int j = 0; j < 10; j++)
{
if(i == 0 || j == 0 || i == 9 || j == 9)
{
//外层按钮不可见
bt[i,j].Visible = false;
continue;
}
int index = random.Next(lstNumber.Count);//随机生成一个下标
bt[i, j].Name = lstNumber[index].ToString();//赋值
lstNumber.RemoveAt(index);//移除用过的值
}
}
//循环过后,中间的64个按钮的值就包含了4组 1-16 的名称
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询