c语言编程笔录

首页 > C语言 > c语言

c语言

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

更新时间:2023-08-09

前言

三子棋游戏是一种简单且有趣的棋盘游戏,它通常由两名玩家进行对战。在这个游戏中,棋盘由一个3x3的方格组成,玩家轮流在空白方格中放置自己的棋子,目标是通过先将自己的棋子连成一条直线而获胜。

代码实现

#include 

char board[3][3];  // 棋盘数组
char currentPlayer;  // 当前玩家

void initializeBoard() {
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            board[i][j] = '-';
        }
    }
}

void printBoard() {
    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]);
        }
        printf("\n");
    }
}

int isBoardFull() {
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            if (board[i][j] == '-') {
                return 0;  // 棋盘还有空余位置
            }
        }
    }
    return 1;  // 棋盘已满
}

int isWinner(char player) {
    // 检查行
    for (int i = 0; i < 3; i++) {
        if (board[i][0] == player && board[i][1] == player && board[i][2] == player) {
            return 1;
        }
    }
    // 检查列
    for (int i = 0; i < 3; i++) {
        if (board[0][i] == player && board[1][i] == player && board[2][i] == player) {
            return 1;
        }
    }
    // 检查对角线
    if (board[0][0] == player && board[1][1] == player && board[2][2] == player) {
        return 1;
    }
    if (board[0][2] == player && board[1][1] == player && board[2][0] == player) {
        return 1;
    }
    return 0;
}

void playGame() {
    initializeBoard();
    currentPlayer = 'X';

    while (1) {
        printf("当前玩家: %c\n", currentPlayer);
        printBoard();

        int row, column;
        printf("请输入你要下棋的行和列: ");
        scanf("%d %d", &row, &column);

        // 检查输入的行和列是否合法
        if (row < 1 || row > 3 || column < 1 || column > 3) {
            printf("无效的行或列,请重新输入!\n");
            continue;
        }

        // 将玩家的棋子放置到对应的行和列
        if (board[row - 1][column - 1] == '-') {
            board[row - 1][column - 1] = currentPlayer;
        } else {
            printf("该位置已被占用,请重新输入!\n");
            continue;
        }

        // 检查游戏是否结束
        if (isWinner(currentPlayer)) {
            printf("玩家 %c 获胜!\n", currentPlayer);
            break;
        } else if (isBoardFull()) {
            printf("游戏结束,平局!\n");
            break;
        }

        // 切换玩家
        currentPlayer = (currentPlayer == 'X') ? 'O' : 'X';
    }
}

int main() {
    printf("欢迎来到三子棋游戏!\n");
    playGame();
    return 0;
}

代码解释

这段代码使用C语言实现了一个简单的三子棋游戏。代码中定义了一个3x3的棋盘数组 "board",初始化为空白。代码使用循环结构来实现游戏的逻辑流程,其中每次循环表示一个玩家的回合。玩家输入行和列来放置棋子,然后判断是否有玩家胜利或平局,若没有则切换到另一个玩家。

代码中包含了一些辅助函数,例如"initializeBoard"函数用于初始化棋盘数组,"printBoard"函数用于打印当前棋盘状态,"isBoardFull"函数用于检查棋盘是否已满(平局),"isWinner"函数用于检查是否有玩家胜利。

总结

通过这个简单的示例代码,我们可以理解如何使用C语言实现一个三子棋游戏。代码中的逻辑相对简单,但可以作为一个基础框架,你可以根据自己的需求扩展和改进游戏规则、增加AI玩家等功能。希望这个示例能帮助你更好地理解C语言和游戏开发的基本概念。