2016-08-12 221 views
0

我目前正在使用Javascript + HTML5 canvas製作一個多人棋牌遊戲作爲一個小型項目。我想知道代表董事會的最佳做法是什麼。用Javascript創建一個二維棋盤遊戲對象,用於棋局遊戲

選項1:2D對象陣列 - 我有一個Piece模塊,其中有一些功能對所有的棋子都是通用的。然後我有從Piece繼承的所有作品的對象。 - 然後我可以製作一個包含32個對象的二維數組,並將它們設置在棋盤上。

選項2:2D陣列的Ints - 我可以簡單地製作一個2D網格,其中某個整數代表給定的一塊。

哪個選項是'最好的',還是有更好的選擇?我正在嘗試採取面向對象的方法。

欣賞任何輸入。多謝你們。

+0

選項1會給你最大的靈活性 - 每個對象仍然可以包含一個整數來標識該作品,但它也可能包含諸如作品類型之類的信息,以及它是白色還是黑色: 'pieces = [{id :1,side:'white',type:'pawn'},...] 與選項2一起使用似乎只是限制自己,很少或沒有任何好處。如果目標是整體去看OO,那就去對象吧! –

+0

就我個人而言,我會選擇二維數組的對象,這樣我就可以很容易地得到像那個位置上的棋子那樣的信息,棋子的顏色是什麼,棋子屬於哪個球員等。 –

回答

1

你不妨去找對象,去學習OOP,得到一個整體「更好」的代碼......如果你正在用一個更大的「棋盤」編程一個遊戲,即大小爲數千或更多的棋盤,你可能會考慮整數方法的性能原因。

然而,一個8x8的棋盤對於現代的JS解釋器來說沒有任何意義,所以不妨去瘋狂。

+0

我是否製作了32個獨立的對象(8個典當物品,2個騎士物品等等)或者我需要製作6個物品並在需要時使用它們? 第二個選項使存儲位置方面很棘手,但第一個選項需要32個變量... – jebusayah

+0

再次,32個變量不是什麼大不了的。顯然,不要將它們作爲單個變量存儲在全局範圍中,並將它們放入代表電路板的數組中。空方塊只是「空」,有些將填充一個可移動/移除的對象,並用一個不同的,等等。 –

+0

好吧,謝謝! – jebusayah

0

對象的二維數組可能是一個更好的選擇,因爲您可以存儲比int數組更多的數據。例如,不是使用數字5和6來表示黑色和白色的棋子,您可以使用具有類型屬性和顏色屬性的對象。

0

在我看來,使用一組對象來表示棋盤更方便,這樣你可以很容易地附加每個棋子對象及其圖形表示(CSS類),而使用數字來表示一塊在我看來就像一個更加混亂的方法,絕對不是面向對象。