0

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

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

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

Ev_Hyper
  • 1,684
SergeyD
  • 21
  • 4
    Зачем пукмен, зачем??? –  Mar 17 '17 at 21:30
  • Да вот, захотелось именно его родимого :) – SergeyD Mar 17 '17 at 21:38
  • 1
    А чем пакман не угодил? – vp_arth Mar 17 '17 at 21:39
  • @vp_arth, так права же нямко! –  Mar 17 '17 at 21:42
  • Наличие стенок и еды придётся таки проверять перед ходом – vp_arth Mar 17 '17 at 21:45
  • да, проверять нужно, а потом нужно что - то с ними делать. Думал что есть какой - то способ узнать, что содержится в определенной ячейке грида – SergeyD Mar 17 '17 at 21:48
  • 2
    А вы не держите бизнес-логику в UI. У вас должна быть таблица с содержимым клеток отдельно, не зависящая от Grid'а. – VladD Mar 17 '17 at 21:51
  • 1
    Да пукмена можно и не писать, можно супчика горохового покушать и готов результат... – Дмитрий Гвоздь Mar 17 '17 at 21:59
  • @VladD нет. такую таблицу не делал, я фактически только начал знакомиться с WPF. Вы имели в введу, инициализацию каждого компонента не в XAML а в MainWindow? – SergeyD Mar 17 '17 at 21:59
  • Вы бы для начала язык на котором говорите выучили а потом уж и за программирование взялись? – Дмитрий Гвоздь Mar 17 '17 at 22:00
  • переименую в PacMan, спасибо за замечание. – SergeyD Mar 17 '17 at 22:06
  • @SergeyD: Нет, конечно. Вы должны разделить программу на части: контент и представление. Всё, что относится к смыслу, должно быть отдельно от UI. Вот вам пример, покурите его. – VladD Mar 17 '17 at 23:54
  • @VladD я Вас понял, спасибо! – SergeyD Mar 18 '17 at 11:36

0 Answers0