2016-10-05 15 views
0

我會嘗試製作象棋ai,並且需要長長的位(我認爲,除非有其他人有更好的方法)來表示8x8棋盤上棋子的位置。 它看起來像這 -如何包裝大量的比特,所以它不是一個大的線?

double blackpawns=0b1111111111111111111111111111111111111111111111111111111111111111; 

,但我想使它看起來喜歡 -

double blackpawns=0b11111111 
        11111111 
        11111111 
        11111111 
        11111111 
        11111111 
        11111111 
        11111111; 

只是這樣看起來更加整潔。問題是,如果我在1之間放置任何空格,那麼0b僅適用於該塊的其餘部分,其餘不計算在內,並且拋出錯誤。謝謝!

順便說一句,我不會有一個充滿了棋子的棋盤,我用它來演示。

+0

你要使用'double'來存儲位掩碼?真? – VolAnd

+0

是的,所以我知道這看起來不正確,但我不知道我應該做什麼。你會怎麼做? – user2350459

+0

'stdint.h'中的'uint64_t'怎麼樣? – VolAnd

回答

1

這看起來不是很精緻,但考慮到以下幾點:

#include <stdio.h> 
#include <stdint.h> 

int main(void) 
{ 
    uint64_t blackpawns = 0b\ 
11111111\ 
11111111\ 
11111111\ 
11111111\ 
11111111\ 
11111111\ 
11111111\ 
11111111; 
     // your code 
     return 0; 
} 

我個人的意見是:最好是用十六進制表示在這種情況下,如:

 uint64_t blackpawns = 0xFFFFFFFFFFFFFFFF; 
+0

即使位置變得更復雜,您也可以使用十六進制? – user2350459

+0

兩個十六進制數字是一個字節,所以對於國際象棋,我希望掩碼像'AA55AA55AA55AA55',其中'AA' ='10101010'和'55' ='01010101'。但是,當然,這是品味和習慣的問題 - 使用二進制 – VolAnd

相關問題