| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C语言实现三子棋(13步) -> 正文阅读 |
|
[C++知识库]C语言实现三子棋(13步) |
实现三子棋代码,需要明确版块,然后分版块去使用,下面我尽力去教大家如何敲。先看一下效果吧:(分支和循环、函数、数组这些基础知识要有) 1.首先分装3个版块,test.c,game.c,game.h test.c:实现基本主函数 game.c:实现游戏模块 game.h:实现游戏函数的声明 2.然后我们实现一个主页面(用printf打印就OK),并且有功能 这里我们主函数里面就分装1个test()函数,test()里面用函数menu()打印; 3.利用dowhile循环和switch来实现主页面具体的功能 这里巧妙利用input=0返回0时结束程序 ,所以前面设计的时候0为exit,1为play。 4.现在我们来实现游戏的主体功能(具体功能是函数game()//注意这里game的函数要写在test()上面,不然编译器识别不出来) 首先我们要利用二维数组来创建棋盘的值,所以这里行我们设置成ROW,列设置成CO,因为我们后面大量需要用到行和列,为了确保普遍性,我们用#define来定义ROW ,COL ?5.下面我们初始化棋盘, 在game.h里面
?在game.c里面
test.c里面:
下面很多函数都是这样,先声明后定义,都一样,我举一个例子就行,以后我就直接在game.c里面敲代码了。 7.初始化棋盘的具体代码
8.打印棋盘(这里比较绕,需要花一点功夫) 版本一:该版本只使用与3x3的模式,如果换成5x5就不行了,所以我们为了具有普遍性,还需要进一步改进,先看看第一种版本:
首先我们需要要把打印分成上下两部分,一份打印? |? ?|? ?另一部分打印---|---|---,注意到版本一,if(i<row-1)这里的思想明白了,后面的代码就能明白,我们是row-1行打印---|---|---,并不是所以都打印,同理|是col-1才打印。总代码如下:一部分打印数据,一部分打印分割行。注意到我们还需要换行。 ?理解if,并且套用2层for循环打印就搞定了;
9.玩家下棋 这里套用2层if来判断玩家下棋,用x-1,y-1来表示数组下标(玩家不知道数组是从0开始计算的),代码如下,有注释,仔细看理解:
最后玩家下棋了,记得再次打印棋盘。 10.电脑下棋:电脑这里比较辣鸡,因为他是随机下的,现在的基础没有特别厉害的算法来实现就利用时间戳来实现电脑随机下。这里需要包含两个库函数#include<time.h>,#include<stdlib.h>,就包含在主函数里面,方便大家一起用。 注意到\n,换行必须有,不然会出现错误。 注意记得我们再次打印棋盘
?11.下面我们就来实现玩家一步,电脑一步的循环,而且需要下完一步棋就要判断是谁赢,还是平局,还是继续,这里我们需要用到返回值。所以我们命令,玩家赢为返回'*',电脑赢返回'#',平局返回'Q',继续返回'C'; game函数就变成下面这这样了:
is_win是我们需要具体判断的函数,下一步棋就需要判断 12.判断输赢的具体实现: 注意这里传参穿的是小写的row,col。不是和以前一样传大写的ROW,COL 这里就是判断三行、三列、以及对角线、是否相等,并且不等于0;并且最后添加一个is_full函数来判断是否棋盘已经满了,就是平局,代码如下:
?13.平局的具体实现: 注意这里和上面的game()一样,需要写在is_win的上面,不然编译器识别不出来。 is_full的原理很简单,就是判断是否有' ',如果没有则满了,就返回0,否则返回1;代码如下:
好了,这里就全部实现了,我重新敲了一遍这个代码,把我的思路,梳理出来了,希望有错误的地方,大家指正。 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 5:59:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |