我是靠谱客的博主 紧张翅膀,最近开发中收集的这篇文章主要介绍详细解析C语言实现猜数字游戏一、游戏要求:二、实现过程:三、整体思路:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、游戏要求:

1、每次游戏自动生成一个1~100之间的随机数;

2、玩家若猜对数字,则结束本次游戏,但不退出程序;若未猜对数字,则提示玩家猜大了或猜小了,直到玩家猜对为止。

3、当玩家玩完一次游戏后可以选择是否继续玩,或选择退出程序。

二、实现过程:

1、游戏框架:

        

解析:

(1)为了实现游戏要求的第三条,游戏框架我们选择do...while循环语句,根据玩家的选择来判断继续游戏还是退出程序。

(2)制作一个简易的游戏菜单,设置1为进行游戏,0为退出程序,因为do...while循环的判断条件是input的值,所以当玩家输入0时,条件为假,循环结束,退出程序。

(3)在do...while语句中嵌入一个switch...case语句,判断条件同样是input的值,根据玩家的选择来执行相应的命令,如果玩家选择的既不是1也不是0,就会执行default语句,提示玩家选择错误,重新选择。

 2、实现游戏

首先,我们要生成一个随机数,这里需要用到生成随机数的函数:rand(),这个函数会随机生成一个0~RAND_MAX(32767)之间的整数。

使用该函数需要引用头文件:<stdlib.h>。

 接下来,我们把生成的随机数打印出来看一下是否真的随机:

 

每次生成的随机数确实挺随机的,但是,如果我们退出程序,再次打印的话,就会发现每次生成的随机数是一样的:

 我们打开MSDN,查看一下rand函数的解释:

在使用rand()函数之前,需要调用srand()函数来设置这个随机数的生成起点:

srand()函数的作用是设置一个随机的起点,参数是无符号整数,那我们就调用一下这个函数:

 

把ret打印出来看一下是否随机:

 

当我们给srand()传参传个1时,每次生成的随机数都是一样的,换个参数是否可行呢? 

换个参数之后发现每次生成的随机数还是一样的,那么我们可以得出这样一个结论:srand()参数需要传一个不断变化的数字,这样生成的随机数才是真正随机的。

什么数字在不断变化呢?没错,就是时间,所以,我们可以把时间戳(时间转化成的一个数字)作为参数,传给srand()函数,此时就需要调用time()函数来获取时间戳:

 我们此时只需要调用time()函数来获取时间戳,传参时传个空指针即可,而time函数的返回类型是

time_t,与srand()函数的参数类型unsigned int不同,所以需要进行强制类型转换,调用time()函数之前需要引用头文件<time.h>。

 再次打印ret,检测生成的随机数是否随机:

每个数字相差很小,随的不是很机。因为我们每次调用srand()函数时,srand()函数每次都会设置一个随机数的生成起点,但是每次设置的起点都很接近,所以我们只需要调用一次srand()函数,设置一次随机的起点就可以了,接下来我们把srand()函数放在循环外面:

 

现在生成的随机数就很随机了,并且每次都不相同。 但是现在生成的随机数在0~32767之间,而游戏要求则是生成1~100之间的数字,只需要给ret%100即可得到0~99的数字,然后+1即可得到1~100之间的数字:

生成随机数的要求已经实现,最后就是实现猜数字过程中的提示了:

一个简单的猜数字游戏就实现了~ 

三、整体思路:

1、使用do...while...循环作为游戏主框架,给到玩游戏和退出程序的两个选项;

2、实现游戏需要生成随机数,调用rand()函数之前调用srand()函数设置随机数起点,调用time函数获取时间戳,将不断变化的时间戳作为参数传给srand()函数,生成的随机数%100之后+1得到1~100之间的随机数;

3、猜数字的提示使用while函数循环,判断条件恒为真,直到玩家猜对数字,猜对数字之后需要break跳出循环。

最后是整个程序的代码:

程序运行结果:

最后

以上就是紧张翅膀为你收集整理的详细解析C语言实现猜数字游戏一、游戏要求:二、实现过程:三、整体思路:的全部内容,希望文章能够帮你解决详细解析C语言实现猜数字游戏一、游戏要求:二、实现过程:三、整体思路:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部