// ボードの初期化
void initboard(int board[][MAX_C])
{
int i, j;
for (i = 0; i < MAX_R; i++)
for (j = 0; j < MAX_C; j++)
board[i][j] = EMPTY;
}
// ボードの表示
void showboard(int board[][MAX_C])
{
int i, j;
char stone;
printf(" 1 2 3 \n -------\n");
for (i = 0; i < MAX_R; i++) {
printf("%c", i + 'a');
for (j = 0; j < MAX_C; j++) {
switch (board[i][j]) {
case MARU:
stone = MARU_CHAR;
break;
case BATSU:
stone = BATSU_CHAR;
break;
default:
stone = EMPTY_CHAR;
break;
}
printf("|%c", stone);
}
printf("|\n -------\n");
}
}
// 勝敗の判定
// 返値: GAMEOVER: 勝敗がついた時
// INGAME: ゲーム続行
int judgement(int board[][MAX_C])
{
int i, j;
for (i = 0; i < MAX_R; i++) { /* よこ */
if (board[i][0] != EMPTY) {
for(j = 1; j < MAX_C; j++) {
if (board[i][0] != board[i][j]) break;
}
if (j == MAX_C) return GAMEOVER;
}
}
for (i = 0; i < MAX_C; i++) { /* たて */
if (board[0][i] != EMPTY) {
for (j = 1; j < MAX_R; j++) {
if (board[0][i] != board[j][i]) break;
}
if (j == MAX_R) return GAMEOVER;
}
}
if (board[0][0] != EMPTY) { /* ななめ1 */
for (i = 1; i < MAX_R; i++) {
if (board[0][0] != board[i][i]) break;
}
if (i == MAX_R) return GAMEOVER;
}
if (board[0][MAX_C-1] != EMPTY) { /* ななめ2 */
for (i = 1; i < MAX_R; i++) {
if (board[0][MAX_C-1] != board[i][MAX_C-1-i]) break;
}
if (i == MAX_R) return GAMEOVER;
}
return INGAME;
}
// コンピュータ側の攻撃
void computer(int turn, int board[][MAX_C])
{
int i, j;
int decision, possibility;