如何用C语言写出一个猜数字游戏

如何用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();
		}
}

这里函数的顺序可以打乱,因为我们在前面是声明过一遍函数的,并不需要函数的顺序,因为不声明的话,很难去找到想用的函数!!!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值