C语言-数字爆炸游戏

 问题:

        你好,欢迎来到数字爆炸,系统随机生成一个数字,猜大了,提示猜大了,猜小了,提示猜小了。

思路:

  1. 先写游戏大概思路
  2. 首先,会有菜单吧,所以先写一个菜单函数,显示菜单的内容。
  3. 然后选择菜单中的选项,不同的选项,对应不同的功能,因此这个用switch实现最好。
  4. 而想要一直玩,选择退出才结束,则,来一个do while循环,因为先出菜单,再选择,所以选择do while;
  5. 如果选择进入游戏,则进入游戏函数,
  6. 游戏函数开始,随机生成一个数字,rand()函数为随机生成数字。但由于范围过大,我们想生成0到100内的数字,给随机生成的数字取模(即取余数)%100,这个所求的肯定在0-99内,因为大于100的,我都出除走了。因为想出现100,所以再+1.因此总体语句为:int ret = rand() % 100 + 1;
  7. 但rand函数要求需要一个随机数的起始地址。这时候需要用到srand()函数,他会提供一个随机数的起始地址,保证不会乱跳。而srand()函数内部,需要提供一个一直变化的量,而电脑时间就是一直变的,因此,用time(NULL)函数最合适,又因为time返回time_t类型,即long long类型,但srand需要unsigned int类型,所以给time强制转化即srand((unsigned int)time(NULL));这里需要注意,srand提供的随机数起始位置,调用一次就好,因此在主函数开始,调用即可。
  8. 之后便进行游戏即可。

代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
	printf("********************\n");
	printf("1-开始游戏\n");
	printf("2-退出\n");
	printf("********************\n");
}
void game()
{
	int ret = rand()%100+1;
	printf("%d\n", ret);
	Sleep(50);
	system("cls");
	int n = 0;
	while (1)
	{
		printf("请输入你猜的数字\n");
		scanf("%d", &n);
		if (n == ret)
		{
			printf("我靠,牛皮,猜对了\n");
			printf("\n还想再来一局不,搏一搏,单车变摩托\n");
			printf("再来一局(1/0):");
			int choose = 0;
			scanf("%d", &choose);
			if (choose == 1)
			{
				game();
			}

			break;
		}
		else if (n < ret)
			printf("猜小了啊,老铁\n");
		else if (n > ret)
			printf("猜大了,铁子\n");
	}
}

int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	do
	{
		menu();
		printf("请选择选项\n");
		scanf("%d", &input);
		
		switch (input)
		{
			case 1:
				game();
				break;
			case 2:
				break;
			default:
				printf("选项不存在,请重新输入\n");
				break;
		}
	} while (input != 2);
}

结果如下:

猜你喜欢

转载自blog.csdn.net/m0_59844149/article/details/131434521