猜数字游戏

欢迎收看今天的编程栏目,好男人就是我,我就是你们的菜鸡哥

今天我们来讲一个简单的小游戏,猜数字游戏。

那么首先我们要打印出来一个游戏面板吧,给予玩家选择的权利,我们不能强迫他们玩吧,如果可以这样的话,那我岂不是赚翻了。哈哈,玩笑话。

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

每次进来都要显示面板,那么我们可以用do~while循环进行。多种选择,那么将用到switch多分支选择语句。

int main()
{

int input = 0;

do
{
sex();

printf("请选择:\n");
scanf("%d",&input);
switch(input)
{
    case:1
        game();//选择1那么我们就进行玩游戏。
        break;
    case:0
        printf("退出游戏.\n");
        break;
    default:
        printf("输入错误,请重新输入.\n");
        break;

}while(input)

return 0;
}

面板已经有了,那么接下来我们就应该写猜数字game()的代码了。那么我们是不是要电脑生成随机数呢,而且是一个我们知道的范围,不然范围太大了,我们玩起来多没有意思啊。

那么在c语言中,我们怎样生成随机数呢,我们可以用到rand函数,rand函数生成的随机数是0~32767.但当你真的用这个函数时,你会发现,生成的一组数据中虽然是不一样的,但是你会发现后面产生的都是同一种数据。那这可不行啊,有规律的还怎么玩游戏?这是因为rand生成的随机数与它里面的种子有关,种子没有改变,生成的数据就不会改变,那么有没有一种方法让种子改变呢?

当然是有的咯,c语言中又提供了一个函数叫srand,它用来初始化随机数的生成器的。

srand的原型:void srand (unsigned int seed) 无符号整型。

那就是说给srand的种子是随机的话,那rand就能生成随机数,但是在srand函数生成生成随机数的同时又需要一个随机数,此时就有一些矛盾了。

那么在c语言中,还有一个函数叫time,因为时间是随时发生变化的,所以我们可以使用程序运行的时间作为种子。

time函数的原型:time_t time (time_t* timer)

time函数的参数timer,如果返回的是非NULL的指针函数也会将这个返回的差值放在timer指向的内存中带回去,如果timeNULL,就返回这个时间的差值,time函数返回的这个时间差被叫做:时间戳

那么问题解决了:

srand((unsigned int)time(NULL));//强制类型转换

那么game函数就好写了吧:

void game()
{
    int a = rand()%100+1;//生成1`100的随机数
    int guess = 0;
    int count = 5;//设置只有五次机会。
    printf("数字的范围为1~100\n");

    while(count)
{
        printf("您还有%d次机会\n",count);
        printf("请猜数字:\n");
        scanf("%d",&guess);
         
        if(guess>a)
            {
                printf("猜大了\n");//注意别写错了,不然你根本猜不对
            }
        else if(guess<a)
            {
                printf("猜小了\n");
            }
        else
            {
                printf("恭喜你,猜对了\n");
                break;//猜对了,就跳出循环
            }
            count--;
}
if(count == 0)
{
    printf("很遗憾,你没有机会了。\n正确答案为%d\n",a);
}
}

那接下来看看整体的代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>//rand函数的头文件
#include <time.h>//time函数的头文件

void sex()
{
	printf("**********************\n");
	printf("****** 1. play *******\n");
	printf("****** 0. exit *******\n");
	printf("**********************\n");
};
void game()
{
	int a = rand() % 100 + 1;
	int count = 5;
	int guess = 0;
	printf("数字的范围为1~100\n");
	while (count)
	{
		printf("你还有%d次机会:\n",count);
		printf("请猜数字:");
			scanf("%d", &guess);
		if (a > guess)
		{
			printf("猜小了\n");
			printf("\n");
		}
		else if (a < guess)
		{
			printf("猜大了\n");
			printf("\n");
		}
		else
		{
			printf("猜对了,真棒!");
			printf("\n");
			break;
		}
		count--;
	}
	if (count == 0)
	{
		printf("很遗憾,你没有机会了\n正确答案是:%d\n", a);
	}
}

int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	do
	{
		sex();
		printf("请输入:>\n");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			printf("退出游戏");
			break;
		default:
			printf("输入错误,请重新输入。\n");
		}
	} while (input);

	return 0;
}

玩游戏展示: 

 

还有今天是程序员节,在此祝大家:祝福你们在编码的世界中,每天都能找到乐趣和挑战!愿你们的代码高效、功能强大,每一行都充满智慧和创造力!愿你们的Bug少如沙子,每一次调试都能顺利解决!无论是在漆黑的代码迷宫中还是在无尽的技术海洋中,愿你们都能坚持不懈,追求卓越!愿你们的技术不断进步,拥有无限的创新思维和工程能力!最重要的是,愿你们身体健康,平安快乐地度过每一天!加油,程序员朋友们!祝福你们!

 文字是偷的,但爱你们的心却是蒸的,加油!

今天的内容到此为止咯,大家帮帮忙看看有没有什么问题,我们一起探讨哦,或者你有什么问题,都可以提出来哦,我们一起进步!

不用太想念我,明天我还是会来的。

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

并不会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值