零基础c语言学会猜数字小游戏

一、目录 

1.主函数的编写

2.菜单函数的编写

3.Game函数的编写


一、明确思路。

  要想实现猜数字的小游戏,我们需要使电脑自动产生一个随机数,此时再c语言当中我们就需要引入rand()这个函数,但我们需知rand()函数产生的随机数是伪随机数,不是真的随机数,于是我们就需要引入srand()这个函数,srand()函数的类型我们一般定义为unsigned int ,再srand()函数中,我们需要引入一个一直在变化的种子,我们可以让这个种子为时间(time),时间是一直在变化的

srand ((unsigned int)time(NULL));

  需注意:使用srand()函数以及time()函数需要包含头文件:

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

  至此,我们就可以让编译器产生一个随机数了。

  之后便是主函数,Game函数,菜单(Menu)函数的编写。

二、主函数的编写。

  在刚开始时,我们要先给玩游戏的人一个选项,看他是需要开始游戏还是退出游戏,所以此时我们可以自己编写一个菜单函数来美化这一个过程(Menu菜单函数)的编写,详情见《标题三》。此时我们让玩家输入相对应的数字。

    int i = 0;
    printf("请输入数字:");
	scanf("%d", &i);

  我们玩游戏肯定不能只玩一次,所以我们在主函数的这里需要引入一个do while循环,玩家可以自行选择是继续游戏还是退出游戏。所以主函数的整个过程是套用在do while循环里面的。当玩家输入i的值之后,我们又进入switch循环里面,当输入的是1,我们开始玩游戏。输入的是0,我们退出游戏。输入其他数字,我们打印出数字输入错误,请重新输入。(需要注意的是,许多初学者老是对switch的执行不熟悉,如果不加入break,在符合一个条件之后,仍然会执行下一个语句,所以我们在符合一个条件之后,就需要加入一个break来打破循环。)到这里我们主函数的代码的思路就十分清楚了,主函数的代码如下:

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

 三、菜单(Menu)函数的编写

  注意菜单函数是我们用来美化玩家使用的体验的,该函数并不是很复杂,只需要几句简单的printf 语句即可,此函数也不需要返回任何值,所以我们用void,使函数不返回值。完整代码如下:

void menu()
{
	printf("********************\n");
	printf("*****1.开始游戏*****\n");
	printf("*****0.退出游戏*****\n");
	printf("********************\n");
}

四、Game函数的编写 

   在Guess函数的编写中,我们要明确,我们想让电脑随机产生的数在什么范围,一般猜数字都是让随机数产生在1—100之间,所以我们可以定义r来存放随机数,一个公式生成a—b的随机数:a+rand()%(b-a+1),所以生成1—100的随机数的代码便是:

int r = rand() % 100 + 1;

  接下来,我们定义guess变量,使其代表玩家输入的值,我们让guess与r进行对比,若r=guess,就打印猜对了,若r<guess,我们就打印猜大了,若r>guess,就打印猜小了(注意不要将大小弄反,不然永远也猜不对)。因为大部分人不可能1次就猜对,所以为了增加游戏的可玩性,我们需要加入一个循环,来使玩家能够进行多次猜数字,所以我们引入while函数来进行循环。引入count进行计数,使玩家明白还有多少次猜数字的机会,若最后一次都没有猜对,就打印失败了,正确数字是**。完整代码如下:
 

void game()
{
	int guess = 0;
	int r = rand() % 100 + 1;
	int count = 7;//规定猜数字的次数
	while (count)
	{
		printf("你还有%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);

}

 至此,我们猜数字小游戏就全部结束了,完整代码如下,可供参考:

//猜数字游戏
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdlib.h>
#include<time.h>
#include<stdio.h>
void menu()
{
	printf("********************\n");
	printf("*****1.开始游戏*****\n");
	printf("*****0.退出游戏*****\n");
	printf("********************\n");
}
void game()
{
	int guess = 0;
	int r = rand() % 100 + 1;
	int count = 7;//规定猜数字的次数
	while (count)
	{
		printf("你还有%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);

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

五、总结

  猜数字小游戏只要明确好思路,能够自己编写出产生随机数的代码,再套用几个循环便可解决了。

  此小游戏还可以进行拓展,欢迎大家能够拓展之后,在评论区进行交流。以上内容有不足的地方也往各位进行指点,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值