如何用C语言写出一个猜数字游戏,供大家参考,具体内容如下
首先调用头文件
/***调用头文件***/ #include<stdio.h> #include<time.h> #include<stdlib.h> #include<string.h> /***调用头文件***/
再者定义函数
/**定义函数**/ void start();//开始函数 void low();//低级 void mediate();//中级 void high();//高级 void res();//重启函数 void chooce();//选择函数 void help();//查看帮助 void name_set();//姓名询问 int main(void);//主函数 /**定义函数**/
start()函数,主要是进行选择进入,代码如下
void start(){//开始函数 printf("***************************\n"); printf("* 1.进行猜数字 *\n"); printf("* 2.退出猜数字 *\n"); printf("* 3.选择 帮助 *\n"); printf("***************************\n\n"); /*设置选择*/ int c; printf("请选择:"); scanf("%d",&c); switch(c){ case 1: chooce(); break; case 2: printf("谢谢您!\n"); break; exit(0); case 3: help(); break; default: printf("请输入正确的数字:\n"); break; } /*设置选择*/ }
name_set()函数主要是询问一下游玩者的名字,再输出一下名字,毕竟是个游戏供来娱乐嘛
void name_set(){//问候函数 char name[10]; printf("您好,您叫什么?输入您的姓名:"); gets(name); printf("%s,欢迎来到猜数字游戏\n\n",name); }
help()函数纯纯就是提示帮助
void help(){//帮助函数 printf("\t1.低级范围在300以内,共5次机会\n"); printf("\t2.中级范围在300-1000以内,共10次机会\n"); printf("\t3.高级在1000以上,共20次机会\n"); start();//返回开始函数,并不运行问候函数 }
chooce()函数,主要是进行选择游戏等级
void chooce(){//选择等级 printf("***************************\n"); printf("* 1.选择低级 *\n"); printf("* 2.选择中级 *\n"); printf("* 3.选择高级 *\n"); printf("***************************\n"); int dj; printf("请选择等级:"); scanf("%d",&dj);//设置等级 /*判定选择等级*/ if(dj==1){ low(); } else if(dj==2){ mediate(); } else if(dj==3){ high(); } else{ printf("请输入正确的数字,我们即将返回程序!\n"); chooce(); } /*判定选择等级*/ }
接下来就是主要的函数了,是游戏内容和逻辑
简单来说,低级中级高级的代码逻辑是一样的,都是运用stdlib.h里的rand()函数抽取随机数值,然后与输入的guess对比,可以看出来,在while里运行,输入一次做一次对比,如果正确times+1并结束循环,如果不正确,提示错误并返回while运行,直到times超过那个数值,跳出循环。
在下面可以看一下基本模板(里面数值用拼音代替)
void dengji(){ int sb; srand(time(NULL));//调用rand函数 printf("输入一个范围整数:"); scanf("%d",&sb);//获取范围值 if(//表达式代取数值对比){ printf("太大了建议您玩中级!\n"); printf("请再次输入\n"); low(); } int num=rand() % ("%d"+1,sb);//获取随机整数 int times=0;//设置初始次数 while(times<n){//循环判定 int guess; printf("输入数字:");//获取输入值 scanf("%d",&guess); times+=1;//次数增加 /***与随机值比较***/ if(guess==num){ break;//正确结束循环 } else if(guess>num){ printf("猜大了!\n"); } else{ printf("猜小了!\n"); } /***与随机值比较***/ } if(times<n){ printf("猜对了!\n");//正确结果 printf("您一共猜了%d次",times); } else{ printf("对不起,猜错了!数字是%d。\n",num); printf("您一共猜了%d次\n",times);//错误结果 } }
然后可以看一下代码
void low(){//低级 int sb; srand(time(NULL));//调用rand函数 printf("输入一个范围整数:"); scanf("%d",&sb);//获取范围值 if(sb>300){ printf("太大了建议您玩中级!\n"); printf("请再次输入\n"); low(); } int num=rand() % ("%d"+1,sb);//获取随机整数 int times=0;//设置初始次数 while(times<5){//循环判定 int guess; printf("输入数字:");//获取输入值 scanf("%d",&guess); times+=1;//次数增加 /***与随机值比较***/ if(guess==num){ break;//正确结束循环 } else if(guess>num){ printf("猜大了!\n"); } else{ printf("猜小了!\n"); } /***与随机值比较***/ } if(times<5){ printf("猜对了!\n");//正确结果 printf("您一共猜了%d次",times); } else{ printf("对不起,猜错了!数字是%d。\n",num); printf("您一共猜了%d次\n",times);//错误结果 } } void mediate(){//中级 int sb; srand(time(NULL));//调用rand函数 printf("输入一个范围整数:"); scanf("%d",&sb);//获取范围值 if(sb<300){ printf("太小了建议您玩低级!\n"); printf("请再次输入\n"); mediate(); } else if(sb>1000){ printf("太大了建议您玩高级!\n"); printf("请再次输入\n"); mediate(); } int num=rand() % ("%d"+1,sb);//获取随机整数 int times=0;//设置初始次数 while(times<10){//循环判定 int guess; printf("输入数字:");//获取输入值 scanf("%d",&guess); times+=1;//次数增加 /***与随机值比较***/ if(guess==num){ break;//正确结束循环 } else if(guess>num){ printf("猜大了!\n"); } else{ printf("猜小了!\n"); } /***与随机值比较***/ } if(times<10){ printf("猜对了!\n");//正确结果 printf("您一共猜了%d次",times); } else{ printf("对不起,猜错了!数字是%d。\n",num); printf("您一共猜了%d次\n",times);//错误结果 } } void high(){//高级 int sb; srand(time(NULL));//调用rand函数 printf("输入一个范围整数:"); scanf("%d",&sb);//获取范围值 if(sb<1000){ printf("太小了,建议您退出游戏!\n"); high(); } int num=rand() % ("%d"+1,sb);//获取随机整数 int times=0;//设置初始次数 while(times<20){//循环判定 int guess; printf("输入数字:");//获取输入值 scanf("%d",&guess); times+=1;//次数增加 /***与随机值比较***/ if(guess==num){ break;//正确结束循环 } else if(guess>num){ printf("猜大了!\n"); } else{ printf("猜小了!\n"); } /***与随机值比较***/ } if(times<20){ printf("猜对了!\n");//正确结果 printf("您一共猜了%d次",times); } else{ printf("对不起,猜错了!数字是%d。\n",num); printf("您一共猜了%d次\n",times);//错误结果 } }
res()函数可以理解为询问返回游戏,我是在return games的基础上缩写的,毕竟游戏不能只有一次,在里面做一个逻辑运算,并返回其他函数
void res(){//询问是否重新再来 printf("\n还要在玩一遍吗?\n1.是的 2.退出。"); int s; scanf("%d",&s); /*进行选择*/ if(s==1){ chooce(); } else if(s==2){ printf("谢谢您!\n"); exit(0);//退出程序 } else{ printf("请输入正确的数字!\n"); res(); } /*进行选择*/ return res();//将res函数返回main函数 }
main()函数主要是做了一个调用,调用前面start,name_set,chooce,res等函数
int main(){ name_set();//问候 start();//执行选择 int yes=1;//设置重启值,调用res函数 if(yes==1){ res(); } }
到最后可以看一下所有代码
/***调用头文件***/ #include<stdio.h> #include<time.h> #include<stdlib.h> #include<string.h> /***调用头文件***/ /**定义函数**/ void start();//开始函数 void low();//低级 void mediate();//中级 void high();//高级 void res();//重启函数 void chooce();//选择函数 void help();//查看帮助 void name_set();//姓名询问 int main(void);//主函数 /**定义函数**/ void start(){//开始函数 printf("***************************\n"); printf("* 1.进行猜数字 *\n"); printf("* 2.退出猜数字 *\n"); printf("* 3.选择 帮助 *\n"); printf("***************************\n\n"); /*设置选择*/ int c; printf("请选择:"); scanf("%d",&c); switch(c){ case 1: chooce(); break; case 2: printf("谢谢您!\n"); break; exit(0); case 3: help(); break; default: printf("请输入正确的数字:\n"); break; } /*设置选择*/ } void name_set(){//问候函数 char name[10]; printf("您好,您叫什么?输入您的姓名:"); gets(name); printf("%s,欢迎来到猜数字游戏\n\n",name); } void help(){//帮助函数 printf("\t1.低级范围在300以内,共5次机会\n"); printf("\t2.中级范围在300-1000以内,共10次机会\n"); printf("\t3.高级在1000以上,共20次机会\n"); start();//返回开始函数,并不运行问候函数 } void chooce(){//选择等级 printf("***************************\n"); printf("* 1.选择低级 *\n"); printf("* 2.选择中级 *\n"); printf("* 3.选择高级 *\n"); printf("***************************\n"); int dj; printf("请选择等级:"); scanf("%d",&dj);//设置等级 /*判定选择等级*/ if(dj==1){ low(); } else if(dj==2){ mediate(); } else if(dj==3){ high(); } else{ printf("请输入正确的数字,我们即将返回程序!\n"); chooce(); } /*判定选择等级*/ } void low(){//低级 int sb; srand(time(NULL));//调用rand函数 printf("输入一个范围整数:"); scanf("%d",&sb);//获取范围值 if(sb>300){ printf("太大了建议您玩中级!\n"); printf("请再次输入\n"); low(); } int num=rand() % ("%d"+1,sb);//获取随机整数 int times=0;//设置初始次数 while(times<5){//循环判定 int guess; printf("输入数字:");//获取输入值 scanf("%d",&guess); times+=1;//次数增加 /***与随机值比较***/ if(guess==num){ break;//正确结束循环 } else if(guess>num){ printf("猜大了!\n"); } else{ printf("猜小了!\n"); } /***与随机值比较***/ } if(times<5){ printf("猜对了!\n");//正确结果 printf("您一共猜了%d次",times); } else{ printf("对不起,猜错了!数字是%d。\n",num); printf("您一共猜了%d次\n",times);//错误结果 } } void mediate(){//中级 int sb; srand(time(NULL));//调用rand函数 printf("输入一个范围整数:"); scanf("%d",&sb);//获取范围值 if(sb<300){ printf("太小了建议您玩低级!\n"); printf("请再次输入\n"); mediate(); } else if(sb>1000){ printf("太大了建议您玩高级!\n"); printf("请再次输入\n"); mediate(); } int num=rand() % ("%d"+1,sb);//获取随机整数 int times=0;//设置初始次数 while(times<10){//循环判定 int guess; printf("输入数字:");//获取输入值 scanf("%d",&guess); times+=1;//次数增加 /***与随机值比较***/ if(guess==num){ break;//正确结束循环 } else if(guess>num){ printf("猜大了!\n"); } else{ printf("猜小了!\n"); } /***与随机值比较***/ } if(times<10){ printf("猜对了!\n");//正确结果 printf("您一共猜了%d次",times); } else{ printf("对不起,猜错了!数字是%d。\n",num); printf("您一共猜了%d次\n",times);//错误结果 } } void high(){//高级 int sb; srand(time(NULL));//调用rand函数 printf("输入一个范围整数:"); scanf("%d",&sb);//获取范围值 if(sb<1000){ printf("太小了,建议您退出游戏!\n"); high(); } int num=rand() % ("%d"+1,sb);//获取随机整数 int times=0;//设置初始次数 while(times<20){//循环判定 int guess; printf("输入数字:");//获取输入值 scanf("%d",&guess); times+=1;//次数增加 /***与随机值比较***/ if(guess==num){ break;//正确结束循环 } else if(guess>num){ printf("猜大了!\n"); } else{ printf("猜小了!\n"); } /***与随机值比较***/ } if(times<20){ printf("猜对了!\n");//正确结果 printf("您一共猜了%d次",times); } else{ printf("对不起,猜错了!数字是%d。\n",num); printf("您一共猜了%d次\n",times);//错误结果 } } void res(){//询问是否重新再来 printf("\n还要在玩一遍吗?\n1.是的 2.退出。"); int s; scanf("%d",&s); /*进行选择*/ if(s==1){ chooce(); } else if(s==2){ printf("谢谢您!\n"); exit(0);//退出程序 } else{ printf("请输入正确的数字!\n"); res(); } /*进行选择*/ return res();//将res函数返回main函数 } int main(){ name_set();//问候 start();//执行选择 int yes=1;//设置重启值,调用res函数 if(yes==1){ res(); } }
这里函数的顺序可以打乱,因为我们在前面是声明过一遍函数的,并不需要函数的顺序,因为不声明的话,很难去找到想用的函数!!!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自学编程网。
- 本文固定链接: https://zxbcw.cn/post/215809/
- 转载请注明:必须在正文中标注并保留原文链接
- QQ群: PHP高手阵营官方总群(344148542)
- QQ群: Yii2.0开发(304864863)