private void cardButton_Click(object i_Sender, EventArgs i_EventArgs)
        {
            MemoryGameCard currentCardRevealed;

            MemoryGameCardButtuon memoryCardButton = i_Sender as MemoryGameCardButtuon;

            if (!memoryCardButton.ImageInCard.Visible)
            {
                m_NumberOfCardsRevealed++;
                currentCardRevealed = m_GameManager.RevealCardByPlayer(m_GameBoard, memoryCardButton.RowNumber, memoryCardButton.ColumnNumber, m_ComputerMemory);
                this.Update();
                if (m_NumberOfCardsRevealed % 2 == 0)
                {
                    m_NumberOfCardsRevealed = 0;
                    if (m_LastCardRevealed.CardValue == currentCardRevealed.CardValue)
                    {
                        runSeccessfulTurn(currentCardRevealed);
                    }
                    else
                    {
                        runUnSeccessfulTurn(currentCardRevealed, m_LastCardRevealed);
                    }

                    while (m_IsAgainstComputer && m_CurrentPlayer.Name == "Computer" && !m_GameBoard.IsBoardFull())
                    {
                        TwoPairsOfIndexes indexes;
                        m_GameManager.MakeAComputerMove(m_GameBoard, ref m_ComputerMemory, out indexes);
                        Thread.Sleep(1000);
                        if (m_GameBoard.BoardMatrix[(int)indexes.FirstRowIndex, (int)indexes.FirstColoumnIndex].CardValue == m_GameBoard.BoardMatrix[(int)indexes.SecondRowIndex, (int)indexes.SecondColoumnIndex].CardValue)
                        {
                            runSeccessfulTurn(m_GameBoard.BoardMatrix[(int)indexes.FirstRowIndex, (int)indexes.FirstColoumnIndex]);
                        }
                        else
                        {
                            runUnSeccessfulTurn(m_GameBoard.BoardMatrix[(int)indexes.FirstRowIndex, (int)indexes.FirstColoumnIndex], m_GameBoard.BoardMatrix[(int)indexes.SecondRowIndex, (int)indexes.SecondColoumnIndex]);
                        }
                    }
                }
                else
                {
                    m_LastCardRevealed = currentCardRevealed;
                }
            }
        }
        private void setButtonsOnBoard()
        {
            int leftLocation   = this.Left;
            int BottomLocation = this.Top;

            for (int i = 0; i < m_NumberOfRows; i++)
            {
                for (int j = 0; j < m_NumberOfColumns; j++)
                {
                    m_CardsButtons[i, j]      = new MemoryGameCardButtuon(m_GameBoard.BoardMatrix[i, j], i, j);
                    m_CardsButtons[i, j].Size = new System.Drawing.Size(100, 100);
                    m_CardsButtons[i, j].Left = leftLocation + 10;
                    m_CardsButtons[i, j].Top  = BottomLocation + 10;
                    this.Controls.Add(m_CardsButtons[i, j]);
                    m_CardsButtons[i, j].Click += cardButton_Click;
                    leftLocation = m_CardsButtons[i, j].Right;
                }

                leftLocation   = this.Left;
                BottomLocation = m_CardsButtons[i, m_NumberOfColumns - 1].Bottom;
            }

            this.Width = m_CardsButtons[m_NumberOfRows - 1, m_NumberOfColumns - 1].Right + 30;
        }