如何用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();
}
}
这里函数的顺序可以打乱,因为我们在前面是声明过一遍函数的,并不需要函数的顺序,因为不声明的话,很难去找到想用的函数!!!