当前位置:网站首页>[C language] Implementation of guessing number game
[C language] Implementation of guessing number game
2022-08-10 23:40:00 【There are gods in the mountains】
目录
1.猜数字游戏规则
猜数字顾名思义就是让系统产生一个随机数,然后由玩家猜这个随机数,猜大了会给出提示说猜大了,猜小了会提示猜小了,直到玩家猜对为止.
2.猜数字的实现
(1)猜数字的主体
1)首先,我们先创建一个游戏菜单,选择1进入游戏(1.PLAY),选择0退出游戏(0.EXIT)
2)然后使用循环语句,构建游戏框架,使玩家可以进行多次游戏.
3)最后设计游戏具体思路.使系统生成一个随机数,让玩家输入一个数字,然后两个数字进行比较,给出提示,直到玩家猜对.
4)设定随机数的范围为1~100之间
代码如下
#include<stdio.h>
void menu()
{
printf("******************************\n");
printf("********* 按1:PLAY *********\n");
printf("********* 按0:EXIT *********\n");
printf("******************************\n");
}
int main()
{
int intput = 0;
do
{
menu();
printf("请选择:\n");
scanf("%d", &intput);
switch (intput)
{
case 0:
printf("退出游戏\n");
break;
case 1:
printf("玩游戏\n");
break;
default:
printf("选择错误,请重新选择\n");
break;
}
} while (intput);
return 0;
}
(2)猜游戏的真正主体
case 1:
printf("玩游戏\n");
break;
猜游戏的主体已经完成,但是真正的主体还没有开始,猜数字游戏并不是只有“玩游戏”这三个字那么简单,我们写一个函数来真正实现猜数字游戏的过程.
case 1:
game();
break;
1)生成随机数
好了,到这里我们需要了解如何生成随机数.
C语言中 rand() 函数可以生成随机数,使用它引头文件即可,生成随机数的范围为0 to RAND_MAX(0 ~ 32767)
但是这样使用 rand 函数是错误的,导致它每一次生成的随机数都是相同的
我们先来看下图圈起来的,在使用 rand 函数之前必须调用 srand 函数
我们看一下 srand 函数,图中框起来必须要输入一个整型参数并且是随机的,这样才能满足我们的需求,这时候就要用到时间戳了.
2)时间戳
什么是时间戳?简单一句话就是可以满足猜数字游戏的需求(≖_≖ )
不会的可以自行了解( ﹡ˆoˆ﹡ )
C语言里面有一个 time 函数,它可以返回一个时间戳,我们直接用它就行了.
time 函数括号内的参数直接填 NULL ,我们只要它产生返回一个随机数数就行了;
time 函数简单用就行了,我不过多解释,解释又得一篇文章了...(自行摸索)
值得注意的是生成确定范围随机数
那么我们怎么生成确定范围的数字?
很简单,在rand()后面进行取余,如果%100,取到的值就是0-99了,那么再减去某个值,就是一个确定范围了.
比如我们想取1-100,那么就需要rand()%100+1.
3)game() 函数代码如下:
void game()
{
srand((unsigned int)time(NULL));
int ret = rand() % 100 + 1;//%100的余数是0-99,然后加1,范围就是1-100
int guess = 0;//猜数字
while (1)
{
printf("请猜数字:\n");
scanf("%d", &guess);
if (guess < ret)
{
printf("猜小了!\n");
}
else if (guess > ret)
{
printf("猜大了!\n");
}
else
{
printf("恭喜你,猜对了!\n");
break;
}
}
}
3.总代码
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("******************************\n");
printf("********* 按1:PLAY *********\n");
printf("********* 按0:EXIT *********\n");
printf("******************************\n");
}
void game()
{
srand((unsigned int)time(NULL));
int ret = rand() % 100 + 1;//%100的余数是0-99,然后加1,范围就是1-100
int guess = 0;//猜数字
while (1)
{
printf("请猜数字:\n");
scanf("%d", &guess);
if (guess < ret)
{
printf("猜小了!\n");
}
else if (guess > ret)
{
printf("猜大了!\n");
}
else
{
printf("恭喜你,猜对了!\n");
break;
}
}
}
int main()
{
int intput = 0;
do
{
menu();
printf("请选择:\n");
scanf("%d", &intput);
switch (intput)
{
case 0:
printf("退出游戏\n");
break;
case 1:
game();
break;
default:
printf("选择错误,请重新选择\n");
break;
}
} while (intput);
return 0;
}
4.最后
最后文章到此结束!希望这篇文章能帮助到你!
边栏推荐
猜你喜欢
CW614N铜棒CuZn39Pb3对应牌号
[C language articles] Expression evaluation (implicit type conversion, arithmetic conversion)
北京党建展馆vr全景制作优点有哪些
进程和线程
关于弱监督学习的详细介绍——A Brief Introduction to Weakly Supervised Learning
信息系统项目管理师核心考点(六十五)信息安全基础知识网络安全
【C语言篇】表达式求值(隐式类型转换,算术转换)
李宏毅机器学习-- Backpropagation
烘干衣服问题
安科瑞为工业能效行动计划提供EMS解决方案-Susie 周
随机推荐
翻译软件哪个准确度高【免费】
Blue Hat Cup 2022 web/misc writeup
线程池如何监控,才能帮助开发者快速定位线上错误?
多语种翻译-多语种翻译软件免费
Pengcheng Cup 2022 web/misc writeup
【C语言】猜数字游戏的实现
C语言篇,操作符之 移位运算符(>>、<<)详解
如何快速把握行业机会,更高效地推陈出新,是一个重要的命题
【C语言篇】操作符之 位运算符详解(“ << ”,“ >> ”,“ & ”,“ | ”,“ ^ ”,“ ~ ”)
sklearn.datasets.make_circles
iNFTnews | Web3时代,用户将拥有数据自主权
HPb59-1铅黄铜
【C语言】二分查找(折半查找)
祥云杯 2021 PackageManager writeup
【C语言篇】表达式求值(隐式类型转换,算术转换)
线程相关知识点
【C语言】C语言程序设计:动态通讯录(顺序表实现)
ROS实验笔记之——安装QPEP以及Intel-MKL
正交基(线性代数)
基于深度学习的三维点云分割综述