引言
五子棋,又称连珠、五目连珠,是一种两人对弈的纯策略型棋类游戏。它起源于中国古代,有着悠久的历史。如今,五子棋不仅是一种娱乐活动,更是考验智力、锻炼思维的好方式。而用C语言编程实现一个五子棋游戏,则能让你在编程技能提升的同时,享受游戏带来的乐趣。本文将带你一步步用C语言实现一个简单的五子棋游戏。
系统设计
1. 游戏界面
游戏界面采用控制台输出,使用二维数组表示棋盘。棋盘大小为15x15,每个位置可以用数字表示,例如:1表示上家(玩家1)的棋子,2表示下家(玩家2)的棋子,0表示空位。
2. 游戏规则
- 每个玩家轮流在棋盘上放置自己的棋子。
- 首先在横、竖、斜任一方向上连成五个棋子的一方获胜。
- 棋盘放满时,游戏平局。
3. 程序流程
- 初始化棋盘。
- 轮流让玩家输入坐标,放置棋子。
- 判断胜负。
- 重复步骤2和3,直到游戏结束。
关键代码实现
1. 初始化棋盘
void initBoard(int board[15][15]) {
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 15; j++) {
board[i][j] = 0;
}
}
}
2. 打印棋盘
void printBoard(int board[15][15]) {
printf(" ");
for (int i = 0; i < 15; i++) {
printf("%d ", i + 1);
}
printf("\n");
for (int i = 0; i < 15; i++) {
printf("%d ", i + 1);
for (int j = 0; j < 15; j++) {
if (board[i][j] == 0) {
printf(". ");
} else if (board[i][j] == 1) {
printf("X ");
} else if (board[i][j] == 2) {
printf("O ");
}
}
printf("\n");
}
}
3. 判断胜负
int checkWin(int board[15][15], int row, int col, int player) {
int win = 0;
// 检查横线
for (int i = 0; i < 5; i++) {
if (board[row][col + i] == player) {
win++;
} else {
win = 0;
break;
}
}
if (win == 5) return 1;
// 检查竖线
for (int i = 0; i < 5; i++) {
if (board[row + i][col] == player) {
win++;
} else {
win = 0;
break;
}
}
if (win == 5) return 1;
// 检查斜线
for (int i = 0; i < 5; i++) {
if (board[row + i][col + i] == player) {
win++;
} else {
win = 0;
break;
}
}
if (win == 5) return 1;
// 检查反斜线
for (int i = 0; i < 5; i++) {
if (board[row + i][col - i] == player) {
win++;
} else {
win = 0;
break;
}
}
if (win == 5) return 1;
return 0;
}
4. 主函数
int main() {
int board[15][15];
int player = 1;
int row, col;
initBoard(board);
printBoard(board);
while (1) {
printf("玩家%d,请输入坐标(行 列):", player);
scanf("%d %d", &row, &col);
if (row < 1 || row > 15 || col < 1 || col > 15 || board[row - 1][col - 1] != 0) {
printf("坐标无效,请重新输入。\n");
continue;
}
board[row - 1][col - 1] = player;
printBoard(board);
if (checkWin(board, row - 1, col - 1, player)) {
printf("玩家%d获胜!\n", player);
break;
}
player = player % 2 + 1;
}
return 0;
}
总结
通过以上代码,我们实现了一个简单的五子棋游戏。当然,这个游戏还有很多可以优化的地方,例如增加人机对战、美化界面等。希望这篇文章能帮助你开启编程与五子棋的竞技之旅,祝你在编程的道路上越走越远!
