1创立主题部分
首先,第一步,创立一个主函数,这是程序运行的主题,我们所要搭建的枝叶,也是从这个框架中逐步扩展出去的,
#include<stdio.h> int main() {int input=0 do{ }while(); return 0; }
我们已经搭建好了函数的主题部分,现在需要思考,要实现猜数字程序,我们还需要运用到哪些函数?
2加入菜单
相信大家都玩过单机小游戏,我们首先接触到的就是菜单,菜单中有基本的选项:选择游戏或者退出游戏,因此我们需要一个菜单,也就是menu函数(在do while循环中加入)。
下面是这个代码的进一步完善:
void menu() { printf("************************\n"); printf("**** 1.play *******\n"); printf("**** 2.exit *******\n"); printf("************************\n"); } #include<stdio.h> int main() { int input=0 do{ menu(); printf("请选择:"); scanf("%d",&input);//输入0或1选择是否开始游戏 }while(input); return 0; }
3加入随机数函数
既然是猜数字游戏,那么我们需要一个函数来生成随机数,在cplusplus中搜索rand()函数,我们可以了解它的使用方法。 实际上,由此函数生成的随机数是有范围的:0到RAND_MAX之间。而这个函数中随机数的生成并不是真正生成,而是伪随机数:看似随机,实际每一次生成的值固定,由种子决定。
那么我们可以让种子变化来使随机数真正随机。
自然,需要引用srand函数和time函数。time函数能够生成时间戳,使得每次结果一定不同。
void menu() { printf("************************\n"); printf("**** 1.play *******\n"); printf("**** 2.exit *******\n"); printf("************************\n"); } #include<stdio.h> #include<time.h> int main() { int input=0 srand((unsigned int)time(NULL));// do{ menu(); printf("请选择:"); scanf("%d",&input);//输入0或1选择是否开始游戏 }while(input); return 0; }
当生成菜单,在用户做出选择之后,需要跳转界面,以满足用户的需求。因此,我们需要添加一个switch函数,来完成以上目的。
switch(input) { case 1: game(); break; case 0: printf("退出游戏\n"); break; default: printf("选择错误,重新选择\n"); break; }
在进入游戏后,我们需要函数来完成进入游戏之后的过程。
void game() { int guess=0; int ret=rand()%100+1; //生成随机数的公式:如果要生成a~b的随机数,那么rand()后的内容应是(b-a+1)+a while(1)//一直循环 { printf("请输入要猜的数字:>"); scanf("%d",&guess); if(guess<ret) { printf("猜小了\n"); } else if(guess>ret) { printf("猜大了\n"); } else { printf("猜对了,恭喜你!数字是:%d\n",ret); break; } }
4设置游戏次数
为了使程序更加优化,我们还可以设置游戏次数来让游戏过程更加刺激!
void game() { int guess=0; int ret=rand()%100+1; //生成随机数的公式:如果要生成a~b的随机数,那么rand()后的内容应是(b-a+1)+a int count=5;//设置游戏的次数为五次 while(count)//一直循环改为根据次数进行循环 { printf("请输入要猜的数字:>"); scanf("%d",&guess); if(guess<ret) { printf("猜小了\n"); } else if(guess>ret) { printf("猜大了\n"); } else { printf("猜对了,恭喜你!数字是:%d\n",ret); break; } count--;//每进行一次,次数减少1 if(count==0) { printf("次数用完了,正确答案是:%d\n",ret); } }
5Finally!!
将我们搭建的框架组合起来,就得到了完整的程序代码:
void menu() { printf("************************\n"); printf("**** 1.play *******\n"); printf("**** 2.exit *******\n"); printf("************************\n"); } void game() { int guess=0; int ret=rand()%100+1; //生成随机数的公式:如果要生成a~b的随机数,那么rand()后的内容应是(b-a+1)+a int count=5;//设置游戏的次数为五次 while(count)//一直循环改为根据次数进行循环 { printf("请输入要猜的数字:>"); scanf("%d",&guess); if(guess<ret) { printf("猜小了\n"); } else if(guess>ret) { printf("猜大了\n"); } else { printf("猜对了,恭喜你!数字是:\n",ret); break; } count--; if(count==0) { printf("次数用完了,正确答案是:\n",ret); } } #include<stdio.h> int main() { int input=0 do{ menu(); printf("请选择:"); scanf("%d",&input);//输入0或1选择是否开始游戏 switch (input) { case 1: game(); break; case 0: printf("退出游戏\n"); break; default: printf("选择错误,重新选择\n"); break; } }while(input); return 0; }
既然这样的话,我只能玩两把了(bushi)
在我玩了10次后,终于猜对了一次,艰难。
不知道你有没有学会呢,VS!启动!快跟我一起猜数字吧(doge),赌狗的游戏~~~~