| |
|
开发:
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语言初始——新手独立完成的小游戏——三子棋 -> 正文阅读 |
|
[C++知识库]c语言初始——新手独立完成的小游戏——三子棋 |
一.大纲 1.游戏菜单 2.下棋的工具(棋盘,棋子,规则等) 3.如何让玩家下棋 4.如何实现让电脑自主下棋 5.如何用代码实现判断输赢 第一步,我们先来制作一个棋盘。 ?这里可以将其想象成一个二维数组,拥有x,y两个方向。 ?虽然简陋一点,但对于新手而言还是很友好的(亲试!)。话不多说,我们直接上代码! ??这里的代码需要放在头文件中,可以新建一个头文件? ~~.h,从而可以在源文件中直接引用变量,只是需要敲出? ?#include "~~.h",即可。~~为定义的头文件名称。 ? ? ? ? ? ?这里我们定义了一个 menu()函数,菜单一般是先于游戏的,因此我们使用do...while()循环,先将菜单显示出来,再让用户自己选择。其中我们可以向用户提出一条信息,让其输入 1 或 0? 代表玩 和不玩,并将其储存起来;再通过switch语句来判断用户的选择,在子语句case? :下敲出对应的代码即可。 按1则进入case 1: 开始游戏,此时我们应对game()函数进行封装,不能让用户玩了个寂寞; ?这里我们就开始定义函数,当然定义函数后应该记住去头文件中声明,否则计算机无法调用这个函数,调用方法即为定义函数的开头加上个? "? ;"? ,即? void首先是InitBoard()是用来初始化棋盘,即清理棋盘。 ?可以使用两个for循环,让该二维数组中的每个元素变成'? ',就达到了清理的工作了。然后是打印棋盘。此时我们应该注意到,我们这简易的棋盘并不是有一个方形边框围起来,所以竖线与横线只有两根,因此我们在使用for循环时,应加上一个打印线的附加条件,即:if (i<row-1),即可实现我们想要达到的效果。同时记得加上换行符? "\n"。 打印棋盘后,我们需要设计一个函数让玩家自主输入下棋的坐标,这里我们需要注意,玩家输入的坐标x,y不可能与我们程序员的思路一样,不会输入下标,而是正常的坐标,因此在存放棋子时,要注意数组中的索引应为[? x-1 ][? y-1 ]。明白这一点后就可以很好地敲出代码。 ?同时需要对用户输入的值进行检测是否合理,如若不合理则需要提示用户,具体代码如下: ? ? ?综上,我们已经可以让用户愉快的输入坐标了,但是还需要我们去实现电脑的自主下棋,即:随机生成两个0~2的数字(这里是让电脑输入,因此可以不必去人性化代码)。那么如何去实现随机生成这两个数字呢? 这里我们需要用到C语言自带的库函数rand(),同时需要引入该函数所在的库,即:<stdlib.h>. 但通过查阅rand()函数的使用(cplusplus.com或 zhreference.com),我们可以发现通过点用函数srand()来辅助生成随机数(即通过使用时间戳,细节我们跳过。),这里我们直接给出代码: ? ?同时srand()函数中使用的time()函数要通过引用库<time.h>来使用,哪又要如何将数字的范围固定在0~2的范围内呢?这里我们可以通过使用操作符”%“来实现,该操作符会返回余数,因此我们只需将产生的随机数%3即可(int a = rand()%3),就实现了电脑自主下棋。 下完棋之后我们需要判断是否有一方胜出,因此我们又需要定义一个函数来实现该功能, ? ? ? ?我们通过使用if语句来判断是否有一方胜出,胜出的一方返回一个能够代表着一方的字符或其他, 然后再在game()函数中使用多个判断语句,来根据字符的种类来确定是否有人胜出,但判断是否有一方胜出前,我们得先判断棋盘上是否还有空余的位置下棋,如果没有的话,我们需要让游戏停止,否则会一直在死循环中,占用系统内存。 ? ? ? ? ? ? ? ? ?综上所述,一个简易的小游戏就制作成功了! ? ? ? ? ? ? ? ? ? ? |
|
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/23 20:18:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |