在数组中查找特定的重复值

时间:2017-06-05 12:34:24

标签: c# arrays drag-and-drop mouseevent picturebox

在过去的几个月里,我一直在学校开展学校拼图游戏项目。

  

请回答这一事实,这是一个回答的学校项目,因为我自己学习很重要,但我在这里是因为我真的被卡住了,我真的很感激在右边轻推方向。

目前,程序从指定的文件夹中加载四张图片并将它们随机放在屏幕上。

Program while active

到目前为止:

  • 该程序希望图片遵循命名约定,即; pic0pic3

  • 谜题的目标是点击并拖动拼图的四个部分,直到它们匹配。

  • 我已经弄清楚如何用鼠标抓住每一块并拖动它们。

  • 我有一个名为grabbedAll的数组,它帮助我确保一次只移动一个部分,否则当光标经过每个部分时,它也会移动。

当它们分开时效果很好,但当它们重叠时,两个或多个图片框设置为true,这意味着它们最终都会移动。

我已经看到使用linq的解决方案来检查数组中出现一个dublicate值,但我需要一种方法来检查数组中是否有重复的“true”。

他们的解决方案对我不起作用,因为它是一个bool数组,因此只能是truefalse

我目前的代码:

void ImgBox_MouseDown(object sender, EventArgs e)
{
    grabbed = true;

    //MessageBox.Show("Down");

    for (int i = 0; i < antBox; i++)
    {
        if (MouX >= PicBoxes[i, 0] && MouX <= PicBoxes[i, 0] + Imglinking[i].Width && MouY >= PicBoxes[i, 1] && MouY <= PicBoxes[i, 1] + Imglinking[i].Height)
        {
            grabbedAll[i] = true;

        }

    }

    label1.Text = "grabbed = " + grabbed;

}

void ImgBox_MouseUp(object sender, EventArgs e)
{
    grabbed = false;

    for (int i = 0; i < antBox; i++)
    {
        grabbedAll[i] = false;

    }

    //MessageBox.Show("Up");

    label1.Text = "grabbed = " + grabbed;

}

void ImgBox_MouseMove(object sender, MouseEventArgs e)
{ //start

    MouX = System.Windows.Forms.Cursor.Position.X;

    MouY = System.Windows.Forms.Cursor.Position.Y;

    label2.Text = "X: " + System.Windows.Forms.Cursor.Position.X + "\nY: " + System.Windows.Forms.Cursor.Position.Y;

    if (grabbed == true)
    {
        //e.Button == MouseButtons.Left

        for (int i = 0; i < antBox; i++)
        {
            if (MouX >= PicBoxes[i, 0] && MouX <= PicBoxes[i, 0] + Imglinking[i].Width && MouY >= PicBoxes[i, 1] && MouY <= PicBoxes[i, 1] + Imglinking[i].Height)
            {
                if (grabbedAll[i] == true)
                {
                    PicBoxes[i, 0] = System.Windows.Forms.Cursor.Position.X - (Imglinking[i].Width / 2);

                    PicBoxes[i, 1] = System.Windows.Forms.Cursor.Position.Y - (Imglinking[i].Height / 2);

                    ImgBox[i].Location = new Point(PicBoxes[i, 0], PicBoxes[i, 1]);

                }

            }

        }

    }

}

0 个答案:

没有答案