#include \n#include \n\nconst int SIZE = 15;\n\nenum class Piece { NONE, BLACK, WHITE };\n\nclass Game {\npublic:\n Game() : currentPiece(Piece::BLACK), board(SIZE, std::vector(SIZE, Piece::NONE)) {}\n\n void play() {\n while (true) {\n std::cout << "Player " << (currentPiece == Piece::BLACK ? "BLACK" : "WHITE") << "'s turn:" << std::endl;\n displayBoard();\n\n int row, col;\n std::cout << "Enter the row (1-" << SIZE << "): ";\n std::cin >> row;\n std::cout << "Enter the column (1-" << SIZE << "): ";\n std::cin >> col;\n\n if (isValidMove(row - 1, col - 1)) {\n makeMove(row - 1, col - 1);\n if (isWinningMove(row - 1, col - 1)) {\n std::cout << "Player " << (currentPiece == Piece::BLACK ? "BLACK" : "WHITE") << " wins!" << std::endl;\n break;\n }\n switchPlayers();\n } else {\n std::cout << "Invalid move. Please try again." << std::endl;\n }\n }\n }\n\nprivate:\n Piece currentPiece;\n std::vector<std::vector> board;\n\n bool isValidMove(int row, int col) const {\n if (row < 0 || row >= SIZE || col < 0 || col >= SIZE || board[row][col] != Piece::NONE) {\n return false;\n }\n return true;\n }\n\n void makeMove(int row, int col) {\n board[row][col] = currentPiece;\n }\n\n bool isWinningMove(int row, int col) const {\n Piece piece = board[row][col];\n int count = 0;\n\n // Check horizontally\n for (int i = col - 4; i <= col + 4; ++i) {\n if (i >= 0 && i + 4 < SIZE && board[row][i] == piece && board[row][i + 1] == piece &&\n board[row][i + 2] == piece && board[row][i + 3] == piece && board[row][i + 4] == piece) {\n return true;\n }\n }\n\n // Check vertically\n for (int i = row - 4; i <= row + 4; ++i) {\n if (i >= 0 && i + 4 < SIZE && board[i][col] == piece && board[i + 1][col] == piece &&\n board[i + 2][col] == piece && board[i + 3][col] == piece && board[i + 4][col] == piece) {\n return true;\n }\n }\n\n // Check diagonally (top-left to bottom-right)\n for (int i = -4; i <= 4; ++i) {\n int r = row + i;\n int c = col + i;\n if (r >= 0 && r + 4 < SIZE && c >= 0 && c + 4 < SIZE && board[r][c] == piece && board[r + 1][c + 1] == piece &&\n board[r + 2][c + 2] == piece && board[r + 3][c + 3] == piece && board[r + 4][c + 4] == piece) {\n return true;\n }\n }\n\n // Check diagonally (top-right to bottom-left)\n for (int i = -4; i <= 4; ++i) {\n int r = row + i;\n int c = col - i;\n if (r >= 0 && r + 4 < SIZE && c >= 0 && c + 4 < SIZE && board[r][c] == piece && board[r + 1][c - 1] == piece &&\n board[r + 2][c - 2] == piece && board[r + 3][c - 3] == piece && board[r + 4][c - 4] == piece) {\n return true;\n }\n }\n\n return false;\n }\n\n void switchPlayers() {\n currentPiece = (currentPiece == Piece::BLACK) ? Piece::WHITE : Piece::BLACK;\n }\n\n void displayBoard() const {\n for (int i = 0; i < SIZE; ++i) {\n for (int j = 0; j < SIZE; ++j) {\n char pieceChar;\n switch (board[i][j]) {\n case Piece::NONE:\n pieceChar = '.';\n break;\n case Piece::BLACK:\n pieceChar = 'B';\n break;\n case Piece::WHITE:\n pieceChar = 'W';\n break;\n }\n std::cout << pieceChar << " ";\n }\n std::cout << std::endl;\n }\n }\n};\n\nint main() {\n Game game;\n game.play();\n\n return 0;\n}\n\n// 该程序使用一个二维向量表示棋盘,其中Piece::NONE表示空位,Piece::BLACK表示黑子,Piece::WHITE表示白子。\n// 游戏通过循环进行,直到有一方获胜。在每个回合中,程序提示当前玩家输入所下棋子的位置,然后检查该位置是否有效,如果有效则落子,并检查是否获胜。最后,切换玩家并显示当前棋盘状态。