我正在实施一个wpf步步高游戏, 我需要找到一种模式来实现棋子的动作和位置。
我的电路板由3行网格组合而成: 顶行,分隔符行,底行和12列,分隔符行保留否 功能它只是一个视觉帮助。
顶行和底行每个由12个包含堆叠面板的单元组成, 典当呈现为椭圆形。
游戏中的一个动作包括从一个堆栈中移除一个椭圆(pawn)并将其添加到 另一个。
// 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];
}
}
pawn类提供游戏流的属性,例如当前检查者(玩家或对手)的所有者
public Class Pawn
{
public bool IsMine{get; set;}
}
每次移动还包括在棋盘中弹出和推送的功能
Pipes[22].Push(Pipes[23].Pop());
(1)UI和功能是分开的,因为在移动pawn时必须检查某些东西(尽管椭圆被分配了不同的颜色并且可以通过颜色检查) 但我必须以任何方式使用这个类,所以我只是想知道将逻辑与UI分离的优点是什么......
(2)我如何实现功能和UI之间的绑定 怎么会,我把stackpanel绑定到一个堆栈和什么转换器,以便弹出和推送操作将导致相同的UI代码?
答案 0 :(得分:2)
(1) what could be the advantages of decoupling the logic from the UI?
正是如此。当您的逻辑和UI分离时,您可以轻松更改UI的外观,而无需对业务逻辑进行大的更改,反之亦然。
(2)
使用MVVM。您当前的Board
课程是该模型的一部分。