欢迎访问宙启技术站
智能推送

C语言版三子棋游戏实现代码

发布时间:2023-05-17 11:56:23

三子棋是一款简单而又有趣的策略游戏,它可以锻炼我们的思考和逻辑能力。本文将介绍如何使用C语言实现三子棋游戏。

1.游戏规则

三子棋是一种简化版的五子棋,在一个3x3的方格中进行。玩家轮流将黑子或白子放入空格中,谁先使三个相同颜色的棋子在同一直线上(包括横线、竖线、对角线)相连,谁就赢得胜利。

2.实现思路

在实现三子棋游戏时,需要考虑以下几个方面:

2.1 游戏的显示界面

在游戏开始前,需要先显示游戏界面,以便玩家在游戏中操作。可以使用字符数组来表示游戏界面,以便随时更新棋盘上的棋子位置。

2.2 棋子的落子位置

玩家可以选择在棋盘上落子,需要获取玩家输入的坐标位置,然后在棋盘上更新对应的棋子。

2.3 游戏的输赢判断

在玩家每次落子后,需要进行游戏的输赢判断,即判断是否有三个相同颜色的棋子在同一直线上相连。如果有,则判定该玩家为赢家。

3.代码实现

以下是使用C语言实现三子棋游戏的代码。

#include <stdio.h>

void show_board(char board[3][3])

{

    printf("

");

    for (int i = 0; i < 3; i++) {

        for (int j = 0; j < 3; j++) {

            printf("%c ", board[i][j]);

        }

        printf("

");

    }

    printf("

");

}

int check_win(char board[3][3], char player)

{

    for (int i = 0; i < 3; i++) {

        if (board[i][0] == player && board[i][1] == player && board[i][2] == player) {

            return 1;

        }

        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[2][0] == player && board[1][1] == player && board[0][2] == player) {

        return 1;

    }

    return 0;

}

int main()

{

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

    char player = 'X';

    int row, col;

    printf("Welcome to the game of Tic Tac Toe!

");

    printf("Player 1 is X and Player 2 is O.

");

    show_board(board);

    for (int i = 0; i < 9; i++) {

        printf("Player %c, enter row (0-2): ", player);

        scanf("%d", &row);

        printf("Player %c, enter col (0-2): ", player);

        scanf("%d", &col);

        if (board[row][col] == '-') {

            board[row][col] = player;

        } else {

            printf("Invalid move. Please try again.

");

            i--;

            continue;

        }

        show_board(board);

        if (check_win(board, player)) {

            printf("Player %c wins!

", player);

            return 0;

        }

        if (player == 'X') {

            player = 'O';

        } else {

            player = 'X';

        }

    }

    printf("It's a tie!

");

    return 0;

}

在上述代码中,我们使用char类型的二维数组board来表示棋盘,'-'表示该位置未落子,'X'表示玩家1的棋子,'O'表示玩家2的棋子。

在游戏的主循环中,先提示当前玩家,然后获取玩家的输入坐标位置,并进行输入的有效性检查。如果输入的坐标位置已经存在棋子,则提示无效输入,并重新获取输入。然后更新棋盘上对应位置的棋子,显示棋盘,并进行输赢判断。

check_win函数用来判断当前玩家是否赢得了比赛,通过判断棋盘中是否有三个相同的棋子在同一直线上即可。

4.运行结果

以下是运行上述代码的结果:

Welcome to the game of Tic Tac Toe!

Player 1 is X and Player 2 is O.

- - -

- - -

- - -

Player X, enter row (0-2): 1

Player X, enter col (0-2): 1

- - -

- X -

- - -

Player O, enter row (0-2): 0

Player O, enter col (0-2): 0

O - -

- X -

- - -

Player X, enter row (0-2): 0

Player X, enter col (0-2): 1

O X -

- X -

- - -

Player O, enter row (0-2): 2

Player O, enter col (0-2): 0

O X -

- X -

O - -

Player X, enter row (0-2): 2

Player X, enter col (0-2): 2

O X -

- X -

O - X

Player X wins!