c语言五子棋

news2024/11/27 20:56:19

下面是一个简单的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. 添加声音效果:可以使用声音效果来增强游戏的体验,例如在玩家获胜时播放欢快的音乐。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1291373.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AIGC:使用变分自编码器VAE实现MINIST手写数字生成

1 变分自编码器介绍 变分自编码器&#xff08;Variational Autoencoders&#xff0c;VAE&#xff09;是一种生成模型&#xff0c;用于学习数据的分布并生成与输入数据相似的新样本。它是一种自编码器&#xff08;Autoencoder&#xff09;的扩展&#xff0c;自编码器是一种用于…

vue中shift+alt+f格式化防止格式掉其它内容

好处就是使得提交记录干净&#xff0c;否则修改一两行代码&#xff0c;习惯性按了一下格式化快捷键&#xff0c;遍地飘红&#xff0c;下次找修改就费时间 1.点击设置图标-设置 2.点击这个转成配置文件 {"extensions.ignoreRecommendations": true,"[vue]":…

C# WPF上位机开发(会员管理软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 好多同学都认为上位机只是纯软件开发&#xff0c;不涉及到硬件设备&#xff0c;比如听听音乐、看看电影、写写小的应用等等。如果是消费电子&#…

DAPP开发【06】nodejs安装与npm路径更换

windows系统在执行用户命令时顺序 windows系统在执行用户命令时&#xff0c;若用户未给出文件的绝对路径&#xff0c; 则 &#xff08;1&#xff09;首先在当前目录下寻找相应的可执行文件、批处理文件等&#xff1b; &#xff08;2&#xff09;若找不到&#xff0c;再依次在系…

深入理解 new 操作符:创建对象的秘密武器(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

【开源】基于Vue.js的就医保险管理系统

文末获取源码&#xff0c;项目编号&#xff1a; S 085 。 \color{red}{文末获取源码&#xff0c;项目编号&#xff1a;S085。} 文末获取源码&#xff0c;项目编号&#xff1a;S085。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 科室档案模块2.2 医生档案模块2.3 预…

pycharm中debug,py文件

1、先把需要的实参传入 2、在合适位置打上断点 3、在小三角旁边右键调用调试 4.步进/步出查看 5.选择单步执行&#xff0c;走的更慢

使用函数计算,数禾如何实现高效的数据处理?

作者&#xff5c;邱鑫鑫&#xff0c;王彬&#xff0c;牟柏旭 公司背景和业务 数禾科技以大数据和技术为驱动&#xff0c;为金融机构提供高效的智能零售金融解决方案&#xff0c;服务银行、信托、消费金融公司、保险、小贷公司等持牌金融机构&#xff0c;业务涵盖消费信贷、小…

用窗函数法设计fir

FIR滤波器的设计可以通过窗函数法进行。窗函数法是一种通过在一定长度的数据窗口内&#xff0c;对数据进行加窗处理&#xff0c;然后再根据窗内数据的特征进行滤波器设计的方法。 以下是一个基本的步骤&#xff1a; 确定所需的滤波器参数&#xff0c;例如滤波器的阶数、过渡带…

[足式机器人]Part2 Dr. CAN学习笔记-数学基础Ch0-4线性时不变系统中的冲激响应与卷积

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-数学基础Ch0-4线性时不变系统中的冲激响应与卷积 1. LIT System&#xff1a;Linear Time Invariant2. 卷积 Convolution3. 单位冲激 Unit Impulse——Dirac Delta 线性时不变系统 &#xff1a; L…

封装校验规则(以及复选框和整体校验)-----Vue3+ts项目

登录校验页面 <script setup lang"ts"> import { ref } from vue import { mobileRules, passwordRules } from /utils/rules const mobile ref() const password ref() </script><!-- 表单 --><van-form autocomplete"off">&l…

Day52力扣打卡

打卡记录 Collapsing Strings&#xff08;Trie树&#xff09; 链接 #include <iostream> #include <algorithm> using namespace std; const int N 2e6 10; int son[N][26], idx, cnt1[N], cnt2[N]; int main() {auto insert [&](string& str, int* c…

换种方式开发软件

前 言 作为程序员&#xff0c;经常苦于项目交付&#xff0c;疲于应对各种需求&#xff0c;一路狂奔&#xff0c;很难有时间停下来思考与抽象&#xff0c;聊起来都是“累”&#xff1b;作为产品经理&#xff0c;最痛苦的莫过于梦醒之后无路可走&#xff0c;心里的苦只有自己知道…

如何统计12.5米高程覆盖率?

无论是卫星影像还是高程DEM数据&#xff0c;覆盖率都是大家非常关心的一个重要参数。 我们曾基于WGS84坐标进行过简单的覆盖率计算&#xff0c;而且面积还包括了海洋区域。 因此&#xff0c;最后得出了一个非常不靠谱&#xff0c;看起来也很不漂亮的数据&#xff1a;12%。 为…

python3安装lifelines

目录 一、环境 二、安装lifelines 出现问题 三、测试导入 一、环境&#xff1a; jupyter notebook中新建ipynb文件 二、安装lifelines pip install --upgrade --no-deps githttps://github.com/CamDavidsonPilon/lifelines.git出现问题&#xff1a; 缺少模块autograd、f…

视频相似度对比 python opencv sift flann

提取SIFT特征的代码&#xff0c;返回关键点kp及特征描述符des def SIFT(frame):# 创建SIFT特征提取器sift cv2.xfeatures2d.SIFT_create()# 提取SIFT特征kp, des sift.detectAndCompute(frame, None)return kp, des 这行代码是使用SIFT&#xff08;Scale-Invariant Feature…

【LeetCode:1466. 重新规划路线 | DFS + 图 + 树】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

SE考研真题总结(一)

本帖开始分享考研真题中设计【软件工程】的部分&#xff0c;预计会出5期左右&#xff0c;敬请期待~ 一.单选题 1.程序编写不是软件质量保障过程~ 静态代码扫描是今年来多数被人提及的软件应用安全解决方案之一&#xff0c;指程序员在编写好代码后无需进行编译&#xff0c;直接…

校园外卖小程序源码系统 附带完整的搭建教程

随着大学生消费水平的提高&#xff0c;对于外卖服务的需求也在不断增加。很多学生都面临着课业繁重、时间紧张等问题&#xff0c;无法亲自到餐厅就餐。因此&#xff0c;开发一款适合校园外卖市场的应用软件&#xff0c;将为广大学生提供极大的便利。 以下是部分代码示例&#…

WSL2+tensorflow-gpu 2.3.0 C++ 源码编译(Linux)

一. gcc版本 wsl2已有gcc 版本为9.4.0,但tensorflow2.3.0需对应gcc7.3.1 tensorflow与cuda cudnn python bazel gcc版本对应关系 故需下载一个低版本的gcc,但同时还想保留较高版本的gcc,那么参考文章:深度学习环境搭建(二): Ubuntu不同版本gcc,CUDA,cuDNN共存,切换解…