我是靠谱客的博主 迅速黑米,最近开发中收集的这篇文章主要介绍让你C语言学完分支和循环就能写出猜数字小游戏,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

写一个简单的猜数字小游戏
游戏的规则与内容:
输入一个1-100的数字,给你10次机会来猜出它
我们直接写游戏的内容:

#include <stdio.h>

int main()
{
	int a = 15;//要被猜的数字,假设它是随机的
	int tmp = 0;//每次输入的数字
	int i = 10;//一局游戏只能猜10次
	while (i)
	{
		scanf("%d",&tmp);
		if (tmp > a)
		{
			//如果输入的数字大于要猜的数字,就进入
			printf("猜大了n");
		}
		else if (tmp < a)
		{
			//如果输入的数字小于要猜的数字,就进入
			printf("猜小了n");
		}
		else
		{
			//否则就是才对了
			printf("猜对了n");
			//猜对了,就不需要再猜了,就退出循环
			break;
		}

		//每次猜完 i--
		i--;
	}
	//程序走到这里只有两种原因
	//1.当 i==0 的时候循环结束
	//2.当数字猜对的时候,break会退出循环,就算是第十次才对的,i 也是 1
	//所以我们判断如果 i == 0 游戏失败,i > 0 游戏胜利,并且输出是猜了几次后猜对的
	if (i == 0)
	{
		printf("游戏失败!n");
	}
	else if (i > 0)
	{
		printf("恭喜你走了%d步就猜对了", 10-i+1);
		//10是总步数,i是剩余步数,10-i+1计算出走了的步数
		//因为我们是在每次猜数字,猜错了,程序才会执行 i--
		//猜对的话程序就不会执行 i-- 但我们也算走了一步 所以在 i-10 后在 +1
	}
	return 0;
}

这样写有一个缺陷就是,程序没有一个随机数的生成
这里我们就要用到C语言里面的一个库函数 rand()
(这个知识点不用深入掌握,只需要知道怎么用就可以了)

rand函数是专门用来生成随机数的
rand函数返回的是0~(32767)之间的一个随机数

rand函数在使用之前要使用一个srand函数来设置随机数的生成器
srand函数在程序中只要调用一次就可以了,不需要频繁调用
rand与srand的头文件为 <stdlib.h>

C语言中,time函数会返回时间戳
time的头文件为 <time.h>

所以我们生成随机数的代码,这样用就可以

int main()
{
	srand((unsigned int)time(NULL));
	int a = rand();
	//这里 a 的值就是0~32767的随机数
}

所以我们生成 1~100 的随机值只需要给 a = rand()%100+ 1
所以我们的猜数字游戏代码为:

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

int main()
{
	srand((unsigned int)time(NULL));
	int a = rand()%100 + 1;
	int tmp = 0;//每次输入的数字
	int i = 10;//一局游戏只能猜10次
	printf("猜数字游戏,请输入一个 1--100 的数字n");
	while (i)
	{
		scanf("%d", &tmp);
		if (tmp > a)
		{
			//如果输入的数字大于要猜的数字,就进入
			printf("猜大了n");
		}
		else if (tmp < a)
		{
			//如果输入的数字小于要猜的数字,就进入
			printf("猜小了n");
		}
		else
		{
			//否则就是才对了
			printf("猜对了n");
			//猜对了,就不需要再猜了,就退出循环
			break;
		}

		//每次猜完 i--
		i--;
	}
	//程序走到这里只有两种原因
	//1.当 i==0 的时候循环结束
	//2.当数字猜对的时候,break会退出循环,就算是第十次才对的,i 也是 1
	//所以我们判断如果 i == 0 游戏失败,i > 0 游戏胜利,并且输出是猜了几次后猜对的
	if (i == 0)
	{
		printf("游戏失败!n");
	}
	else if (i > 0)
	{
		printf("恭喜你走了%d步就猜对了", 10 - i + 1);
		//10是总步数,i是剩余步数,10-i+1计算出走了的步数
		//因为我们是在每次猜数字,猜错了,程序才会执行 i--
		//猜对的话程序就不会执行 i-- 但我们也算走了一步 所以在 i-10 后在 +1
	}
	return 0;
}

为了使游戏更完善我们可以加上游戏菜单,开始游戏与退出游戏
代码如下:

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

void menu()
{
	printf("**************************n");
	printf("******    1. play   ******n");
	printf("******    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();//game函数中是猜数字的整个路基逻辑
			break;
		case 0:
			printf("退出游戏n");
			break;
		default:
			printf("选择错误,重新选择n");
			break;
		}
	} while (input);

	return 0;
}

最后我们再把游戏部分,与游戏菜单,开始游戏,退出游戏,写在一起
只需要把游戏的 函数名改成 void game()
最终代码如下:

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

void game()
{
	srand((unsigned int)time(NULL));
	int a = rand() % 100 + 1;
	int tmp = 0;//每次输入的数字
	int i = 10;//一局游戏只能猜10次
	printf("猜数字游戏,请输入一个 1--100 的数字n");
	while (i)
	{
		scanf("%d", &tmp);
		if (tmp > a)
		{
			//如果输入的数字大于要猜的数字,就进入
			printf("猜大了n");
		}
		else if (tmp < a)
		{
			//如果输入的数字小于要猜的数字,就进入
			printf("猜小了n");
		}
		else
		{
			//否则就是才对了
			printf("猜对了n");
			//猜对了,就不需要再猜了,就退出循环
			break;
		}

		//每次猜完 i--
		i--;
	}
	//程序走到这里只有两种原因
	//1.当 i==0 的时候循环结束
	//2.当数字猜对的时候,break会退出循环,就算是第十次才对的,i 也是 1
	//所以我们判断如果 i == 0 游戏失败,i > 0 游戏胜利,并且输出是猜了几次后猜对的
	if (i == 0)
	{
		printf("游戏失败!n");
	}
	else if (i > 0)
	{
		printf("恭喜你走了%d步就猜对了n", 10 - i + 1);
		//10是总步数,i是剩余步数,10-i+1计算出走了的步数
		//因为我们是在每次猜数字,猜错了,程序才会执行 i--
		//猜对的话程序就不会执行 i-- 但我们也算走了一步 所以在 i-10 后在 +1
	}
	
}
void menu()
{
	printf("**************************n");
	printf("******    1. play   ******n");
	printf("******    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();//game函数中是猜数字的整个路基逻辑
			break;
		case 0:
			printf("退出游戏n");
			break;
		default:
			printf("选择错误,重新选择n");
			break;
		}
	} while (input);

	return 0;
}

在这里插入图片描述
猜数字小游戏这样就已经完成了
拜拜~

最后

以上就是迅速黑米为你收集整理的让你C语言学完分支和循环就能写出猜数字小游戏的全部内容,希望文章能够帮你解决让你C语言学完分支和循环就能写出猜数字小游戏所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部