0
已解决
#include <iostream>
using namespace std;
char board[3][3] = {{' ', ' ', ' '}, {' ', ' ', ' '}, {' ', ' ', ' '}};
char currentPlayer = 'X';
void drawBoard() {
cout << "\n 1 2 3\n";
for (int i = 0; i < 3; i++) {
cout << i+1 << " ";
for (int j = 0; j < 3; j++) {
cout << board[i][j];
if (j < 2) cout << "|";
}
cout << endl;
if (i < 2) cout << " -+-+-\n";
}
}
bool checkWin() {
// Check rows
for (int i = 0; i < 3; i++)
if (board[i][0] != ' ' && board[i][0] == board[i][1] && board[i][1] == board[i][2])
return true;
// Check columns
for (int j = 0; j < 3; j++)
if (board[0][j] != ' ' && board[0][j] == board[1][j] && board[1][j] == board[2][j])
return true;
// Check diagonals
if (board[0][0] != ' ' && board[0][0] == board[1][1] && board[1][1] == board[2][2])
return true;
if (board[0][2] != ' ' && board[0][2] == board[1][1] && board[1][1] == board[2][0])
return true;
return false;
}
bool checkDraw() {
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
if (board[i][j] == ' ')
return false;
return true;
}
void switchPlayer() {
currentPlayer = (currentPlayer == 'X') ? 'O' : 'X';
}
bool makeMove(int row, int col) {
if (row < 1 || row > 3 || col < 1 || col > 3) return false;
if (board[row-1][col-1] != ' ') return false;
board[row-1][col-1] = currentPlayer;
return true;
}
int main() {
int row, col;
while (true) {
drawBoard();
cout << "玩家 " << currentPlayer << " 的回合,输入行列(如:2 3):";
cin >> row >> col;
if (!makeMove(row, col)) {
cout << "无效的落子位置,请重新输入!\n";
cin.clear();
cin.ignore(10000, '\n');
continue;
}
if (checkWin()) {
drawBoard();
cout << "玩家 " << currentPlayer << " 获胜!\n";
break;
}
if (checkDraw()) {
drawBoard();
cout << "平局!\n";
break;
}
switchPlayer();
}
return 0;
}
可以转载!!!