c语言编程笔录

您现在的位置是:首页 > C语言 > C#

C#

基于C语言实现三子棋游戏的示例代码

卢木仲 2023-08-09C#
前言三子棋是一种简单而又经典的策略游戏,通过在一个3x3的棋盘上放置棋子形成连线来赢得比赛。在这个问题中,我们将使用C语言来实现一个简单的三子棋游戏。代码实现#includecharboard[3][3]={{

前言

三子棋是一种简单而又经典的策略游戏,通过在一个3x3的棋盘上放置棋子形成连线来赢得比赛。在这个问题中,我们将使用C语言来实现一个简单的三子棋游戏。

代码实现

#include 

char board[3][3] = {
    {' ', ' ', ' '},
    {' ', ' ', ' '},
    {' ', ' ', ' '}
};

void draw_board() {
    printf("  1 2 3\n");
    for (int i = 0; i < 3; i++) {
        printf("%d ", i+1);
        for (int j = 0; j < 3; j++) {
            printf("%c", board[i][j]);
            if (j < 2) {
                printf("|");
            }
        }
        printf("\n");
        if (i < 2) {
            printf("  -----\n");
        }
    }
}

int check_winner() {
    // 检查行
    for (int i = 0; i < 3; i++) {
        if (board[i][0] == board[i][1] && board[i][0] == board[i][2] && board[i][0] != ' ') {
            return 1;
        }
    }
    // 检查列
    for (int j = 0; j < 3; j++) {
        if (board[0][j] == board[1][j] && board[0][j] == board[2][j] && board[0][j] != ' ') {
            return 1;
        }
    }
    // 检查对角线
    if ((board[0][0] == board[1][1] && board[0][0] == board[2][2] && board[0][0] != ' ') ||
        (board[0][2] == board[1][1] && board[0][2] == board[2][0] && board[0][2] != ' ')) {
        return 1;
    }
    return 0;
}

int main() {
    int player = 1;
    int row, col;
    int moves = 0;

    while (1) {
        draw_board();
        printf("Player %d, enter row (1-3): ", player);
        scanf("%d", &row);
        printf("Player %d, enter col (1-3): ", player);
        scanf("%d", &col);

        if (row < 1 || row > 3 || col < 1 || col > 3) {
            printf("Invalid move, please try again.\n");
            continue;
        }
        if (board[row-1][col-1] != ' ') {
            printf("That spot is already taken, please try again.\n");
            continue;
        }

        board[row-1][col-1] = (player == 1) ? 'X' : 'O';
        moves++;

        if (check_winner()) {
            draw_board();
            printf("Player %d wins!\n", player);
            break;
        } else if (moves == 9) {
            draw_board();
            printf("It's a tie!\n");
            break;
        }

        player = (player == 1) ? 2 : 1;
    }

    return 0;
}

代码分析

这段代码实现了一个基本的三子棋游戏。游戏使用一个3x3的二维数组`board`表示棋盘,其中每个元素代表棋盘上的一个位置,初始值为空格字符。

函数`draw_board`负责绘制当前的棋盘状态。它通过遍历棋盘数组并按照格式打印出棋盘的当前状态,使用水平和垂直线条分隔行和列,方便玩家操作。

函数`check_winner`检查当前棋盘状态是否有获胜者。它通过检查行、列和对角线是否有连续的相同棋子来判断是否有玩家获胜。

在`main`函数中,游戏开始时初始化玩家为1,并设置变量`moves`来跟踪已经进行的步数。游戏主循环中,先绘制当前的棋盘状态,然后提示当前玩家输入行和列的位置。之后检查输入的合法性,如果输入无效或者位置已经被占据,则重新提示输入。

当玩家输入的位置合法后,会把玩家对应的棋子放置在棋盘上,并增加步数。然后检查当前棋盘状态,如果有玩家获胜,打印出获胜信息并结束游戏。如果没有玩家获胜且步数已经达到9步(棋盘已满),则宣布平局并结束游戏。最后,切换到另一个玩家继续游戏。

总结

通过这个代码示例,我们使用C语言实现了一个简单的三子棋游戏。代码利用二维数组来表示棋盘,通过循环和条件判断来处理玩家输入和判断胜负。

C语言作为一种多用途的编程语言,适合用于开发各种类型的软件和游戏。通过这个例子,我们可以看到C语言的一些基本特性,如数组、循环和条件语句,以及输入/输出操作的使用。

在实际项目中,我们可以基于这个简单的游戏实现更复杂的功能,如实现人机对战、加入图形界面等。希望这个示例能够帮助您理解和运用C语言的基础知识,去实现更有趣和有用的应用。

文章评论