超级简单的猜数字游戏

前言

今天写一个猜数字的小游戏
要求:
1电脑自动生成一个1~100的数字
2.玩家猜数字直到猜对

一、随机数生成

1、rand函数

原型:
int rand (void)
rand函数会返回一个伪随机数,范围是由编译器决定,大部分编译器是32767.
rand需要包含头文件<stdlib.h>,
程序每次运行rand生成的数字是一样的。
rand生成的随机数并不是真正的随机数,是基于种子生成的随机数,种子默认为1

2、srand函数

原型:
void srand (unsigned int seed)
srand函数是用来初始化随机数的生成器,也就是用来随机种子的,让每个随机序列都不一样。

3、time函数

time函数需要头文件<time.h>
time会返回当前的日历时间,其实返回的是1970年1月1日0时0分0秒到现在程序运行时间的差值,单位是秒。
当time(NULL)时会返回差值。
srand((unsigned int)time(NULL));
用time的返回值作为种子。因为srand的参数是(unsigned int)所以要强制类型转换
一个程序用一次srand函数就行了,用的快种子还没随机。

4、设置随机数范围

生成0~99的范围:
rand()%100;
生成1~100的范围:
rand()%100+1;
如果生成100~200的范围:
100+rand()%(200-100+1);
如果生成a~b的范围:
a+rand()%(b-a+1);

二、代码

我先把每个模块写出来对其进行讲解,然后再把全部代码写出来。
下面代码是先把进入游戏的模版写好,游戏的具体实现在game函数中实现。

void meet()
{
	printf("*************************");
	printf("*****1.  进入游戏********");
	printf("*****0.  退出游戏********");
	printf("*************************");
	printf("*************************");

}
int main()
{
	int a = 0;
	do
	{
		meet();
	  scanf("%d", &a);
		switch (a)
		{
		case 1:
			game();
			break;
		case 0:
			printf("游戏结束\n");
			break;
		default:
			printf("重新输入\n");
		}
		
	} while (a);
	return 0;
}

下面的模块是具体的代码实现,先给rand随机数设定一个取值范围,然后再输入一个自己想输入的数,接着进行判断直到才对。

void game()
{
	int r = rand() % 100 + 1;
	int a = 0;
	while (1)
	{
		printf("请开始猜数字");
		scanf("%d", &a);
		if (a < r)
			printf("猜小了");
		else if(a>r)
		{
			printf("猜大了");
		}
		else
		{
			printf("猜对了");
			printf("%d\n", a);

			break;
		}

	}
}

下面是一共需要的代码。

#include<stdio.h>
#include <stdlib.h>
#include <time.h>
void meet()
{
	printf("*************************\n");
	printf("*****1.  进入游戏********\n");
	printf("*****0.  退出游戏********\n");
	printf("*************************\n");
	printf("*************************\n");

}
void game()
{
	int r = rand() % 100 + 1;
	int a = 0;
	while (1)
	{
		printf("请开始猜数字");
		scanf("%d", &a);
		if (a < r)
			printf("猜小了");
		else if(a>r)
		{
			printf("猜大了");
		}
		else
		{
			printf("猜对了");
			printf("%d\n", a);

			break;
		}

	}
}
int main()
{
	int a = 0;
	srand((unsigned int)time(NULL));
	do
	{
		meet();
		scanf("%d", &a);
		switch (a)
		{
		case 1:
			game();
			break;
		case 0:
			printf("游戏结束\n");
			break;
		default:
			printf("重新输入\n");
		}
		
	} while (a);
	return 0;
}

总结

这个猜数字游戏其中比较难的是随机数的实现。
应该先用srand实现随机种子,然后再根据想要的取值范围设置返回值。
如果有对代码有疑问的,评论区留言立马解答。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值