summaryrefslogtreecommitdiff
path: root/board.c
diff options
context:
space:
mode:
Diffstat (limited to 'board.c')
-rw-r--r--board.c48
1 files changed, 0 insertions, 48 deletions
diff --git a/board.c b/board.c
deleted file mode 100644
index 91cee2a..0000000
--- a/board.c
+++ /dev/null
@@ -1,48 +0,0 @@
-#include "board.h"
-
-
-void b_set(board_t B, cboard_t C) {
- B[0] = C[0];
- B[1] = C[1];
-}
-
-void b_drop(board_t B, int xy, int v) {
- u64 mask = 0xfULL << (4 * xy), stkbot = 0x1ULL << (4 * xy);
- u64 bit = ((B[0] | B[1]) & mask) + stkbot;
- B[v] = B[v] | bit;
-}
-
-bool b_stk_full(cboard_t B, int xy) {
- u64 mask = 0xfULL << (4 * xy);
- return ((B[0] | B[1]) & mask) == mask;
-}
-
-static u64 winmasks[61] = {
- 0xfULL, 0xf0ULL, 0xf00ULL, 0x1111ULL,
- 0x2222ULL, 0x4444ULL, 0x8421ULL, 0x8888ULL,
- 0xf000ULL, 0xf0000ULL, 0xf00000ULL, 0xf000000ULL,
- 0x11110000ULL, 0x22220000ULL, 0x44440000ULL, 0x84210000ULL,
- 0x88880000ULL, 0xf0000000ULL, 0xf00000000ULL, 0xf000000000ULL,
- 0xf0000000000ULL, 0x111100000000ULL, 0x222200000000ULL, 0x444400000000ULL,
- 0x842100000000ULL, 0x888800000000ULL, 0xf00000000000ULL, 0x1000100010001ULL,
- 0x2000200020002ULL, 0x4000400040004ULL, 0x8000400020001ULL, 0x8000800080008ULL,
- 0xf000000000000ULL, 0x10001000100010ULL, 0x20002000200020ULL, 0x40004000400040ULL,
- 0x80004000200010ULL, 0x80008000800080ULL, 0xf0000000000000ULL, 0x100010001000100ULL,
- 0x200020002000200ULL, 0x400040004000400ULL, 0x800040002000100ULL, 0x800080008000800ULL,
- 0xf00000000000000ULL, 0x1000010000100001ULL, 0x1000100010001000ULL, 0x1111000000000000ULL,
- 0x2000020000200002ULL, 0x2000200020002000ULL, 0x2222000000000000ULL, 0x4000040000400004ULL,
- 0x4000400040004000ULL, 0x4444000000000000ULL, 0x8000040000200001ULL, 0x8000080000800008ULL,
- 0x8000400020001000ULL, 0x8000800080008000ULL, 0x8421000000000000ULL, 0x8888000000000000ULL,
- 0xf000000000000000ULL,
-};
-
-enum win_t b_win(cboard_t B) {
- if ((B[0] | B[1]) == ~0ULL) return WIN_DRAW;
-
- for (int i = 0; i < (int)(sizeof(winmasks) / sizeof(winmasks[0])); i++) {
- if ((B[0] & winmasks[i]) == winmasks[i]) return WIN_P0;
- if ((B[1] & winmasks[i]) == winmasks[i]) return WIN_P1;
- }
-
- return WIN_NONE;
-}