猜数字小游戏

一、介绍

继上一篇介绍了生成随机数,今天我们来将它运用到具体场景。

下面我们来设置一个小游戏————猜数字

游戏规则:

计算机生成一个1~100的随机数,你输入数字猜测,计算机根据你猜测的数字给出反馈(猜大了,猜小了,猜对了)直到猜对,如果猜对了,会输出你猜了多少次。你也可以限制猜测次数来提高游戏难度。

二、思路

上一篇博文我们已经说过如何生成随机数,下面讲一讲它的使用技巧。

生成有范围的随机数

我们要求的是1~100的数字,那么对这个随机数肯定有范围限制。如何实现这一限制呢?不要忘记在C语言中有取模符号(%)。这就方便许多了。

公式:

生成a~b的随机数,方法如下:

a + rand()%(b-a+1)

例如:

        生成100~200的随机数

100+rand()%(200-100+1)                 即100+rand()%(101)

        生成1~100的随机数

1+rand()%(100-1+1)                         即1+rand()%100

其他:

为了追求高内聚低耦合,我们可将代码分为几个自定义函数来实现。

同时,为了追求玩家自主性,我们可以给玩家设置选1玩,选0退出这样的设置。

三、代码实现

1.无次数限制

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void game()
{
	int r = rand() % 100 + 1,count = 0;
	int guess = 0;
	while (1)
	{
		count++; 
		printf("请猜数字->:");
		scanf("%d", &guess);
		if (guess < r)
		{
			printf("猜小了\n");
		}
		else if (guess > r)
		{
			printf("猜大了\n");
		}
		else
		{
			printf("恭喜你猜对了\n");
			printf("你猜了%d次\n",count);
			break;
		}
	}
}

void menu()
{
	printf("***********************\n");
	printf("**** choose 1.play ****\n");
	printf("**** choose 0.exit ****\n");
	printf("***********************\n");
}
int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	do {
		menu();
		printf("请选择->:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			printf("游戏结束\n");
			break;
		default:
			printf("选择错误,重新选择\n");
			break;
		}
	} while (input);
		return 0;
}
运行展示:

接下来可以选择1继续玩,或者0退出游戏,自由度高,感兴趣的可以自己动手运行。

2.有次数限制

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void game()
{
	int r = rand() % 100 + 1;
	int guess = 0;
	int count = 5;
	while (count)
	{
		printf("\n你还有%d次机会\n",count);
		printf("请猜数字->:");
		scanf("%d", &guess);
		if (guess < r)
		{
			printf("猜小了\n");
		}
		else if (guess > r)
		{
			printf("猜大了\n");
		}
		else
		{
			printf("恭喜你猜对了\n");
			break;
		}
		count--;
	}
	if (count == 0)
	{
		printf("你失败了,太菜了你,正确值是:%d\n", r);
	}
}

void menu()
{
	printf("***********************\n");
	printf("**** choose 1.play ****\n");
	printf("**** choose 0.exit ****\n");
	printf("***********************\n");
}

int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	do {
		menu();
		printf("请选择->:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			printf("游戏结束\n");
			break;
		default:
			printf("选择错误,重新选择\n");
			break;
		}
	} while (input);
		return 0;
}
运行展示:

我运气比较好,第一次运行就成功了。

有了一定的C语言知识后,我们可以自己写代码玩游戏小游戏,也是十分有趣的。

                                                                            立志欲坚不欲锐,成功在久不在速

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值