C语言实现益智小游戏--猜数字游戏

刚刚学完循环尝试做一个猜数字的小游戏,在玩任何一款游戏时,我们都希望有一个开始的界面能够引导我们去进行下一步的操作,所以我们打算先让屏幕显示一个是否选择玩游戏的菜单,然后再选择是否进入游戏。

根据前面所学while循环,for循环,do...while循环,此时只有do...while循环能够满足要求。先执行do内部的语句,判断是否可以往下执行,以此种方式来进行循环。此时,我们可以进行框架的初步构建zai

int main()
{

    do
        {
            
                      
        }
        while;
    return 0;
}

 在do内部要采用 printf 来进行菜单的打印,并进行选择是否进入游戏,进入按1,退出游戏按 0,输入其他数字显示输入错误,此时只有3种情况,可以使用 switch 语句来进行选择。此时框架可以如下代码所示

int main()
{
	int input = 0;
	do
	{
		printf("************\n");
		printf("***1.play***\n");
		printf("***0.exit***\n");
		printf("************\n");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game_start();
			break;
		case 0:
			break;
		default:
			printf("请重新输入");
			break;
		}

	} while(input);


	return 0;
}

写到这个时候,基本的逻辑框架已经清楚了,在输入  1  的时候,游戏开始,在输入0的时候,break跳出,执行下面的while语句,此时的input为0 ,循环结束,当输入其他非0数时,打印一句“请重新输入”,此时的input为非0数,判断为真,程序继续进行(在C语言中,0表示假,非0表示真)。我们现在只需要实现 game_start 里边的内容即可。在这个函数内,需要产生一个随机数,然后输入的input与随机数做对比,如果输入的数字大,则输出“猜大了”,如果输入的数字小,则输出“猜小了”,猜对时,退出循环并打印“猜对了”。在c语言中产生随机数需要使用 rand() 函数,具体实现如下

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<time.h>
void game_start()
{
	int input = 0;
	int ret = rand() % 100 + 1;
	printf("请输入数字->");
	while (input != ret)
	{
		scanf("%d", &input);
		if (input > ret)
			printf("猜大了\n");
		if (input < ret)
			printf("猜小了\n");
	}
	printf("恭喜你,猜对了\n");
}
int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	do
	{
		printf("************\n");
		printf("***1.play***\n");
		printf("***0.exit***\n");
		printf("************\n");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game_start();
			break;
		case 0:
			break;
		default:
			printf("请重新输入");
			break;
		}

	} while(input);


	return 0;
}

此时,一个能够实现完整功能的猜数字游戏就完成了。可以再进一步封装一下,单独写一个菜单函数,让代码看起来更简洁。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<time.h>
void menu()
{
		printf("************\n");
		printf("***1.play***\n");
		printf("***0.exit***\n");
		printf("************\n");
}
void game_start()
{
	int input = 0;
	int ret = rand() % 100 + 1;
	printf("请输入数字->");
	while (input != ret)
	{
		scanf("%d", &input);
		if (input > ret)
			printf("猜大了\n");
		if (input < ret)
			printf("猜小了\n");
	}
	printf("恭喜你,猜对了\n");
}
int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	do
	{
		menu();
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game_start();
			break;
		case 0:
			break;
		default:
			printf("请重新输入");
			break;
		}

	} while(input);


	return 0;
}

这样一个简洁并且功能完整的猜数字游戏就实现了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值