//井字棋(双人对战) #include <iostream> #include <vector> #include <cstdlib> #include <ctime> using namespace std; void drawBoard(const vector<char>& board) { cout << "\n"; cout << " " << board[0] << " | " << board[1] << " | " << board[2] << " \n"; cout << "---+---+---\n"; cout << " " << board[3] << " | " << board[4] << " | " << board[5] << " \n"; cout << "---+---+---\n"; cout << " " << board[6] << " | " << board[7] << " | " << board[8] << " \n\n"; } bool checkWin(const vector<char>& board, char player) { const int winPatterns[8][3] = {{0,1,2}, {3,4,5}, {6,7,8}, {0,3,6}, {1,4,7}, {2,5,8}, {0,4,8}, {2,4,6}}; for (int i = 0; i < 8; i++) { if (board[winPatterns[i][0]] == player && board[winPatterns[i][1]] == player && board[winPatterns[i][2]] == player) { return true; } } return false; } bool checkDraw(const vector<char>& board) { for (int i = 0; i < 9; i++) { if (board[i] != 'X' && board[i] != 'O') { return false; } } return true; } int main() { vector<char> board(9); for (int i = 0; i < 9; i++) { board[i] = '1' + i; } char currentPlayer = 'X'; bool gameOver = false; cout << "欢迎来到双人版井字棋游戏!\n"; cout << "玩家1: X,玩家2: O\n"; while (!gameOver) { drawBoard(board); int move; cout << "玩家" << (currentPlayer == 'X' ? 1 : 2) << "(" << currentPlayer << "),请输入落子位置 (1-9): "; cin >> move; move--; if (move < 0 || move > 8 || board[move] == 'X' || board[move] == 'O') { cout << "无效的位置,请重新输入!\n"; continue; } board[move] = currentPlayer; if (checkWin(board, currentPlayer)) { drawBoard(board); cout << "恭喜玩家" << (currentPlayer == 'X' ? 1 : 2) << "(" << currentPlayer << ") 获胜!\n"; gameOver = true; } else if (checkDraw(board)) { drawBoard(board); cout << "游戏平局!\n"; gameOver = true; } else { currentPlayer = (currentPlayer == 'X') ? 'O' : 'X'; } } return 0; }
Note.ms
/cxjh