#include <iostream>
#include <vector>
using namespace std;
const int DRAW = 0;
const int BLACK = 1;
const int WHITE = 2;
const int BOARD_SIZE = 15;
int board[BOARD_SIZE][BOARD_SIZE];
void initBoard() {
for (int i = 0; i < BOARD_SIZE; ++i) {
for (int j = 0; j < BOARD_SIZE; ++j) {
board[i][j] = DRAW;
}
}
}
void printBoard() {
for (int i = 0; i < BOARD_SIZE; ++i) {
for (int j = 0; j < BOARD_SIZE; ++j) {
switch (board[i][j]) {
case DRAW:
cout << "·";
break;
case BLACK:
cout << "●";
break;
case WHITE:
cout << "○";
break;
}
}
cout << endl;
}
}
bool isValidMove(int x, int y, int player) {
if (x < 0 || x >= BOARD_SIZE || y < 0 || y >= BOARD_SIZE) {
return false;
}
if (board[x][y] != DRAW) {
return false;
}
return true;
}
bool makeMove(int x, int y, int player) {
if (!isValidMove(x, y, player)) {
return false;
}
board[x][y] = player;
return true;
}
int checkWinner(int x, int y) {
int player = board[x][y];
int count = 1;
// Check horizontal
for (int i = 1; i < 5; ++i) {
if (x + i < BOARD_SIZE && board[x + i][y] == player) {
count++;
} else {
break;
}
}
for (int i = 1; i < 5; ++i) {
if (x - i >= 0 && board[x - i][y] == player) {
count++;
} else {
break;
}
}
if (count >= 5) {
return player;
}
// Check vertical
count = 1;
for (int i = 1; i < 5; ++i) {
if (y + i < BOARD_SIZE && board[x][y + i] == player) {
count++;
} else {
break;
}
}
for (int i = 1; i < 5; ++i) {
if (y - i >= 0 && board[x][y - i] == player) {
count++;
} else {
break;
}
}
if (count >= 5) {
return player;
}
// Check diagonal
count = 1;
for (int i = 1; i < 5; ++i) {
if (x + i < BOARD_SIZE && y + i < BOARD_SIZE && board[x + i][y + i] == player) {
count++;
} else {
break;
}
}
for (int i = 1; i < 5; ++i) {
if (x - i >= 0 && y - i >= 0 && board[x - i][y - i] == player) {
count++;
} else {
break;
}
}
if (count >= 5) {
return player;
}
// Check anti-diagonal
count = 1;
for (int i = 1; i < 5; ++i) {
07-23
7214
11-14