VIPPERでもわかるプログラミングVer11.0RC1
■ このスレッドは過去ログ倉庫に格納されています
0149デフォルトの名無しさん
2006/01/12(木) 00:26:23int check_dir(int my, int en, int x, int y, int dx, int dy, int doflip, int depth)
{
x += dx;
y += dy;
if (board[x][y] == en) {
int ret = check_dir(my, en, x, y, dx, dy, doflip, depth+1);
if (doflip && ret) board[x][y] = my;
return ret;
} else if (board[x][y] == my && depth > 0) {
return 1;
} else {
return 0;
}
}
int check_put(int my, int en, int x, int y, int doflip) {
static int eightdir[8][2] = { // 8方向を表す配列
{-1, 0}, {-1, -1}, {0, -1}, {+1, -1},
{+1, 0}, {+1, +1}, {0, +1}, {-1, +1}
};
int ret = 0;
if (board[x][y] == 0) {
int n;
for (n = 0; n < 8; n++) {
ret |= check_dir(my, en, x, y, eightdir[n][0], eightdir[n][1], doflip, 0);
}
}
return !ret; // 0: 置ける / 1: 置けない
}
■ このスレッドは過去ログ倉庫に格納されています