summaryrefslogtreecommitdiffstats
path: root/mbbsd/gomo1.c
diff options
context:
space:
mode:
Diffstat (limited to 'mbbsd/gomo1.c')
-rw-r--r--mbbsd/gomo1.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/mbbsd/gomo1.c b/mbbsd/gomo1.c
index 260ce88f..49d484a5 100644
--- a/mbbsd/gomo1.c
+++ b/mbbsd/gomo1.c
@@ -1,4 +1,4 @@
-/* $Id: gomo1.c,v 1.4 2002/07/21 09:26:02 in2 Exp $ */
+/* $Id$ */
#include "bbs.h"
#define QCAST int (*)(const void *, const void *)
@@ -11,12 +11,15 @@ intrevcmp(const void *a, const void *b)
return (*(int *)b - *(int *)a);
}
+// 以 (x,y) 為起點, 方向 (dx,dy), 傳回以 bit 表示相鄰哪幾格有子
+// 如 10111 表示該方向相鄰 1,2,3 有子, 4 空地
+// 最高位 1 表示對方的子, 或是牆
/* x,y: 0..BRDSIZ-1 ; color: CBLACK,CWHITE ; dx,dy: -1,0,+1 */
static int
gomo_getindex(int x, int y, int color, int dx, int dy)
{
int i, k, n;
- for (n = -1, i = 0, k = 1; i < 5; i++, k <<= 1) {
+ for (n = -1, i = 0, k = 1; i < 5; i++, k*=2) {
x += dx;
y += dy;
@@ -73,9 +76,12 @@ dirchk(int x, int y, int color, int limit, int dx, int dy)
if ((style == 3) || (style == 2)) {
int i, n = 0, tmp, nx, ny;
- n = adv[loc >> 1];
+ n = adv[loc / 2];
- ((loc & 1) == 0) ? (n >>= 4) : (n &= 0x0f);
+ if(loc%2==0)
+ n/=16;
+ else
+ n%=16;
ku[x][y] = color;
@@ -110,6 +116,7 @@ getstyle(int x, int y, int color, int limit)
if (ku[x][y] != BBLANK)
return 0x0d;
+ // (-1,1), (0,1), (1,0), (1,1)
for (i = 0; i < 4; i++)
dir[i] = dirchk(x, y, color, limit, i ? (i >> 1) : -1, i ? (i & 1) : 1);