二维数组N子棋题目c++
时间: 2023-10-28 22:04:49 浏览: 44
以下是一个简单的二维数组N子棋的C++代码示例:
```c++
#include <iostream>
#include <vector>
using namespace std;
const int n = 3; // N子棋的棋盘大小为n*n
char board[n][n]; // 棋盘
// 初始化棋盘
void initBoard() {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
board[i][j] = '-';
}
}
}
// 打印棋盘
void printBoard() {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << board[i][j] << " ";
}
cout << endl;
}
}
// 判断是否有玩家获胜
bool isWin(char player) {
// 检查行
for (int i = 0; i < n; i++) {
int count = 0;
for (int j = 0; j < n; j++) {
if (board[i][j] == player) {
count++;
}
}
if (count == n) {
return true;
}
}
// 检查列
for (int j = 0; j < n; j++) {
int count = 0;
for (int i = 0; i < n; i++) {
if (board[i][j] == player) {
count++;
}
}
if (count == n) {
return true;
}
}
// 检查对角线
int count1 = 0;
int count2 = 0;
for (int i = 0; i < n; i++) {
if (board[i][i] == player) {
count1++;
}
if (board[i][n-i-1] == player) {
count2++;
}
}
if (count1 == n || count2 == n) {
return true;
}
return false;
}
int main() {
initBoard(); // 初始化棋盘
char player1 = 'X'; // 玩家1执X子
char player2 = 'O'; // 玩家2执O子
char currentPlayer = player1; // 当前玩家为玩家1
bool gameOver = false; // 游戏是否结束
while (!gameOver) {
printBoard(); // 打印棋盘
int row, col;
cout << "请玩家" << currentPlayer << "输入落子位置(行 列): ";
cin >> row >> col;
// 判断位置是否合法
if (row < 1 || row > n || col < 1 || col > n) {
cout << "位置不合法,请重新输入!" << endl;
continue;
}
if (board[row-1][col-1] != '-') {
cout << "该位置已经有棋子,请重新输入!" << endl;
continue;
}
// 在棋盘上落子
board[row-1][col-1] = currentPlayer;
// 判断是否有玩家获胜
if (isWin(currentPlayer)) {
gameOver = true;
cout << "恭喜玩家" << currentPlayer << "获胜!" << endl;
} else {
// 判断是否平局
bool isTie = true;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (board[i][j] == '-') {
isTie = false;
break;
}
}
if (!isTie) {
break;
}
}
if (isTie) {
gameOver = true;
cout << "平局!" << endl;
} else {
// 切换到下一个玩家
if (currentPlayer == player1) {
currentPlayer = player2;
} else {
currentPlayer = player1;
}
}
}
}
printBoard(); // 打印最终棋盘
return 0;
}
```
该代码中,initBoard()函数用于初始化棋盘,printBoard()函数用于打印棋盘,isWin()函数用于判断是否有玩家获胜,main()函数则是游戏的主要逻辑。在游戏中,玩家1执X子,玩家2执O子,玩家轮流在棋盘上落子,直到有玩家获胜或者平局。