目录
一、前言
二、从游戏初始界面开始
三、游戏实现
①rand函数
②srand函数
③时间戳
④time函数
学习的过程有时候会有些许枯燥,但换一种方式学习也算是一种有趣的事情,呀哈,写个代码玩玩,
[操作度:易
[涉及知识有:函数调用+循环结构do.while()+选择判断分支+switch语句
游戏大概就是这个样子,简简易易猜数字游戏^-^
[游戏设计需求:
1.电脑随机生产一个数字(1~100)
2.玩家猜数字
猜大了,电脑提示猜大了,猜小了,电脑提示猜小了
3.游戏可以一直玩,并且可以玩很多次,玩完之后可选择继续玩
以下为飞机游戏全部的代码,大家可以直接拷贝运行:
#include
#include
#include
void menu()
{
printf("*********************\n");
printf("**** 猜数字游戏 ****\n");
printf("****-------------****\n");
printf("**** 1.play ****\n");
printf("**** 0.exit ****\n");
printf("*********************\n");
}
//猜数字游戏的实现
void game()
{
int guess = 0;
//1.生成一个随机数
int ret = 0;
ret = rand()%100+1;
//2.猜数字
printf("现在来猜数字:>\n");
while (1)
{
scanf("%d", &guess);
if (guess < ret)
{
printf("猜小了哟,hhhhhhhhhh\n");
}
else if (guess > ret)
{
printf("大了大了,再想想再想想~\n");
}
else
{
printf("恭喜你,猜对了,棒极了!!\n");
break;
}
}
}
int main()
{
srand((unsigned int)time(NULL));
int input = 0;
do
{
menu();
printf("请选择:->\n");
scanf("%d", &input);
switch (input)
{
case 1:
printf("好耶!!我出一个数字,你来猜\n");
game();
break;
case 0:
printf("已退出游戏,咱们下次再玩吧~\n");
break;
default:
printf("请输入1或0,1开始游戏,0退出游戏\n");
break;
}
} while (input);
return 0;
}
如果想要更了解清楚的,让我们一起继续看下去吧~ 说不定会有更厉害的同学将游戏改进,期待~对于俺,将我了解的一些东西用自己的语言复述一遍,也是一件有意思的事情
一款游戏是可以玩很多次的,没玩够继续玩,所以主函数中出现循环,游戏进入之后会出现一个菜单,我们可以选择玩,也可以选择退出,菜单至少出现一次,用do.while()语句perfect
int main()
{
do
{
menu();
} while ();
return 0;
}
menu函数:
void menu()
{
printf("*********************\n");
printf("**** 猜数字游戏 ****\n");
printf("****-------------****\n");
printf("**** 1.play ****\n");
printf("**** 0.exit ****\n");
printf("*********************\n");
}
菜单有了,接下来解决输入的问题,输入1,开始游戏,输入0,退出游戏(这里不能真正的做到退出游戏,准确的说是程序结束),输入的不是1,也不是0,是其他的数怎么办?12、13、14、15……好家伙,这么多情况,嘿嘿,那用switch语句好了,多分支,所以我们的主函数变成了这样:
int main()
{
srand((unsigned int)time(NULL));
int input = 0;
do
{
menu();
printf("请选择:->\n");
scanf("%d", &input);
switch (input)
{
case 1:
printf("好耶!!我出一个数字,你来猜\n");
game();
break;
case 0:
printf("已退出游戏,咱们下次再玩吧~\n");
break;
default:
printf("请输入1或0,1开始游戏,0退出游戏\n");
break;
}
} while (input);
return 0;
}
在这里,其实有个很小Q的点,1代表玩游戏,0代表退出游戏,input是输入的数,当input为非0的时候,循环继续,当input为0的时候,循环才会终止,也就是说,只要我们输入0的时候,程序就彻底的结束了,即退出游戏,输入其他的非0数,游戏还可以玩,输入如果还不是1的话,菜单也会在打印一次,提示正确输入,输入1才可以开始游戏。
如果假设输入非0的数字代表退出游戏,如:1是play , 2是exit ,那输入2的时候,程序并不会结束,要想实现退出游戏就变得麻烦了,可以去试一下,
模块化程序,自己写的方便,有思路,易于找问题,后续修改,别人看也更方便
最重要的灵魂,游戏实现部分用的也是一个函数
//猜数字游戏的实现
void game()
{
int guess = 0;
//1.生成一个随机数
int ret = 0;
ret = rand()%100+1;
//2.猜数字
printf("现在来猜数字:>\n");
while (1)
{
scanf("%d", &guess);
if (guess < ret)
{
printf("猜小了哟,hhhhhhhhhh\n");
}
else if (guess > ret)
{
printf("大了大了,再想想再想想~\n");
}
else
{
printf("恭喜你,猜对了,棒极了!!\n");
break;
}
}
}
那怎样电脑生成一个随机数?
不急,慢慢来~
C语言中提供了一个生成随机数的函数——rand()函数
在cplusplus官网上查到的rand这个库函数的介绍
像各大网站,一般都是英文,后台挂个翻译器,慢慢习惯,就阔以理解了
rand函数:
效果是返回一个随机值,类型是int ,头文件是
RAND_MAX 相当于十进制的32767
rand() % 100
任何数 %100 得到的数是0~99之间的数,
rand() % 100 + 1 之后,
得到的数是0~100之间的数,也就是我们想要需要的随机数范围
rand函数使用的经典例子:
用法:
在调用rand函数之前 调用srand函数 效果是生成随机数生成器
简单介绍一下,
srand函数需要的是一个整型 ,(unsigned int)
如果传给srand函数的数是同一个数,那么rand函数生成的随机数是相同的,
给srand函数传100,运行如下:
给srand函数传200,运行如下:
总结:
如果rand函数想要返回一个随机值,需要传给srand函数的也是一个随机值,一个一直在变化的数,
问题来了,我们想要一个随机值,需要一个随机值,即用一个随机值产生一个随机值,啊这这这……
难不倒咱,
电脑上的时间是不是一直在变化的呀? yep ,
这里引用 时间戳
C语言提供了一个函数time,返回一个时间戳
srand((unsigned int)time(NULL));
time函数的头文件是
改进:
将srand函数放在主函数,因为整个程序中只需要调用一次srand函数,
这样可以使随机数更随机
趁着春节,快和家里人一起玩这个小游戏吧~
好玩好玩,体验一下不一样的游戏,
今天的博客就到这告一段落了,
求赞,求转发,求关注~