绑定模式与纸牌游戏有何不同?

3
我正在实现一个WPF版的双陆棋游戏,需要找到一种模式来实现棋子的移动和位置。
我的棋盘由一个带有3行的网格组成:顶部行、分隔行、底部行和12列。分隔行没有功能,只是一个可视化辅助工具。
顶部行和底部行各包含12个单元格,每个单元格内包含一个StackPanel,棋子以椭圆形呈现。
游戏中的一次移动是指从一个Stack中删除一个椭圆(棋子)并将其添加到另一个Stack中。
  // 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和功能是分开的,因为在移动棋子时必须检查某些事情(虽然椭圆会被分配不同的颜色并且可以通过颜色进行检查),但我必须以任何方式使用这个类,所以我想知道将逻辑与UI解耦的优点是什么...
(2) 我如何在功能和UI之间实现绑定?我应该如何将stackpanel绑定到一个堆栈,并使用什么转换器,以便推入和弹出操作会导致等效的UI代码?
1个回答

2

(1) 从UI中解耦逻辑的优势是什么?

正是这个原因。当你的逻辑和UI被解耦后,你可以轻松地改变UI的外观,而不需要对业务逻辑做出巨大的改变,反之亦然。

(2)

使用MVVM。你当前的Board类是模型(Model)的一部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接