c语言五子棋

下面是一个简单的C语言五子棋实现示例:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define BOARD_SIZE 15
  4. char board[BOARD_SIZE][BOARD_SIZE];
  5. void init_board() {
  6.     int i, j;
  7.     for (i = 0; i < BOARD_SIZE; i++) {
  8.         for (j = 0; j < BOARD_SIZE; j++) {
  9.             board[i][j] = '-';
  10.         }
  11.     }
  12. }
  13. void print_board() {
  14.     int i, j;
  15.     printf("\n");
  16.     for (i = 0; i < BOARD_SIZE; i++) {
  17.         for (j = 0; j < BOARD_SIZE; j++) {
  18.             printf("%c ", board[i][j]);
  19.         }
  20.         printf("\n");
  21.     }
  22. }
  23. int check_win() {
  24.     int i, j, count;
  25.     // check horizontal
  26.     for (i = 0; i < BOARD_SIZE; i++) {
  27.         for (j = 0; j < BOARD_SIZE - 4; j++) {
  28.             if (board[i][j] == board[i][j + 1] && board[i][j] == board[i][j + 2] && board[i][j] == board[i][j + 3] && board[i][j] == board[i][j + 4]) {
  29.                 return 1;
  30.             }
  31.         }
  32.     }
  33.     // check vertical
  34.     for (i = 0; i < BOARD_SIZE - 4; i++) {
  35.         for (j = 0; j < BOARD_SIZE; j++) {
  36.             if (board[i][j] == board[i + 1][j] && board[i][j] == board[i + 2][j] && board[i][j] == board[i + 3][j] && board[i][j] == board[i + 4][j]) {
  37.                 return 1;
  38.             }
  39.         }
  40.     }
  41.     // check diagonals
  42.     for (i = 0; i < BOARD_SIZE - 4; i++) {
  43.         for (j = 0; j < BOARD_SIZE - 4; j++) {
  44.             if (board[i][j] == board[i + 1][j + 1] && board[i][j] == board[i + 2][j + 2] && board[i][j] == board[i + 3][j + 3] && board[i][j] == board[i + 4][j + 4]) {
  45.                 return 1;
  46.             }
  47.             if (board[i][j] == board[i + 1][j - 1] && board[i][j] == board[i + 2][j - 2] && board[i][j] == board[i + 3][j - 3] && board[i][j] == board[i + 4][j - 4]) {
  48.                 return 1;
  49.             }
  50.         }
  51.     }
  52.     return 0;
  53. }
  54. int main() {
  55.     int i, j, turn, count;
  56.     init_board();
  57.     turn = 0;  // white's turn first
  58.     while (!check_win()) {
  59.         printf("It's %s's turn. Input the position (row column) you want to drop the stone. Enter q to quit.\n", (turn == 0) ? "white" : "black");
  60.         scanf("%d %d", &i, &j);
  61.         if (board[i][j] != '-') {
  62.             printf("Error: the position is already occupied.\n");

}

    // check anti-diagonals

    for (i = 0; i < BOARD_SIZE - 4; i++) {

        for (j = 4; j < BOARD_SIZE; j++) {

            if (board[i][j] == board[i + 1][j - 1] && board[i][j] == board[i + 2][j - 2] && board[i][j] == board[i + 3][j - 3] && board[i][j] == board[i + 4][j - 4]) {

                return 1;

            }

        }

    }

    return 0;

}

void game_over() {

    printf("Game over!\n");

    print_board();

    exit(0);

}

int main() {

    int i, j, turn = 0;

    init_board();

    while (1) {

        print_board();

        if (check_win()) {

            game_over();

        }

        if (turn % 2 == 0) {

            printf("Player 1, make your move (row col): ");

        } else {

            printf("Player 2, make your move (row col): ");

        }

        scanf("%d %d", &i, &j);

        if (i < 0 || i >= BOARD_SIZE || j < 0 || j >= BOARD_SIZE) {

            printf("Invalid move!\n");

            continue;

        }

        if (board[i][j] != '-') {

            printf("Invalid move! The position is already occupied.\n");

            continue;

        }

        board[i][j] = (turn % 2 == 0) ? 'X' : 'O';

        turn++;

    }

    return 0;

}

上面的代码实现了一个简单的五子棋游戏,但是还有一些可以改进的地方。以下是一些建议:

  1. 添加游戏规则的说明:在游戏开始前,可以打印出游戏规则,让玩家知道如何进行游戏。
  2. 改进输入验证:在读入玩家输入的时候,可以使用更严谨的验证方法,以确保玩家输入的是合法的位置。
  3. 添加提示信息:当玩家落子后,可以输出一些提示信息,例如告诉玩家他们的棋子已经胜利了或者游戏已经结束了。
  4. 添加AI对手:可以使用简单的AI算法来让计算机自动进行游戏,这样玩家就可以和计算机进行对战了。
  5. 优化界面:可以使用图形界面来增强游戏的体验,例如使用GUI库来显示游戏板面和菜单等。
  6. 增加难度等级:可以添加多个难度等级,让玩家可以选择不同难度的对手进行对战。
  7. 保存游戏进度:可以让玩家随时保存和恢复游戏进度,以便他们在需要离开时能够继续游戏。
  8. 添加多人对战:可以添加多人对战模式,让多个玩家可以在同一台计算机上进行对战。
  9. 优化算法:可以使用更高效的算法来检查游戏是否结束,以提高游戏的性能。
  10. 添加声音效果:可以使用声音效果来增强游戏的体验,例如在玩家获胜时播放欢快的音乐。
  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

crmeb专业二开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值