2012-02-14 64 views
3

我正在實施一個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); 

我被要求使用預定義的類爲這個項目稱爲

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)的UI和功能是分開的,因爲某些東西有移動的棋子時(雖然橢圓被分配不同的顏色,並且可以通過顏色進行檢查) 進行檢查,但我不得不使用這個類的任何方式,所以我只是想知道什麼可能是從用戶界面的邏輯解耦的優點...

(2)我怎麼能實現功能和用戶界面之間的綁定 如何,我將綁定堆棧面板到堆棧和什麼轉換器,以便彈出和推動操作會導致相應的UI代碼?

回答

2

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

沒錯。當您的邏輯和用戶界面解耦後,您可以輕鬆更改用戶界面的外觀,而無需對業務邏輯進行重大更改,反之亦然。

(2)

使用MVVM。您目前的Board班是該模型的一部分。