Шаблон для игры в нарды - PullRequest
       1

Шаблон для игры в нарды

3 голосов
/ 14 февраля 2012

Я реализую игру в нарды 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) как я мог бы реализовать связывание между функциональностью и пользовательским интерфейсом, как бы я связал панель стека со стеком и с каким преобразователем, чтобы операция выдавливания и нажатия привела к эквивалентному коду пользовательского интерфейса?

1 Ответ

2 голосов
/ 14 февраля 2012

(1) what could be the advantages of decoupling the logic from the UI?

Именно так. Когда ваша логика и пользовательский интерфейс отделены друг от друга, вы можете легко изменить внешний вид пользовательского интерфейса, не внося существенных изменений в бизнес-логику и наоборот.

(2)

Используйте MVVM. Ваш текущий Board класс является частью Модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...