gpt4 book ai didi

c# - 步步高棋盘游戏的绑定(bind)模式

转载 作者:行者123 更新时间:2023-11-30 17:13:55 25 4
gpt4 key购买 nike

我正在实现一个 wpf 双陆棋游戏,我需要找到一种模式来实现棋子的移动和位置。

我的板由 3 行的网格组合而成:top-row , separator-row , bottom-row 和 12 columns , separator-row 没有功能,它只是一个视觉助手。

顶行和底行各包含 12 个包含堆栈面板的单元格,pawn 显示为椭圆。

游戏中的一个 Action 包括从一堆中移除一个椭圆(棋子)并将其添加到另一个。

  // 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 之间的绑定(bind)我如何将堆栈面板绑定(bind)到堆栈并使用什么转换器,以便弹出和推送操作会产生等效的 UI 代码?

最佳答案

(1) 将逻辑与 UI 解耦有什么好处?

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

(2)

使用 MVVM。您当前的 Board 类是模型的一部分。

关于c# - 步步高棋盘游戏的绑定(bind)模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9277954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com