C语语言言实实现现三三子子棋棋的的步步骤骤和和代代码码详详解解
一一、、问问题题描描述述
用c语言实现三子棋。
二二、、基基本本流流程程
在写三子棋的代码之前,我们来看看实现这个游戏的逻 :
1.菜单界面选择开始或者退出游戏。
2.创建棋盘并初始化。
3.打印棋盘。
4 .玩家落子(玩家输入行列坐标的方式来落子),'x'表示玩家落子。
5.判定胜负关系(输,赢,和棋),'q'表示和棋。
6.电脑落子(随机位置落子) ,'o'表示电脑落子。
7.判定胜负关系。
8.回到 步骤2 继续执行。
三三、、步步骤骤
1.菜菜单单界界面面
1.开始游戏 0.退出游戏
int menu(){
printf("\n");
printf("1.开始游戏\n");
printf("0.退出游戏\n");
printf("\n");
int choice = 0;
printf("请输入你的选择:");
scanf("%d", &choice);
return choice;
}
2.创创建建棋棋盘盘
棋盘:使用3行3列的二维数组来表示,元素类型是char。
使用宏定义的原因:
1.推高代码可读性,后续代码中遇到3,方便理解含义。
2.提高扩展性,如果将来要修改棋盘尺寸,代码修改会很方便。
define MAX_ROW 3
define MAX_COL 3
char chessBoard[MAX_ROW][MAX_COL] = { 0 };
3.棋棋盘盘初初始始化化
' '表示棋盘上的空白区域
void init(char chessBoard[MAX_ROW][MAX_COL]){
for (int row = 0; row < MAX_ROW; row++){
for (int col = 0; col < MAX_COL; col++){
chessBoard[row][col] = ' ';
}
}
}
4.打打印印棋棋盘盘
(1)简陋方法:
void print_chessBoard(char chessBoard[MAX_ROW][MAX_COL]){
for (int row = 0; row
for (int col = 0; col < MAX_COL; col++){
printf("%c",chessBoard[row][col]) ;
}
printf("\n");
}
}
结果:
注意:
这里不是棋盘没打印出来,而是我们使用' '表示空白区域,所以我们看到的棋盘是一片黑色。
这样看的不是很清楚,所以我们选用更加美观的方法打印。
(2)美观方法:
void print_chessBoard(char chessBoard[MAX_ROW][MAX_COL]){
printf("++++\n");
for (int row = 0; row
printf("| %c | %c | %c |\n", chessBoard[row][0],
chessBoard[row][1], chessBoard[row][2]);
printf("++++\n");
}
}
结果:
5.玩玩家家落落子子
玩家输入行列坐标表示落子,使用'x'表示玩家落子。
注意:
1.玩家落子需要在棋盘范围内。
2.玩家要在棋盘上空的地方落子。
3.如果输入的坐标不满足要重新输入。
void playerMove(char chessBoard[MAX_ROW][MAX_COL]){
while