当前位置: 首页 > article >正文

C语言小游戏--猜数字

游戏过程:

由电脑随机在某个范围内生成一个数字,玩家猜数字并且输入,电脑判断是否正确,正确则游戏结束,错误则给出提示,直到玩家所给的答案正确为止

思路分析:

1.生成随机数

2.玩家可以多次输入数字并且得到反馈

分布处理:

1.玩游戏,首先我们要进入游戏菜单,所以我们要制作一个游戏界面(简略),可以开始或者退出

printf("***************************\n");
printf("******* 1.play ************\n");
printf("********0.exit ************\n");
printf("***************************\n");

2.玩游戏 不只是玩一次,所以要表示循环,同时输入0/1开始或者结束游戏

#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS

int main()
{
	int input=0;
	do {
		printf("***************************\n");
		printf("******* 1.play ************\n");
		printf("********0.exit ************\n");
		printf("***************************\n");

		printf("请选择->\n");
		scanf_s("%d", &input);
		switch (input)
		{
		case 1:
			printf("即将开始猜数字游戏\n");
				break;
		case 0:
			printf("即将退出游戏\n");
			break;
		default:
			printf("选择错误,请重新选择\n");
			break;
		}
		
	} while (input);


	return 0;
}

那么,对什么的代码进行整理可得

#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS

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

int main()
{
	int input=0;
	do {
		menu();

		printf("请选择->\n");
		scanf_s("%d", &input);
		switch (input)
		{
		case 1:
			
			printf("即将开始猜数字游戏\n");
				break;
		case 0:
			printf("即将退出游戏\n");
			break;
		default:
			printf("选择错误,请重新选择\n");
			break;
		}
		
	} while (input);


	return 0;
}

3.接下来就是游戏的具体内容,包括生成随机数和玩家进行猜数字

生成随机数:rand

#include<stdio.h>
#include<stdlib.h>
int main()
{
	RAND_MAX;
	int r =rand();//生成的随机数范围是0~7fff(32767)
	printf("%d\n", r);
	r = rand();
	printf("%d\n", r);
	r = rand();
	printf("%d\n", r);
	r = rand();
	printf("%d\n", r);
	return 0;
}

但是这个是有缺点的,这些生成的随机数是相同的,这就有问题了,那么指明解决呢?

srand用来初始化随机数

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
	srand((unsigned int)time(NULL));
	RAND_MAX;
	int r =rand();//生成的随机数范围是0~7fff(32767)
	printf("%d\n", r);
	r = rand();
	printf("%d\n", r);
	r = rand();
	printf("%d\n", r);
	r = rand();
	printf("%d\n", r);
	return 0;
}

游戏内容

void game()//猜数字游戏的实现
{
//1.生成随机数
		int ret = rand()%100+1;//1~100//生成的随机数范围是0~7fff(32767)
		//printf("%d\n", ret);
//2.猜数字
		int guess = 0;
		while (1)
		{
			printf("请输入你猜的数字\n");
			scanf_s("%d", &guess);
			if (guess < ret)
			{
				printf("猜小了\n");
			}
			else if (guess > ret)
			{
				printf("猜大了\n");
			}
			else
			{
				printf("恭喜你,猜对了\n");
				break;
			}
		}
}

 当然,我们也可以设置猜数字的次数

即将while里面的1改成我们想要的次数就可以了

生成的随机数:a+rand()%(b-a+1)   a~b的随机数

最终代码:

//猜数字游戏
#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS
#include<time.h>//时间作为种子,时间在变化,种子也在变化
#include<stdlib.h>
void menu()
{
	printf("***************************\n");
	printf("******* 1.play ************\n");
	printf("********0.exit ************\n");
	printf("***************************\n");
}
void game()//猜数字游戏的实现
{
//1.生成随机数
		int ret = rand()%100+1;//1~100//生成的随机数范围是0~7fff(32767)
		//printf("%d\n", ret);
//2.猜数字
		int guess = 0;
		int num = 5;
		while (num)
		{
			printf("请输入你猜的数字\n");
			scanf_s("%d", &guess);
			if (guess < ret)
			{
				printf("猜小了\n");
			}
			else if (guess > ret)
			{
				printf("猜大了\n");
			}
			else
			{
				printf("恭喜你,猜对了\n");
				break;
			}
			num -= 1;
		}
		if (num == 0)
		{
			printf("游戏结束,很遗憾失败了,正确答案是%的,再来一次吧\n",ret);
		}
}
int main()
{
	srand((unsigned int)time(NULL));
	int input=0;
	do {
		menu();
		printf("请选择->\n");
		scanf_s("%d", &input);
		switch (input)
		{
		case 1:
			game();//封装猜数字游戏
			printf("即将开始猜数字游戏\n");
				break;
		case 0:
			printf("即将退出游戏\n");
			break;
		default:
			printf("选择错误,请重新选择\n");
			break;
		}	
	} while (input);
	//return 0;
}


http://www.kler.cn/news/357297.html

相关文章:

  • LabVIEW提高开发效率技巧----用户权限控制
  • Scrapy | 爬取笑话网来认识继承自Spider的crawlspider爬虫类
  • 【Docker】Harbor 私有仓库和管理
  • IEC104规约的秘密之十二----扩展报文之文件断点续传
  • jmeter使用文档
  • HCIP-HarmonyOS Application Developer 习题(十五)
  • msql事务隔离级别 线上问题
  • 瑞云快图云渲染怎么样?渲染一张图贵吗?
  • 各类名词term解释....
  • 【记录】Windows|Windows 修改字体大全(Windows 桌面、VSCode、浏览器)
  • Unity Meta Quest 开发调试工具 Immersive Debugger
  • 图像中的数值计算
  • YOLO11来啦 | 详细解读YOLOv8的改进模块!
  • Windows环境下安装jdk8,含配置环境变量全过程
  • 数据结构_day5
  • Vulhub Basic Pentesting: 2 Target Machines
  • 《中医四大经典》2.0
  • [Unity Demo]从零开始制作空洞骑士Hollow Knight第十六集(下篇):制作小BOSS龙牙哥
  • 初识适配器模式
  • MyBatis方法重载与XML中ID的重复性