猜数字小游戏

前面我们学习了c语言的类型、变量、分支与循环,接下来我们用这些知识制作一个猜数字的小游戏。

//首先我们玩游戏需要打印一个开始的菜单函数
void menu(){
printf("*********************\n");
printf("******1. play********\n");
printf("******0. exit********\n");
printf("*********************\n");
}
//输入1则开始游戏,输入0则退出游戏,如果输入其他数字就输入错误重新输入
int main(){
int i;
do{
menu();//调用菜单函数
scanf_s("%d", &i);
switch (i) {
	case 1:
		printf("开始游戏\n请输入数字:\n");
		//游戏程序函数
		break;
	case 0:printf("游戏结束\n");break;
	default:printf("输入错误,请重新输入:\n");break;
 }
}while(i);
return 0;
}//主函数
//当重新输入时就需要进行循环,这时候我们可以用do...while循环

这些基本框架我们就完成了,接下来我们学习新知识点——生成随机数

我们用rand函数进行生成,在头文件stdlib.h中,不需要参数,rand()%n,这里n是一个常量,如想做1~100间的随机数就rand()%101;但是我们这里生成的是一个伪随机数,也就是在rand()里有个“种子”,我们如果没有改变种子大小生成的随机数就是不变的,这时候我们用到srand函数,也就是设置我们的种子值,返回的是unsign int 类型,而time函数可以返回一个时间戳,time*变量,也可以直接传NULL空指针(后面会详细讲解),在头文件time.h中,因为每个时间戳都不一样,所以种子也就会不一样,但是注意的是用time时要强制类型转换。

//设计游戏函数
int game(){
srand((unsigned int)time(NULL));
int r = rand() % 100;
//r是我们生成的随机数
int num;
int count = 5;
shuzi:
	scanf_s("%d", &num);
	while (count) {
		if (num > r) {//用我们猜的数字与随机数r比较
			printf("猜大了");
			printf("还剩%d次机会\n", count);
			count--;
			goto shuzi;//goto语句进行跳转循环
		}
		else if (num < r) {
			printf("猜小了");
			printf("还剩%d次机会\n", count);
			count--;
			goto shuzi;//goto语句进行跳转循环
		}
		else {
			printf("恭喜你猜对了,游戏结束\n");
			break;
		}
	}
	if (!count) {//若猜对了count为真,!count为假则不执行,若5次没猜对则!count为真
		printf("很遗憾,游戏失败\n");
		printf("正确答案是%d\n", r);
	}
	return 0;
}

我们只需要将game函数放在主函数中进行调用就能得到一个完整的猜数字小游戏.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值