github 地址: https://github.com/FreddieGeorge/tic-tac-toe/.
介绍
这是一个C语言编写的简易井字棋游戏,带输入有效判断,在命令终端运行
运行效果如下
开始界面
游戏界面
关键函数
游戏进行函数
/**
* @brief Game engine ,run the tic tac toe game
*
* @return int the winner
* 0:tie
* 1:player 1 wins
* 2:player 2 wins
*/
int game_engine()
{
int winner = 0; //定义赢家
int chess_bord[3][3] =.... //定义棋盘为全0
int step = 0; //定义步数
DisplayBoard(chess_bord); //展示棋盘
//玩家1先手,每人下一子,一共八步
//while循环后玩家1再下一步
while (step != 8)
{
//获取用户输入并判断是否有效,并改变棋盘数组
//参数1代表是玩家1
Change_chess_board(chess_bord, 1);
//每下一子对此时的棋盘矩阵进行判断是否有三子相连
//若有则返回winner,没有则继续循环
if (isWin(chess_bord))
return winner = isWin(chess_bord);
Change_chess_board(chess_bord, 2);
if (isWin(chess_bord))
return winner = isWin(chess_bord);
step += 2;
}
Change_chess_board(chess_bord, 1);
if (isWin(chess_bord))
return winner = isWin(chess_bord);
//下完9步后仍未分出胜负,则平手
return winner;
}
判断胜负
int isWin(int chess_bord[3][3])
{
int ret = 0;
const int LENGTH = 3;
int i = 0;
for (i = 0; i < LENGTH; i++)
{
//横
if (chess_bord[i][0] == chess_bord[i][1] && chess_bord[i][1] == chess_bord[i][2] && chess_bord[i][0] != 0)
return ret = chess_bord[i][0];
//竖
if (chess_bord[0][i] == chess_bord[1][i] && chess_bord[1][i] == chess_bord[2][i] && chess_bord[0][i] != 0)
return ret = chess_bord[0][i];
//斜
if (chess_bord[0][0] == chess_bord[1][1] && chess_bord[1][1] == chess_bord[2][2] && chess_bord[0][0] != 0)
return ret = chess_bord[0][0];
if (chess_bord[0][2] == chess_bord[1][1] && chess_bord[1][1] == chess_bord[2][0] && chess_bord[0][2] != 0)
return ret = chess_bord[0][2];
}
return ret;
}
剩余函数例如显示棋盘,改变棋盘请移步github