我對XNA並不熟悉,但我會提出一些建議。首先,您可能想要將這些部分保留在二維數組中或類似部分,而不是將它們放在自己的變量中(如wknight1)。否則,每次用戶點擊時都必須檢查每個變量。
我假設你想要一個系統,用戶點擊一個片段來選擇它,然後點擊一個空的方塊在那裏移動它。下面是類似的東西,一些僞代碼(我用一個空板的位置在這裏意味着空方):
if(mouse.LeftButton == ButtonState.Pressed
&& board[mouse.x][mouse.y] != null && pieceSelected == null)
{
pieceSelected = board[mouse.x][mouse.y];
selectedX = mouse.x;
selectedY = mouse.y
}
else if (mouse.LeftButton == ButtonState.Pressed
&& board[mouse.x][mouse.y] == null && pieceSelected != null)
{
board[selectedX][selectedY] == null;
board[mouse.x][mouse.y] = pieceSelected;
pieceSelected = null;
}
您可以進一步添加條件像isAValidMove(pieceType,運行startx,starty,finishx,完成)在那裏你檢查玩家試圖移動他們自己的棋子,這是一個合法的國際象棋移動等等。你可能也可以使這更優雅和麪向對象(和/或事件驅動)(並添加點擊和拖動等等),但我保持簡單來說明基本邏輯。
我該如何設置2d數組來保存所有的塊?我有他們所有的精靈圖像。 – Sankar 2009-12-02 07:03:46
這個數組實際上並不包含碎片或任何其他圖像,它保存了對碎片的邏輯引用(無論是像「white_knight」還是自定義Piece對象,或者甚至只是一個數字)。然後,您可以通過查看電路板陣列來了解如何渲染圖形板。基本上,棋盤陣列是遊戲狀態的邏輯*模型*,圖形顯示是該遊戲狀態的*視圖*。你應該儘量避免混淆模型和查看太多 - 將它們分開將使以後改變事情變得更容易。 – Ryan 2009-12-02 22:56:13