一、问题描述
用C语言实现一个简易的三子棋游戏
二、基本流程
1、三子棋的玩法
三子棋是在一个九宫格的棋盘里轮流下棋,假定玩家先手,玩家下完,轮到电脑下棋,如果可以将自己下的棋在某一行或者某一列或者两个对角线连成三个,即可获胜,否则就是平局。
2、游戏实现的逻辑
(1)、打印一个游戏菜单界面,选择玩游戏或者退出
(2)、进入游戏,玩家先下,玩家输入坐标,接着到电脑下
(3)、判断输赢,每下完一次就进行一次判定
(4)、游戏结束
三、步骤
1、游戏菜单
void menu()
{
printf("***************************\n");
printf("****** 1、play ***********\n");
printf("****** 0、exit ***********\n");
printf("***************************\n");
}
2、创建棋盘,并初始化
//创建一个棋盘,3x3的棋盘,棋盘要存储数据,即下的棋-- * # 两种符号
char board[ROW][COL] = {
0 };
//初始化棋盘,刚开始棋盘是空的,放入空格
init_board(board, ROW, COL);
//打印棋盘 3x3的棋盘
print_board(board,ROW,COL);
3、玩家下棋
void player_board(char board[ROW][COL],int row,int col)
{
printf("玩家下棋\n");
int x = 0;
int y = 0;
while (1)
{
printf("请输入坐标:>");
scanf("%d %d", &x, &y);
//限定坐标范围 并且要判定要下的地方是否已经有棋子
if (x<= row && y<= col && board[x-1][y-1]!='#')
{
board[x - 1][y - 1] = '*';
break;
}
else
printf("坐标违规,重新输入\n");
}
}
4、电脑下棋
void conputer_board(char board[ROW][COL], int row, int col)
{
printf("电脑下棋\n");
int x = 0;
int y = 0;
while (1)
{
x = rand()%row;//坐标范围 0~2
y = rand()%col;
if (board[x][y] != ' ')
continue;
board[x][y] = '#';
break;
}
}
5、判断输赢
//判断输赢
//一共有以下几种情况
// 1、玩家赢了 返回 *
// 2、电脑赢了 返回 #
// 3、平局 返回 E
// 4、继续游戏 返回 C
//
static int is_full(char board[ROW][COL], int row, int col)
{
int i = 0;
for (i = 0; i < row; i++)
{
int j = 0;
for (j = 0; j < col; j++)
{
if (board[i][j] == ' ')
return 0;
}
}
return 1;
}
char is_win(char board[ROW]