使用C++编写的五子棋小游戏源代码
时间: 2024-09-09 18:14:44 浏览: 62
编写一个完整的五子棋游戏涉及到多个方面,包括游戏逻辑、用户界面、胜负判断等。下面是一个简化的C++五子棋游戏的源代码示例,它包含了基本的棋盘显示和落子功能,但没有胜负判断和人工智能对战等高级功能。
```cpp
#include <iostream>
#include <vector>
using namespace std;
const int kBoardSize = 15; // 定义棋盘大小
enum class Player { kNone, kPlayer1, kPlayer2 };
// 用二维数组表示棋盘,空位用0表示,玩家1和玩家2分别用1和2表示
vector<vector<int>> board(kBoardSize, vector<int>(kBoardSize, 0));
// 打印棋盘
void PrintBoard() {
cout << " ";
for (int i = 0; i < kBoardSize; ++i) {
cout << i % 10 << " ";
}
cout << endl;
for (int i = 0; i < kBoardSize; ++i) {
cout << i % 10 << " ";
for (int j = 0; j < kBoardSize; ++j) {
if (board[i][j] == 0) {
cout << ". ";
} else {
cout << board[i][j] << " ";
}
}
cout << endl;
}
}
// 落子函数
bool PlacePiece(int x, int y, Player player) {
if (x < 0 || x >= kBoardSize || y < 0 || y >= kBoardSize || board[x][y] != 0) {
return false; // 落子位置不合法
}
board[x][y] = static_cast<int>(player) + 1; // 根据玩家类型放置棋子
return true;
}
int main() {
Player currentPlayer = Player::kPlayer1;
int x, y;
bool validInput;
// 游戏主循环
while (true) {
PrintBoard();
cout << "Player " << (currentPlayer == Player::kPlayer1 ? "1" : "2") << " turn. Enter your move (row and column): ";
cin >> x >> y;
validInput = PlacePiece(x, y, currentPlayer);
if (!validInput) {
cout << "Invalid move. Try again." << endl;
continue;
}
// 切换玩家
currentPlayer = (currentPlayer == Player::kPlayer1) ? Player::kPlayer2 : Player::kPlayer1;
}
return 0;
}
```
请注意,上述代码是一个非常基础的示例,它没有实现游戏胜负的判断逻辑,也没有处理用户输入的错误情况,比如用户输入非数字字符。在实际开发中,你还需要添加胜负判断、游戏结束条件、用户输入验证等更多功能。
阅读全文