当前位置:网站首页>3.猜数字游戏

3.猜数字游戏

2022-07-06 09:20:00 是王久久阿

猜数字游戏:随机生成1~100的数,让用户去猜。当猜的数比随机数大时,提示“猜大了”;当才的数比随机数小时,提示“猜小了”;猜的数与随机数相同时,提示“猜对了”。

 

1.整体框架

首先,在开始时要有一个菜单,菜单栏中打印出选项:1.paly、0.exit。

然后,玩家输入选项,当输入1时,开始游戏;输入0时,结束游戏;出去其他数时,重新输入。并且将游戏设置成可以循环玩的,玩完一次后,可以接着玩。

#include<stdio.h>


void menu()
{
	printf("******************\n");
	printf("***** 1.paly *****\n");
	printf("***** 0.exit *****\n");
	printf("******************\n");
}

int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));//用srand修饰rand
	do
	{
		menu();
		printf("请选择(1/0):>");
		scanf("%d", &input);
		switch (input)
		{
		case 0:
			printf("退出游戏\n");
			break;
		case 1:
			printf("开始游戏,请猜数字(1~100)\n");
			game();//游戏
			break;
		default:
			printf("输入错误,请重新输入\n");
		}
	} while (input);
	return 0;
}

2.游戏部分

当整体框架写完成后,运行测试一下。测试成功,开始写游戏部分game()代码。

游戏部分的设计主要为:系统生成一个数字——玩家输入——判断——猜错了——提示——重新输入——判断——猜对了(或是次数用尽了)

因为整个过程需要不断的输入、判断,所以需要用到while循环。(注意:生成随机数部分不能放进while循环中,否则每循环一次,都将生成新的随机数)

void game()
{
	int num = rand() % 100 + 1;//生成1~100的随机数
	int guess = 0;
	int count = 6;
	while (count--)//6次机会;后置++,先使用再++
	{
			printf("请输入:>\n");
			scanf("%d", &guess);
			if (guess > num)
			{
				printf("猜大了\n");
			}
			else if (guess < num)
			{
				printf("猜小了\n");
			}
			else
			{
				printf("猜对了\n");
				Sleep(500);//停止运行500毫秒
				system("cls");//清空屏幕.......
				break;
			}
	}
		printf("对不起,机会已用完\n");
		Sleep(500);//停止运行500毫秒
		system("cls");//清空屏幕
}

(1)当使用rand()函数时创建随机值时,会发现每次的随机值都一样,利用MSDN,查询可知:

这时需要在主函数用srand修饰一下rand的函数,利用时间time,来生成一个随机数。

srand((unsigned int)time(NULL)),这里(unsigned int)将time的返回值强制类型转换,转成换无符号整型,然后给time传一个空指针(NULL)即可。使用rand需要包含头文件<stdlib.h>,使用time需要包含<time.h>。

(2)int num = rand() % 100 + 1,当随机数%100时,其范围是0~99,所以需要再+1。

(3)while (count--),这里指定有count次机会,后置--表示为先使用,再--,当count=0时结束循环。

(4)sleep(a)为停止运行a毫秒,system("cls")为清空屏幕,需包含头文件<windows.h>。

整体代码如下:

//猜数字游戏

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

void menu()
{
	printf("******************\n");
	printf("***** 1.paly *****\n");
	printf("***** 0.exit *****\n");
	printf("******************\n");
}

void game()
{
	int num = rand() % 100 + 1;//生成1~100的随机数
	int guess = 0;
	int count = 6;
	while (count--)//6次机会;后置++,先使用再++
	{
			printf("请输入:>\n");
			scanf("%d", &guess);
			if (guess > num)
			{
				printf("猜大了\n");
			}
			else if (guess < num)
			{
				printf("猜小了\n");
			}
			else
			{
				printf("猜对了\n");
				Sleep(500);//停止运行500毫秒
				system("cls");//清空屏幕.......
				break;
			}
	}
		printf("对不起,机会已用完\n");
		Sleep(500);//停止运行500毫秒
		system("cls");//清空屏幕
}


int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));//用srand修饰rand
	do
	{
		menu();
		printf("请选择(1/0):>");
		scanf("%d", &input);
		switch (input)
		{
		case 0:
			printf("退出游戏\n");
			break;
		case 1:
			printf("开始游戏,请猜数字(1~100)\n");
			game();//游戏
			break;
		default:
			printf("输入错误,请重新输入\n");
		}
	} while (input);
	return 0;
}

如果想将我们制作的游戏发给同学试玩,将VS中debug改成release,测试并保存,到项目保存的地方找到release文件。 

X86为32位,推荐保存X64,将X64发给同学可正常运行。

 点击release——将其中的exe文件发给同学即可。

原网站

版权声明
本文为[是王久久阿]所创,转载请带上原文链接,感谢
https://blog.csdn.net/why1472587/article/details/124845659