返回

用代码还原记忆,三子棋/多子棋带你重温儿时欢乐时光

后端

前言

三子棋和多子棋都是经典的棋类游戏,它们凭借简单的规则和丰富的策略,吸引了无数玩家。今天,我们将使用C语言来实现这两个游戏的代码,并详细讲解实现过程。

三子棋

三子棋的规则非常简单,双方轮流在9x9的棋盘上放置自己的棋子,先连成三子一行、一列或一斜线的一方获胜。三子棋的代码实现非常简单,我们只需要创建一个9x9的二维数组来表示棋盘,然后根据玩家的输入,在相应的位置放置棋子。

#include <stdio.h>

// 定义棋盘大小
#define BOARD_SIZE 9

// 定义棋子类型
typedef enum {
    EMPTY,
    PLAYER1,
    PLAYER2
} player_t;

// 定义棋盘
player_t board[BOARD_SIZE][BOARD_SIZE];

// 检查是否有人获胜
int check_win(player_t player) {
    // 检查水平方向
    for (int i = 0; i < BOARD_SIZE; i++) {
        int count = 0;
        for (int j = 0; j < BOARD_SIZE; j++) {
            if (board[i][j] == player) {
                count++;
            } else {
                count = 0;
            }
            if (count == 3) {
                return 1;
            }
        }
    }

    // 检查竖直方向
    for (int j = 0; j < BOARD_SIZE; j++) {
        int count = 0;
        for (int i = 0; i < BOARD_SIZE; i++) {
            if (board[i][j] == player) {
                count++;
            } else {
                count = 0;
            }
            if (count == 3) {
                return 1;
            }
        }
    }

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

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

    return 0;
}

// 主函数
int main() {
    // 初始化棋盘
    for (int i = 0; i < BOARD_SIZE; i++) {
        for (int j = 0; j < BOARD_SIZE; j++) {
            board[i][j] = EMPTY;
        }
    }

    // 游戏循环
    while (1) {
        // 显示棋盘
        for (int i = 0; i < BOARD_SIZE; i++) {
            for (int j = 0; j < BOARD_SIZE; j++) {
                if (board[i][j] == EMPTY) {
                    printf(" ");
                } else if (board[i][j] == PLAYER1) {
                    printf("X");
                } else if (board[i][j] == PLAYER2) {
                    printf("O");