| |
|
开发:
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语言 猜数字游戏 |
目录
?猜数字游戏游戏是一个简单有趣的游戏,相信大家在现实也会有一起玩过。通过一些简单的C语言代码,就能实现这个游戏。赶紧来看看吧!
?首先作为一个小游戏,点开程序的时候就应该先玩一次,完成一次游戏后可以再选择玩或者不玩。那么由此我们想到了do while 循环作为起始语句。 其次需要一个菜单来提示玩家进行继续或结束游戏的提示,我们选择用简单的函数来实现。 接着玩家会不断地进行猜数字,程序需要告诉玩家猜大了还是猜小了。 最后玩家猜中数字,根据菜单来决定是否进行下一次游戏。
?根据编写思路,我们可以简单构造出一个大体框架。
接下来就是game函数的编写与nemu函数的编写,来充实我们游戏的主体内容。
nemu函数起到一个提示玩家选择的作用,用printf即可实现,由于不需要返回值,所以nemu的类型是void。具体如下
进入game函数后,我们需要程序生成一个随机数。然后玩家再去猜这个随机数。 那么程序如何实现每一次都生成一个完全随机的数字呢?
rand函数需要引用<stdlib.h>才可以使用,功能是随机生成一个数。那么这个数的范围是多少呢?答案是(0~32767)。我们的游戏不可能需要玩家猜那么大的数字!于是在使用rand函数后应该模上一个数,来圈定随机数的范围。
用while即可实现之前我们所说的循环猜数字的功能,合理用break来打破循环,若不达到条件,则不会执行break语句,从而可以一直循环。while(1)这么写还是十分常见且实用的! 但是也存在一个问题,仔细调试的小伙伴们会发现,虽然程序中每次的随机数不同,但是再次打开程序,与上一次打开程序时,程序生成的随机数是相同的。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?那么这个猜数字小游戏在玩过一次后,就已经失去了随机性和趣味性。那么我们该怎么解决这个问题呢?我们不妨先去了解一下rand函数!! ? ?看得懂最好,看不懂也没关系。 总的来说rand函数使用之前,需要先调用srand函数来重置随机生成数起点。这样就能保证每一次打开程序所生成的随机数真正随机。
?*由于文章是面向小白,所有srand函数不会过多介绍。* 调用srand函数需要引用头文件<stdlib.h>,功能是重置随机生成数起点。需要注意的是srand()括号内需要一个unsigned int 类型的数值。如果括号内我们设置成常量。那么每次生成随机数的起点都会相同,同样达不到完全随机的效果。
所以我们需要一个每时每刻都在变化的一个变量,来放到srand的括号里,保持rand函数每一次的起点都不一样,才能真正达到完全随机的效果。
time函数,也叫时间戳 ,需要引用头文件<time.h>。这里介绍一下什么是时间戳:我们现实每一个时间与系统初始时间的差值叫做时间戳。时间戳是一串数字,一串无时无刻都在变的数字,这串数字可以转化成现实中的时间。知道这些,我们的问题也就能解决了!
time()函数的返回类型是time_t,之前有提到srand()括号内需要一个unsigned int类型的变量,于是我们在time()前面加上(unsigned int)来强制转换数据类型。 另外time()括号里需要一个指针变量。但是我们不需要这个指针变量,只需要他生成的随机数,所以time()括号内可以放NULL空指针。 这样,rand()函数就可以真正的做到完全随机!game函数的功能也完全齐全!
?srand函数只需要调用一次,如果每次使用rand函数前都调用srand函数,在循环足够快的情况下,还是有可能出现与srand()括号内放常量的那种重复情况!!!
?此次示例代码仅写出猜数字游戏的核心功能,且引用的各种函数讲解也不是很透彻。希望有兴趣的小伙伴可以继续完善游戏代码,写出属于自己的功能更完备的猜数字游戏!! 最后还是请大家多多支持,点赞,关注,收藏!!! https://cplusplus.com/reference/? ps:这个是查阅rand函数时博主使用的网站,可以收藏一下哦! |
|
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图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/11 11:41:45- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |