Beispiel #1
0
        // Функция рисования доски
        private void НарисоватьДоску()
        {
            // Сначала очищаем доску
            ДоскаИгры.Children.Clear();

            // Пробегаемся по массиву для создания элементов
            for (int i = 0; i < 4; i++)
            {
                for (int j = 0; j < 4; j++)
                {
                    if (массивОбъектовДоски[i, j] > 0)
                    {
                        // Создадим элемент,если его значение больше 0(если 0- это пустой элемент)
                        ЭлементДоски элемент = new ЭлементДоски
                        {
                            ЗначениеОбъекта = массивОбъектовДоски[i, j],
                            Width           = ДоскаИгры.Width / 4,
                            Height          = ДоскаИгры.Height / 4,
                            позиция_I       = i,
                            позиция_J       = j
                        };
                        // Располагаем на канве новый элемент
                        Canvas.SetTop(элемент, i * ДоскаИгры.Width / 4);
                        Canvas.SetLeft(элемент, j * ДоскаИгры.Width / 4);
                        ДоскаИгры.Children.Add(элемент);

                        // Добавляем к элементу функцию,которая будет срабатывать при нажатии кнопкой
                        элемент.MouseLeftButtonUp += new MouseButtonEventHandler(НажатиеЛевойКнопкиМыши);
                    }
                }
            }
        }
Beispiel #2
0
        // Функция рисования доски
        private void НарисоватьДоску()
        {
            // Сначала очищаем доску
            ДоскаИгры.Children.Clear();

            // Пробегаемся по массиву для создания элементов
            for (int i = 0; i < 4; i++)
            {
                for (int j = 0; j < 4; j++)
                {
                    if (массивОбъектовДоски[i, j] > 0)
                    {
                        // Создадим элемент,если его значение больше 0(если 0- это пустой элемент)
                        ЭлементДоски элемент = new ЭлементДоски
                        {
                            ЗначениеОбъекта = массивОбъектовДоски[i, j],
                            Width = ДоскаИгры.Width / 4,
                            Height = ДоскаИгры.Height / 4,
                            позиция_I = i,
                            позиция_J = j
                        };
                        // Располагаем на канве новый элемент 
                        Canvas.SetTop(элемент, i * ДоскаИгры.Width / 4);
                        Canvas.SetLeft(элемент, j * ДоскаИгры.Width / 4);
                        ДоскаИгры.Children.Add(элемент);

                        // Добавляем к элементу функцию,которая будет срабатывать при нажатии кнопкой
                        элемент.MouseLeftButtonUp += new MouseButtonEventHandler(НажатиеЛевойКнопкиМыши);
                    }
                }
            }
        }
Beispiel #3
0
        // Функция сдвига нажатого элемента
        private void СдвинутьНажатыйЭлемент(ЭлементДоски элемент, int i, int j)
        {
            // Поменяем значение черного элемента на выбранный
            массивОбъектовДоски[i, j] = массивОбъектовДоски[элемент.позиция_I, элемент.позиция_J];
            // И создадим новый темный элемент
            массивОбъектовДоски[элемент.позиция_I, элемент.позиция_J] = 0;

            // После переопределения массива - заново перерисуем доску
            НарисоватьДоску();
        }
Beispiel #4
0
        // Добавляем к элементу функцию,которая будет срабатывать при нажатии кнопкой
        void НажатиеЛевойКнопкиМыши(object sender, MouseButtonEventArgs e)
        {
            ЭлементДоски it = (ЭлементДоски)sender;

            // Если можно сдвинуть на  позицию(если рядом есть нулевой черный элемент) - то сдвигаем. Иначе - нет.
            // Всего 4 варианта: сверху, снизу,слева и справа
            if (ПроверитьДействие(it.позиция_I - 1, it.позиция_J))
            {
                СдвинутьНажатыйЭлемент(it, it.позиция_I - 1, it.позиция_J);
            }
            else if (ПроверитьДействие(it.позиция_I, it.позиция_J + 1))
            {
                СдвинутьНажатыйЭлемент(it, it.позиция_I, it.позиция_J + 1);
            }
            else if (ПроверитьДействие(it.позиция_I + 1, it.позиция_J))
            {
                СдвинутьНажатыйЭлемент(it, it.позиция_I + 1, it.позиция_J);
            }
            else if (ПроверитьДействие(it.позиция_I, it.позиция_J - 1))
            {
                СдвинутьНажатыйЭлемент(it, it.позиция_I, it.позиция_J - 1);
            }
        }
Beispiel #5
0
        // Функция сдвига нажатого элемента
        private void СдвинутьНажатыйЭлемент(ЭлементДоски элемент, int i, int j)
        {
            // Поменяем значение черного элемента на выбранный
            массивОбъектовДоски[i, j] = массивОбъектовДоски[элемент.позиция_I, элемент.позиция_J];
            // И создадим новый темный элемент
            массивОбъектовДоски[элемент.позиция_I, элемент.позиция_J] = 0;

            // После переопределения массива - заново перерисуем доску
            НарисоватьДоску();
        }