Я реализую игру в нарды wpf, мне нужно найти шаблон для реализации ходов и положений пешек.
моя доска состоит из сетки с 3 рядами: верхний ряд, разделительСтрока-строка, нижний ряд и 12 столбцов, строка-разделитель не содержит никаких функций, это всего лишь визуальный помощник.
каждый верхний ряд и нижний ряд состоят из 12 ячеек, содержащих панель стека, пешкипредставлены в виде эллипсов.
движение в игре состоит из удаления эллипса (пешки) из одного стека и добавления его в другой.
// Example move a pawn from stack23 to stack22
Ellipse ellipse = (Ellipse)Stack23.Children[Stack23.Children.Count - 1];
Stack23.Children.RemoveAt(Stack23.Children.Count - 1);
Stack22.Children.Add(ellipse);
Мне необходимо использовать предопределенный класс дляэтот проект под названием Board
public class Board
{
public Stack<Pawn>[] Pipes { get; set; }
public Board()
{
Pipes = new Stack<Pawn>[24];
}
}
класс пешки предоставляет свойства для хода игры, такие как владелец текущего шашки (игрок или противник)
public Class Pawn
{
public bool IsMine{get; set;}
}
каждый ход также будет состоять из функций выталкивания и выталкивания с доски
Pipes[22].Push(Pipes[23].Pop());
(1) интерфейс и функциональность разделены, потому что некоторые вещи должны быть провереныd при перемещении пешки (хотя эллипсам назначены разные цвета, и их можно проверить по цветам), но я должен использовать любые способы этого класса, поэтому мне просто интересно, какие могут быть преимущества от отделения логики от пользовательского интерфейса ...
(2) как я мог бы реализовать связывание между функциональностью и пользовательским интерфейсом, как бы я связал панель стека со стеком и с каким преобразователем, чтобы операция выдавливания и нажатия привела к эквивалентному коду пользовательского интерфейса?