前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[C语言] 猜数字小游戏「功能优化」

[C语言] 猜数字小游戏「功能优化」

作者头像
謓泽
发布2022-12-12 14:20:16
5330
发布2022-12-12 14:20:16
举报
文章被收录于专栏:【C】系列

💖 作者简介:大家好,我是泽奀。🥇全栈领域新星创作者 作者周榜:81 全站排名:6434 👑 📝 个人主页:weixin_52632755的博客_泽奀_CSDN博客 💬 本系列: 小游戏_泽奀的博客-CSDN博客 🎉 欢迎 点赞➕评论➕收藏 == 养成习惯😋  💬 总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🖊

目录

游戏思路: 

随机数

游戏代码示例如下:


游戏思路: 

  • 自动产生一个1~100的随机数。
  • 猜数字进行。
  • 当你猜对的时候就 恭喜你猜对了,然后游戏结束。
  • 当你猜的过程中猜错了的话,就会告诉你两种情况:1、猜大了,2、猜小了,然后再继续猜数字,直到猜对为止!
  • 游戏可以一直玩,直到我们想要退出游戏即可!

注:本代码还用到了些操作指令系统以及自定义颜色函数包括睡眠函数以及菜单函数的一些知识都是来优化程序的! 以及一些特殊情况,当你输入的值错误的话,会提示你输入的数字错误,重新输入。运用到了静态局部计算每次猜数字的次数,之所以用静态局部变量是为了保证出了作用域不会被销毁,延长变量的生命周期的值。


  •  这里我们需要知道一个知识点:

随机数

在C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随机数,它的用法为:

  • int rand (void);

使用 <time.h> 头文件中的 time() 函数即可得到当前的时间(精确到秒),就像下面这样:

  • srand((unsigned)time(NULL));
  • srand函数在工程中调用一次即可!

游戏代码示例如下:

代码语言:javascript
复制
//1.电脑会生成一个随机数 2.猜数字
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include <windows.h>
#define Number 100

void color(short x)	//自定义函根据参数改变颜色 
{
	if (x >= 0 && x <= 15)//参数在0-15的范围颜色
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);	//只有一个参数,改变字体颜色 
	else//默认的颜色白色
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
void menu() //界面菜单函数
{
	color(0);
	system("cls");
	color(16);
	printf("|--------猜数字游戏\^o^/------|\n");
	printf("|****************************|\n");
	printf("|-------★1:开始游戏★-------|\n");
	printf("|-------★0:退出游戏★-------|\n");
	printf("|****************************|\n");
	printf("|--------INPUT(1~100)--------|\n");
	printf("\n");
}
//游戏具体实现功能
int game()
{
	//1.生成随机数
	//rand();功能随机生成数字 0~32767之间 
	int red = 0;//red负责接收rand的参数
	int guess = 0;//猜数字初始值
	red = rand()%100+1;//rand生成1-100数字。
//这里解释一下为什么是1-100:而rand()%100表示取100以内的随机数,即取了随机数之后再对100取余。因而是0~99.
	//2.猜数字
	while (1)
	{
        //计数功能,输入数字进行计次。
		while (1)
		{
			static int i;
			i++;
			color(5);
			printf("|═══════════════════════|\n");
			printf("|第%d次-->猜数字>(*^_^*):|\n",i);
			printf("|═══════════════════════|\n");
			printf("---\n");
			color(14);
			scanf("%d", &guess);
			printf("---\n");
			if (guess == red)
				i = 0;
			break;
		}
        //一共三种情况
		if (guess>red && guess<=Number)
		{
			color(9);
			printf(" ------\n");
			printf("|猜大了|\n"); 
			printf(" ------\n");
		}
		else if (guess>Number)
		{
			printf("|═══════════════════════════|\n");
			printf("|宁输入的数字大于游戏规定范围\n");
			printf("|═══════════════════════════|\n");
		}
		else if (guess<red)
		{
			color(9);
			printf(" ------\n");
			printf("|猜小了|\n");
			printf(" ------\n");
		}
		else
		{
			color(11);
			printf("\n");
			printf("|------------|\n");
			printf("|恭喜你猜对了|\n");
			printf("|------------|\n");
			printf("休息5s再来吧(*^_^*)\n");
			Sleep(5000);//睡眠5s
			break;
		}
	}
	return red;
}
int main(void)
{
	int number = 0;
	//拿时间戳来设置随机数字的生成起始点time
	srand((unsigned)time(NULL));//srand();功能:生成随机数,要在rand()前调用
	//srand函数在工程中调用一次即可
	do
	{
		menu();//打印出菜单
		color(12);
		printf("~~~~~~~~~~~~~~~~~~~~~\n");
		printf("请选择是否登入游戏->:");
		scanf("%d", &number);
		printf("\n~~~~~~~~~~~~~~~~~~~~~\n");
		//switch用于多分支语句:在此程序中分支1和0,如果输入其它(数字)用default进行错误
		switch (number)
		{
		case 0:
			printf("退出游戏\n"); 
			break;
		case 1:
			game();//猜数字游戏
			break;
		default:
			color(13);
			printf("|════════════════════|\n");
			printf("|青柠重新输入ありがど|\n"); 
			printf("|════════════════════|\n");
			Sleep(4000);
			break;
		}
	} 
	while (number);//至少进入循环一次!
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 游戏思路: 
  • 随机数
  • 游戏代码示例如下:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档