c语言应用,三子棋游戏设计

news2024/9/20 22:25:27

在c语言中,若是要实现三子棋游戏,需要我们对c语言的一维和二维数组的使用,函数的声明和调用,以及循环语句分支语句的结合等,这些知识的贯通。

首先,在设计游戏前我们要知道一下三子棋游戏的规则,本质上就是在一个(3x3)的格子棋盘中,两者轮流下棋,每轮可以放置一颗棋子,随后看谁能先将三颗棋子连续放成一条直线,先连成三棋一线者视为胜利,若是棋盘被放满,那就宣布平局。

三子棋所要建立的文件main.c/game.c/game.h

 因为三子棋所需要的代码量较多,所以我们需要进行分文件编写,为此我们先建立如上三个文件,main.c用来存放我们的主函数和调试的一些函数,game.c用来存放我们和游戏相关的函数,game.h则是用来调用和声明game.c文件里的函数。

主函数

想一个程序的思路和设计一个程序,依然是从主函数开始, 首先我们建立一个input函数,这个函数的作用就是用来存放我们的输入数字(也就是在主菜单时,对选项的选择),随后我们用do…while循环语句来构成一个主菜单的框架,进入循环后,我们直接先循环一次里面的程序,运行menu函数(主菜单显示),然后接上printf函数提示输入,scanf函数输入我们要选择的选项。switch函数中,input为1,则开始游戏,进入game函数中;若是input为2则退出游戏;若是input为其他选项,则是提示选择错误,重新选择。

menu函数(主菜单)

主菜单界面很简单,运用printf函数来设计出来即可。

game函数(游戏)

game函数中,是整个游戏的一个游玩过程,也是整个三子棋游戏的核心,我们可以看到里面运用了很多我们自己定义的函数,而这些我们自己定义的函数则构成了这个game函数,接下来我们就来看看这些自己定义的函数到底是什么功能。

game.h(头文件)

这个就是我们在game函数中需要用到的所有自定义函数,同时还有最上面的两个宏定义值(为什么这边要用宏定义,简单来说,就是改数据时方便,我们只需要在这里修改后面的值,就可以变化棋盘的行列大小,若是没有这里的宏定义,那我们之后若是想修改棋盘,则需要把整个程序里所有用到ROW和COL的地方都改掉才行,会很麻烦)

而看到下面我们自己定义的函数,分别有棋盘初始化init_board函数,打印棋盘dispaly_board函数,玩家下棋player_move函数,AI下棋computer_move函数,判断平局is_full函数,判断输赢win_loss函数。这些自定义函数分别实现了整个游戏的各个功能,这样也非常直观。

同时我们要注意,game.h中写的这些自定义函数,其实是对我们写的自定义函数的声明,是为了将我们在game.c源文件中写好的自定义函数给调用到我们的main.c源文件中。所以game.h中的这些都是对我们写的自定义函数的声明,而真正编写的自定义函数,也就是对函数的定义都在game.c源文件中。

init_board函数(棋盘初始化)

display_board函数(打印棋盘)

 player_move函数(玩家下棋) 

computer_move函数(AI下棋)

is_full函数(判断平局)

win_loss函数(判断输赢)

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

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

相关文章

NXopen c++快速分割体

通过对话框选择体以及分割该体的面,实现体的分割,相关资源请访问下载我的资源分享(上传需要时间审核) NXOpen::Session* theSession NXOpen::Session::GetSession();NXOpen::Part* workPart(theSession->Parts()->Work());…

【Linux学习】初始冯诺漫体系结构

文章目录 认识冯诺依曼系统 认识冯诺依曼系统 什么是冯诺依曼体系结构? 冯诺依曼体系结构是一种将程序指令和数据以二进制形式存放在主存储器中,由中央处理器统一控制和执行的计算机系统结构。冯诺依曼体系结构实现了程序的可编程性和硬件与软件的分离&…

mmdeploy框架转化模型

文章目录 1 从源码编译1.1 安装onnxruntime后端1.2 build mmdeploy1.3 install model converter 2 模型转换2.1 deploy用法2.2 示例 1 从源码编译 参考链接 reference2 git clone -b main https://github.com/open-mmlab/mmdeploy.git --recursive cd mmdeploy1.1 安装onnxru…

计算机缺少msvcp120.dll如何解决,7种详细的修复方法分享

msvcr120.dll文件是微软Visual C运行时库的一部分,版本号为12.0。这个DLL文件包含了许多用于支持在Windows上运行的应用程序的重要函数和组件。它是确保某些程序能够正确执行的关键组成部分,特别是那些使用C编写或依赖于某些Microsoft库的程序。 当用户…

C++ | Leetcode C++题解之第44题通配符匹配

题目&#xff1a; 题解&#xff1a; class Solution { public:bool isMatch(string s, string p) {auto allStars [](const string& str, int left, int right) {for (int i left; i < right; i) {if (str[i] ! *) {return false;}}return true;};auto charMatch []…

4月18号总结

java学习 网络编程 1.网络分层 网络分层是将网络通信划分为不同的逻辑层次&#xff0c;每一层负责特定的功能&#xff0c;从而实现网络通信的模块化和标准化。常用的网络分层模型包括OSI&#xff08;开放系统互联&#xff09;模型和TCP/IP模型。 特点和作用&#xff1a; 分…

(C++) 树状数组

目录 一、介绍 二、一维树状数组 2.1 区间长度 2.2 前驱和后继 2.3 查询前缀和 2.4 点更新 三、一维数组的实现 3.1 区间长度函数 3.2 前缀和 3.3 插入/更新 3.4 封装成类 一、介绍 树状数组&#xff08;Binary Indexed Tree&#xff0c;BIT&#xff09;&#xff0c;又称为 …

火绒安全概述

页面简介&#xff1a; 火绒安全是一款集多种安全功能于一体的国产软件&#xff0c;旨在为用户提供全面的计算机保护。本页面将详细介绍火绒安全的核心功能和使用方式。 页面内容概览&#xff1a; 杀毒防护 实时监控&#xff1a;详细介绍火绒安全如何实时检测系统中的文件和程序…

Pyside6:Spacer的使用,布局中控件顶格添加

在普通的布局&#xff0c;如水平或纵向布局中&#xff0c;我们的控件都会保持中间状态&#xff0c;如下&#xff1a; 但有许多情况下 &#xff0c;我们需要将控件布局为如下界面&#xff1a; 在前端开发时&#xff0c;我们很容易通过flex来进行布局&#xff0c;修正它的居中或者…

Github首页美化(updating)

Github首页美化 https://github.com/QInzhengk一、新建仓库二、美化Github首页主页访问量统计仓库状态统计常用语言占比统计社交链接 界面展示 https://github.com/QInzhengk 一、新建仓库 对Github首页进行美化&#xff0c;需要新建一个仓库名和自己 Github 用户名相同的仓库…

【数据库】三、数据库SQL语言命令(基础从入门到入土)

【全文两万多字&#xff0c;涵盖大部分常见情况&#xff0c;建议点赞收藏】 目录 文章目录 目录安装SQL语言1.使用2.DATABASE查看所有库新建数据库修改数据库删除数据库连接数据库 3.TABLE创建表查看库所有表删除表查看表信息重命名表修改表字段&#xff08;列&#xff09;表中…

Java---ideaIU-2023.1专业版使用以及安装方法

介绍 JetBrains 是一家专注于创建智能开发工具的前沿软件公司,包括:行业中领头的 Java IDE – IntelliJ IDEA,以及 Kotlin 编程语言。旗下常用的软件有IntelliJ IDEA、PhpStorm、RubyMine、Rider、WebStorm、goland、CLion、Pycharm&#xff0c;本安装包集成以上8款软件&#…

最大层内元素和

题目链接 最大层内元素和 题目描述 注意点 返回层内元素之和 最大 的那几层&#xff08;可能只有一层&#xff09;的层号&#xff0c;并返回其中 最小 的那个树中的节点数在 [1, 10000]范围内-10^5 < Node.val < 10^5 解答思路 广度优先遍历树&#xff0c;使用队列存…

windows系统CUDA的详细安装教程

CUDA系列 文章目录 CUDA系列前言一、CUDA简介二、安装配置视频教程三、CUDA的下载及安装3.1 环境检查3.2 CUDA 安装包下载3.3 安装CUDA&#xff08;略&#xff09;3.4 验证CUDA是否安装成功 四、cuDNN的下载及安装4.1 cuDNN下载4.2 cuDNN配置 五、配置环境变量六、下载并配置zl…

Day4 商品管理

Day4 商品管理 这里会总结构建项目过程中遇到的问题&#xff0c;以及一些个人思考&#xff01;&#xff01; 学习方法&#xff1a; 1 github源码 文档 官网 2 内容复现 &#xff0c;实际操作 项目源码同步更新到github 欢迎大家star~ 后期会更新并上传前端项目 编写品牌服务 …

LangChain入门指南:构建高可复用、可扩展的LLM应用程序 PDF书籍分享

今天又来给大家推荐一本大模型方面的书籍<Langchain入门指南>这本书专门为那些对自然语言处理技术感兴趣的读者提供了系统的LLM应用开发指南。全书分为11章&#xff0c;从LLM基础知识开始&#xff0c;通过LangChain这个开源框架为读者解读整个LLM应用开发流程。 下载当前…

轻松记录收支明细,详细记录每一笔收支,通过借款日期快速查找借款信息

财务管理对于个人和企业来说都至关重要。一份清晰、详尽的收支明细记录&#xff0c;不仅能帮助我们了解资金流向&#xff0c;还能在需要时提供有力的证据。因此&#xff0c;高效记录收支明细并轻松掌握财务状况成为了每个人的必备技能 第一步进入晨曦记账本主页面&#xff0c;…

ros2_control【B站WMGIII教学学习记录】1

资源 https://www.bilibili.com/video/BV1ku411G7UR? 学习过程中存在bug&#xff0c;记录一下 1 Q:"package ‘joint_state_publisher_gui’ not found, searching: [/home A: sudo apt install ros-humble-joint-state-publisher2 https://fishros.org.cn/forum/to…

抢先看!LEADTOOLS V23 全新版发布,预览全新产品线布局!

LEADTOOLS (Lead Technology)由Moe Daher and Rich Little创建于1990年&#xff0c;其总部设在北卡罗来纳州夏洛特。LEAD的建立是为了使Daher先生在数码图象与压缩技术领域的发明面向市场。在过去超过30年的发展历程中&#xff0c;LEAD以其在全世界主要国家中占有的市场领导地位…

SpringCloud引入SpringBoot Admin

Spring Boot Admin可以监控和管理Spring Boot&#xff0c;能够将 Actuator 中的信息进行界面化的展示&#xff0c;也可以监控所有 Spring Boot 应用的健康状况&#xff0c;提供警报功能。 1. 创建SpringBoot工程 2. 引入相关依赖 <dependency><groupId>com.alib…