c语言编程笔录

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

C#

C语言实现三子棋源代码

张吉惟 2023-08-09C#
前言三子棋是一种简单的棋类游戏,通常在一个3x3的棋盘上进行。游戏的目标是在棋盘上先形成连续的三个棋子,横排、竖排或对角线,而且没有对手的棋子阻挡。在这个问题中,我们需要使用C语言来实现一个三

前言

三子棋是一种简单的棋类游戏,通常在一个3x3的棋盘上进行。游戏的目标是在棋盘上先形成连续的三个棋子,横排、竖排或对角线,而且没有对手的棋子阻挡。在这个问题中,我们需要使用C语言来实现一个三子棋的游戏。

代码实现

下面是一个使用C语言实现三子棋游戏的简单示例代码:

#include 

// 定义棋盘大小
#define SIZE 3

// 定义玩家标记
#define PLAYER1 'X'
#define PLAYER2 'O'

// 初始化棋盘
void initBoard(char board[SIZE][SIZE]) {
    for (int i = 0; i < SIZE; i++) {
        for (int j = 0; j < SIZE; j++) {
            board[i][j] = ' ';
        }
    }
}

// 打印棋盘
void printBoard(char board[SIZE][SIZE]) {
    for (int i = 0; i < SIZE; i++) {
        for (int j = 0; j < SIZE; j++) {
            printf("%c ", board[i][j]);
        }
        printf("\n");
    }
}

// 判断是否获胜
int checkWin(char board[SIZE][SIZE], char player) {
    // 检查行
    for (int i = 0; i < SIZE; i++) {
        int count = 0;
        for (int j = 0; j < SIZE; j++) {
            if (board[i][j] == player) {
                count++;
            }
        }
        if (count == SIZE) {
            return 1;
        }
    }

    // 检查列
    for (int j = 0; j < SIZE; j++) {
        int count = 0;
        for (int i = 0; i < SIZE; i++) {
            if (board[i][j] == player) {
                count++;
            }
        }
        if (count == SIZE) {
            return 1;
        }
    }

    // 检查对角线
    int count = 0;
    for (int i = 0; i < SIZE; i++) {
        if (board[i][i] == player) {
            count++;
        }
    }
    if (count == SIZE) {
        return 1;
    }

    count = 0;
    for (int i = 0; i < SIZE; i++) {
        if (board[i][SIZE - i - 1] == player) {
            count++;
        }
    }
    if (count == SIZE) {
        return 1;
    }

    return 0;
}

// 主函数
int main() {
    char board[SIZE][SIZE];
    initBoard(board);
    char currentPlayer = PLAYER1;

    while (1) {
        // 打印当前棋盘
        printBoard(board);

        // 获取玩家的下棋位置
        int row, col;
        printf("玩家 %c,请输入下棋位置(行 列):", currentPlayer);
        scanf("%d %d", &row, &col);

        // 验证下棋位置是否合法
        if (row < 0 || row >= SIZE || col < 0 || col >= SIZE || board[row][col] != ' ') {
            printf("无效的下棋位置,请重新输入!\n");
            continue;
        }

        // 在棋盘上下棋
        board[row][col] = currentPlayer;

        // 判断是否获胜
        if (checkWin(board, currentPlayer)) {
            printf("玩家 %c 获胜!\n", currentPlayer);
            break;
        }

        // 切换玩家
        if (currentPlayer == PLAYER1) {
            currentPlayer = PLAYER2;
        } else {
            currentPlayer = PLAYER1;
        }
    }

    return 0;
}

代码解释

这个代码中,我们使用了一个二维字符数组来表示棋盘,每个元素可以是玩家的标记('X'或'O'),或者为空格(' ')。代码中主要包含以下几个函数:

  1. initBoard:用于初始化棋盘,将所有元素设置为空格。
  2. printBoard:用于打印当前的棋盘状态。
  3. checkWin:用于判断某个玩家是否获胜。
  4. main函数:游戏的主循环,负责接收玩家的输入,更新棋盘状态,判断是否获胜。

总结

通过这段代码,我们实现了一个简单的C语言版本的三子棋游戏。玩家可以在控制台上进行游戏,输入行和列来指定下棋的位置。代码中使用了一些基本的控制流程和数组操作,通过循环和条件判断来实现游戏的核心逻辑。如果你对二维数组和简单的棋类游戏实现感兴趣,这段代码可以作为学习和参考的基础。

文章评论