Создание игры на WPF

WPF
  1. 2 года назад
    Добавлено 2 года назад SergeyD

    Всем добрый день!
    задумал написать игру (простой PacMan).
    Сделал Grid сетку 30x30
    присвоил нажатию клавиш (стрелочек) методы для перемещения картинки Pukman по гриду:
    как пример движение вверх и влево :

    protected override void OnPreviewKeyDown(KeyEventArgs e)
            {
                base.OnPreviewKeyDown(e);
    
                if (e.Key == Key.Down)
                {
                    PacmanDuwn();
                }
                else
                if (e.Key == Key.Left)
                {
                    PacmanLeft();
                }
          }

    Сами методы :

            public int Column;
            public int Rou;
    
     private void PacmanDuwn()
            {
                if (Rou == 29)
                {
                    Rou = 0;
                    Grid.SetRow(Pacman, Rou);
                }
                else
                {
                    Rou += 1;
                    Grid.SetRow(Pacman, Rou);
                }
            }
            private void PacmanLeft()
            {
                if (Column == 0)
                {
                    Column = 29;
                    Grid.SetColumn(Pacman, Column);
                }
                else
                {
                    Column -= 1;
                    Grid.SetColumn(Pacman, Column);
                }
            }

    Если просто - то, при нажатии на стрелочки, я переназначаю позицию картинки по гриду вызывая - Grid.SetColumn, или Grid.SetRow ("+ -"колонка, или там "+- "строка)
    картинка перемещается, по ячейкам, все хорошо.

    Далее мне нужно от рисовать лабиринт, и корм который будет "съедать" Pacman. Думаю просто по вставлять картинки в xaml разметке так как мне нужно, создавая лабиринт.

    Подскажите пожалуйста, как сделать так, что бы Pacman не проходил под стеной лабиринта, а упирался в нее :) Ну и так же чтобы "съедал" корм, при попадании в
    ячейку с кормом.
    Понимаю, что это должна быть какая то проверка, по типу "есть ли компонент в данной ячейке", и если компонент такой (стена) - то не пройдешь,
    а если компонент "корм" - то проходи, и затри его.

    Может конечно я не в ту сторону двигаюсь, и есть более верные решения передвижения контролов по гриду, и взаимодействия контролов, но пока только к этому пришел :)
    Заранее благодарен!

или зарегистрируйтесь чтобы ответить