2017-08-08 44 views
1

我想打印出來,我正在實現使用位棋盤一盤棋。我很難想象如何去顯示8x8網格和遊戲塊。如何顯示從二進制文字派生的位圖板?

這裏的鏈接到tutorial我下面的(雖然不完整)。

@white_pawn = 0b0000000000000000000000000000000000000000000000001111111100000000 
    @white_rook = 0b0000000000000000000000000000000000000000000000000000000010000001 
    @white_knight = 0b0000000000000000000000000000000000000000000000000000000001000010 
    @white_bishop = 0b0000000000000000000000000000000000000000000000000000000000100100 
    @white_king = 0b0000000000000000000000000000000000000000000000000000000000010000 
    @white_queen = 0b0000000000000000000000000000000000000000000000000000000000001000 

    @black_pawn = 0b0000000011111111000000000000000000000000000000000000000000000000 
    @black_rook = 0b1000000100000000000000000000000000000000000000000000000000000000 
    @black_knight = 0b0100001000000000000000000000000000000000000000000000000000000000 
    @black_bishop = 0b0010010000000000000000000000000000000000000000000000000000000000 
    @black_king = 0b0001000000000000000000000000000000000000000000000000000000000000 
    @black_queen = 0b0000100000000000000000000000000000000000000000000000000000000000 

    @all_pieces = @all_white | @all_black 

我具有上述二進制設置爲每一個默認的國際象棋位置,由此MSB爲左上角,而LSB是右下角。

隨着比賽的進行,二進制文字上面會隨時間而改變(目前它們在默認情況下國際象棋的展示位置)。然後

enter image description here

遊戲管理器將再次在局考慮打印上面的所有更新的二進制文字,如上圖。

什麼是通過文字進行迭代並打印所需的空位/棋子按照上述信息的好方法?

+0

你可以給你更多的解釋你打算如何規劃你的國際象棋遊戲? – clabe45

+0

我剛剛更新了問題,並提供了一個指向我正在使用的教程的鏈接,該鏈接應該更清晰。 – Carrein

回答

1

對於每種類型的棋子(即white_pawn,white_rook,black_pawn,black_rook,...),迭代二進制數中的每一位。如果該位爲1,然後得出相應的棋子圖像,xy);其中

x = bit_index % board_width   # relative position to nearest-down chess board row 
y = (bit_index/board_width).floor # nearest-down chess board row