zl程序教程

您现在的位置是:首页 >  其他

当前栏目

C语言井字棋游戏

2023-09-27 14:21:00 时间


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