2013-06-28 50 views
2

我正在製作C#國際象棋遊戲,所以我可以練習使用該語言編碼。我使用Windows窗體,並使用45x45.png圖標。我已經制作了我的圖片盒,以便電路板上的每個位置都是50x50像素,使picturebox/board成爲一個400x400的正方形。我想知道的是,如何初始化棋盤,以便使用矩形類型的二維數組移動棋子。這樣,電路板上的每個位置都是一個定義爲50x50平方的矩形。到目前爲止我的代碼,如果我失去了一些重要的東西,讓我知道:使用圖片框和矩形制作棋盤,如何初始化?

class Board//this class represents the board 
{ 
    private Rectangle[,] chessBoard = new Rectangle[8, 8]; //a 2d array of rectangles 


    public void initBoard()//this method will initialize the picturebox/board 
    { 
     for (int x = 0; x < 8; x++) 
     { 
      for (int y = 0; y < 8; y++) 
      { 
       chessBoard[x, y] = new Rectangle(x * 50, y * 50, 50, 50); 


      } 
     } 

    } 

} 
+0

好的...你的問題是什麼? – Servy

+1

你在尋找肯定嗎?如果是這樣,那是一些極好的代碼 – Jonesopolis

+0

移動到更多空間的答案... –

回答

3

我建議,當你的方法可能會得到你那裏,最棋牌類遊戲就不會使用單獨的PNG文件的圖像,而你將擁有一個帶有2x6瓦片矩陣的單一圖像,並在圖像中使用偏移來選擇正確的瓦片。您可以將該板作爲64個元素的一維數組存儲。它的默認啓動的安排可能是這樣的......

board = [00,01,02,03,04,02,01,00, 
     05,05,05,05,05,05,05,05, 
     -1,-1,-1,-1,-1,-1,-1,-1, 
     -1,-1,-1,-1,-1,-1,-1,-1, 
     -1,-1,-1,-1,-1,-1,-1,-1, 
     -1,-1,-1,-1,-1,-1,-1,-1, 
     15,15,15,15,15,15,15,15, 
     10,11,12,13,14,12,11,10] 

其中-1是空白方框和00-15被抵消指標成片圖像。如:

00 10 = wr br 
01 11 = wk bk 
02 12 = wb bb 
03 13 = wq bq 
04 14 = wK bK 
05 15 = wp bp 

當玩家走棋,你只需要調用一個方法,以確定此舉是合法的,如果是這樣的目標占用?捕獲!其他設置板[目的地] =板[原點],設置板[原點] = -1。

可能需要仔細檢查我對K和Q的位置,希望我有道理:)

+0

女王去她的顏色! – Jonesopolis

+1

此外,這是一個很酷的方法 – Jonesopolis

+1

謝謝,請注意,您只需將索引指定爲pieces.bmp即可維護主板狀態。對於板[]中的每個元素。如果你想讓我看,我就有這樣的形象。另外,看起來好像Q和K在這個矩陣中是正確的。我檢查了我的棋盤:P另外請注意,您可以忽略前導0並使用1-5,只要確保您的矩形填充偏移量的前導零。 –