Есть ли способ отключить пару совпавших кнопок на основе индекса двух наборов массивов? - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь создать игру, основанную на изучении двух иностранных языков (игра «Соответствие кнопок»).Внутри двух разных tableLayoutPanels есть два набора кнопок.Я назначил значения кнопок, используя два набора массивов.Программа будет работать так же, как если слово соответствует его значению на другом языке, тогда эти две кнопки будут отключены после щелчков.Проблема возникает, когда я устанавливаю условие для соответствия кнопок.Я сопоставил их раньше, задав условие if, когда текстовые значения кнопок были одинаковыми.Но теперь, когда значения (Текст) кнопок различны, но значения двух разных слов одинаковы, я хочу сопоставить их, вызвав индекс массива этих наборов массивов.Как я могу это сделать?Есть ли лучшее решение?Пожалуйста, дайте мне знать.Заранее спасибо.

Я попытался сопоставить пару кнопок, установив условие if для firstButtonClick.Text == secondButtonClick.Text.Но теперь я должен сопоставить два разных значения одного и того же значения (два разных языковых слова).

    // two global array
    string[] words1 = new string[] {
    "Book1", "Book2", "Book3", "Book4", "Book5",
    "Book6", "Book7", "Book8", "Book9", "Book10"
    };

    string[] words2 = new string[] {
    "Book1", "Book2", "Book3", "Book4", "Book5",
    "Book6", "Book7", "Book8", "Book9", "Book10"
    };

     public Form1()
    {
        InitializeComponent();
        assignValues1();
        assignValues2();
    }

    // function for assigning values inside the first set of buttons
    private void assignValues1()
    {
        int counter = 0;
        Array.Reverse(words1);

        foreach (Button btn in tableLayoutPanel1.Controls.OfType<Button>())
        {
            for (int i = 0; i < words1.Length; i++)
            {
                btn.Text = words1[counter]; 

            }
            counter++;
        }
    }

    // function for assigning values inside the second set of buttons
    private void assignValues2()
    {
        int counter = 0;

        foreach (Button btn in tableLayoutPanel2.Controls.OfType<Button>())
        {
            for (int i = 0; i < words1.Length; i++)
            {
                btn.Text = words2[counter]; 
            }
            counter++;
        }
    }

    Button btnClicks1, btnClicks2;

    // this function below is applied in all the buttons in two different 
    // tableLayoutPanels

    private void button1_Click(object sender, EventArgs e)
    {
        Button clickedBtn = sender as Button;

        if (btnClicks1 != null && btnClicks2 != null)
        {
            return;
        }

        if (clickedBtn.BackColor == Color.Coral)
            return;

        if (btnClicks1 == null)
        {
            btnClicks1 = clickedBtn;
            btnClicks1.BackColor = Color.Coral;
            return;
        }

        btnClicks2 = clickedBtn;
        btnClicks2.BackColor = Color.Coral;

        // the problems happens here. which condition should I use. Or is
        // there any better solution then as I'm trying to do?

        for (int i = 0; i < words1.Length; i++)
        {
            for (int j = 0; j < words2.Length; j++)
            {
                if (words1[i] == words2[j])
                {
                    btnClicks1.Enabled = false;
                    btnClicks2.Enabled = false;

                    btnClicks1 = null;
                    btnClicks2 = null;
                }
                else
                    timer1.Start();
            }
        }
        /*
        // When the values inside the text of the buttons were same.

        if (btnClicks1.Text == btnClicks2.Text)
        {
            checkingArrayValue();
            btnClicks1 = null;
            btnClicks2 = null;
        }
        else
        {
            timer1.Start();
        }*/
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        timer1.Stop();

        btnClicks1.BackColor = Color.LightGray;
        btnClicks2.BackColor = Color.LightGray;

        btnClicks1 = null;
        btnClicks2 = null;
    }

Я хотел сопоставить кнопки одного и того же значения на двух разных языках и отключить две кнопки, но всеЯ получаю исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...