我需要你的帮助才能知道是否可以使用位板进行连接5游戏。因为我看到很多关于连接4游戏的例子,但是如果电路板非常大,例如15x15或19x19则没有。我不明白如何用64位代表电路板。
感谢您的帮助
答案 0 :(得分:2)
正如unwind的答案中所解释的那样,有可能通过这样做来否定位板的主要优点,即在一条CPU指令中对整个数据结构执行逻辑运算。最理想的是,位板的大小将是平台指令集的宽度。
可能的解决方法是将电路板表示为多个较小的“标准”位板(32位或64位,具体取决于您的平台),并分别在每个迷你位板上应用逻辑运算。例如,15x15的电路板可分为4个8x8电路板,例如:
typedef uint64_t miniboard_type; // 8x8 board
typedef struct
{
miniboard_type miniboard[4]; // Larger 15x15 board comprising 4 8x8 boards
} bitboard_type;
bitboard_type bitboard;
相应地,我相信您可能还需要调整数学和逻辑来考虑迷你位板之间的边缘(这取决于您想要对主位板做什么)。
答案 1 :(得分:1)
咦?
当然有可能,如果通过“位板”你只是指“每个单元使用一位的2D阵列”。
如果您有时更容易舍入所以每行(或列)是一个整数字节,但你不必这样做。
做一些像:
#include <stdint.h>
#include <limits.h>
#define WIDTH 22
#define HEIGHT 17
uint8_t bits[(WIDTH * HEIGHT + CHAR_BIT - 1) / CHAR_BIT];
这将bits
声明为一个字节数组,其中有足够的字节来保存WIDTH
个HEIGHT
个单元格的矩阵。
使用示例的值,它将是(22 * 17 + 7)/ 8或47字节长(假设CHAR_BIT
是8)。