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; } }}
展开
 我来答
百度网友def29169c1
2014-12-09 · TA获得超过263个赞
知道小有建树答主
回答量:91
采纳率:0%
帮助的人:81.6万
展开全部

可以先定义一个

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 的名称
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式