步步高棋盘游戏的绑定模式

时间:2012-02-14 13:45:20

标签: c# wpf

我正在实施一个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代码?

1 个答案:

答案 0 :(得分:2)

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

正是如此。当您的逻辑和UI分离时,您可以轻松更改UI的外观,而无需对业务逻辑进行大的更改,反之亦然。

(2)

使用MVVM。您当前的Board课程是该模型的一部分。