栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言——猜数字游戏

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言——猜数字游戏

目录

前言

整体构思

内容

游戏目录

整体实现

游戏实现

代码

前言

        为了确保博客内容的连贯,最近把C语言学的差不多了,最近博客一天一更,关注一下。

整体构思

        首先打印游戏目录,通过输入让玩家选择是否进行游戏,0为退出游戏,1为开始游戏,游戏的开始需要先生成一个随机数,猜的过程中反馈信息,猜到了,猜大了,猜小了,并且游戏过程中可以中断游戏。

内容

游戏目录
void menu()
{
	printf("******1.猜数字******n");
	printf("******0.退游戏******n");
}

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

         用do-while语句实现一开始就打印菜单,用switch语句接收输入的内容,执行玩家输入相应的情况,输入1的时候开始玩游戏,game函数实现游戏;输入0的时候,退出游戏;输入其它数字的时候,显示输入错误,并且能够循环,重新输入。此时用n作为while循环条件的时候,整体逻辑通顺。

游戏实现
void game()
{
    //%100,范围是0~99,加1后才是1~100
	int guess = rand()%100 + 1;
	int search = 0;
	printf("提示:0为中断游戏n");
	printf("猜数字范围是1-100");
	printf("请输入猜的数n");
	while (1)
	{
		scanf("%d", &search);
		if (0 == search)
		{
			printf("游戏中断n");
			break;
		}
		else if (search > guess)
		{
			printf("猜大了,请继续猜n");
		}
		else if (search < guess)
		{
			printf("猜小了,请继续猜n");
		}
		//上面条件都不成立,即为猜到数字
		else
		{
			printf("猜对了,数是%dn", guess);
			break;
		}
	}
}

        进入游戏,最先需要做的就是生成一个随机数,C语言提供了rand库函数来生成随机数,范围是0~32767,但是只使用rand函数,每次开始程序的生成的随机数都是与上一次开始程序相同的随机数。为了避免这种问题,要先使用srand库函数来调用一个随机数作为rand函数生成随机数的起点。C语言提供了一个time库函数来生成时间戳(北京时间1970年01月01日08时00分00秒到现在的总秒数),而时间戳是每秒都在改变的。

        用srand函数来接收time函数,srand函数需要的参数是unsigned int类型的,而time函数返回的类型是time_t类型的,类型的差异,强制类型转换,time函数的值不需要存起来,所以time函数的参数用空指针,srand((unsigned int)time(NULL)),srand函数只需调用一次就好,所以在main函数执行的时候调用。

        猜数字需要不断的猜,所以用while循环实现,游戏的过程中如果不想玩了,用if语句判断,输入0,break退出循环;其它数就显示猜大了、猜小了,继续循环;如果猜对了,则break跳出循环。注意guess变量的生成要放在while循环的外面,不然每次猜都是不同的数,输入放在while循环里面,要不断的猜数。

代码

        printf、scanf的头文件是stdio.h,rand、srand的头文件是stdlib.h,time的头文件是time.h

#define _CRT_SECURE_NO_DEPRECATE
#include 
#include 
#include 

void menu()
{
	printf("******1.猜数字******n");
	printf("******0.退游戏******n");
}

void game()
{
	int guess = rand()%100 + 1;
	int search = 0;
	printf("提示:0为中断游戏n");
	printf("猜数字范围是1-100");
	printf("请输入猜的数n");
	while (1)
	{
		scanf("%d", &search);
		if (0 == search)
		{
			printf("游戏中断n");
			break;
		}
		else if (search > guess)
		{
			printf("猜大了,请继续猜n");
		}
		else if (search < guess)
		{
			printf("猜小了,请继续猜n");
		}
		//上面条件都不成立,即为猜到数字
		else
		{
			printf("猜对了,数是%dn", guess);
			break;
		}
	}
}

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

        感谢大家的观看,觉得文章写得不错的话,点赞、评论、关注支持一下,后续还会整理别的知识点,若文章编写出现错误,麻烦在评论或者私信一下,我看到后及时更改,谢谢。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/778957.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号