C语言——猜数字游戏


***************猜数字游戏*******************
1.系统随机一个数字;
2.用户通过界面输入猜出数字;
3.在游戏结束后选择是否继续游戏;
***********************************************

 

分析:

 

1.界面  (人机交互)

         分支结构

2.随机数(随机生成数字)

3.输入(输入所猜数字) 

4.循环(是否继续游戏)

 

函数的实现(在guessNum.c文件) 

 

 菜单

1.开始游戏

2.设置

3.游戏记录

0.退出游戏

void Menu()
{
	printf("*****************猜数字*****************\n");
	printf("*                                      *\n");
	printf("*       1.Star              2.Set      *\n");
	printf("*                                      *\n");
	printf("*       3.Record            0.Quit     *\n");
	printf("*                                      *\n");
	printf("****************************************\n");
}

 

开始游戏(循环、分支)

1.生成随机数(设置随机数种子)

2.用户输入(进行输入判定,是否符合要求)

3.输入值与随机数进行比较(大于、小于、等于(跳出循环))

void Star()
{
	//定义随机数
	int number;       
	//随机数种子,每次生成的随机值不相同
	srand(time(0));     
	//生成随机数
	number = rand() % 100 + 1;
	//定义用户所猜数字
	int guess;
	//定义所猜次数
	int count = 0;

	char ch;
	while (1)
	{
		//次数累加,判定人机互动
		count++;
		if (count == 1)
			printf("这是你猜的第一个数(o o):");
		else if (count < 10)
			printf("接着来!猜(*v*):");
		else if (count >= 10 && count < 15)
			printf("我着急下班呢!加油,猜准点呗( i o i ):\n");
		else if (count >= 15)
			printf("我和你杠上了,没猜到不准走(^u^!~.~!):");

		//输入判定,剔除缓冲区换行符
		while (scanf("%d", &guess) != 1)
		{
			while ((ch = getchar()) != '\n')
			{
				continue;
			}
			printf("拜托这猜数字游戏(o o!)\n给我点面子,重新输:");
		}
		
		//数字判定
		if (guess < number)
			printf("你猜的也太小了 (- -)!\n\n");
		else if (guess > number)
			printf("你猜的有点大了(@ @)!\n\n");
		else if (guess == number)
		{
			if (count == 1)
				printf("你可也太欧了!下次买彩票你帮我选号!( ^ v ^ )\n");
			else if (count < 10)
				printf("可以,真棒!\n");
			else if (count >= 10)
				printf("( > < ) ( ^_^ ) 哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈,我下班了!再见!!!!\n");
			Sleep(1500);
			break;
		}
		//system("cls");
	}
}

         可以通过猜数次数,进行游戏得分。在本函数中只给出次数并未实现!可与3.游戏记录配合使用,进行游戏排名。。。

 

设置

通过system函数进行窗口背景色设置。

不仅仅,也可以是设置游戏难度等级(通过设置随机数范围实现)。。。

1.设置菜单 

void setMenu()
{
	printf("*****************背景色*****************\n");
	printf("*                                      *\n");
	printf("*     1.凯尔特人       2.湖人配色      *\n");
	printf("*                                      *\n");
	printf("*     3.篮网配色       4.勇士配色      *\n");
	printf("*                                      *\n");
	printf("****************************************\n");
}

 2.设置实现

 其实与主函数实现十分相似。

void Set()
{
	int choose = 0;
	int flag = 1;
	while (flag)
	{
		//设置菜单界面
		setMenu();
		printf("Follow Your Heart!");
		char ch;
		while ((scanf("%d", &choose) != 1))
		{
			while ((ch = getchar()) != '\n')
			{
				continue;
			}
			printf("咋就琢磨不透你呢???\n");
		}

		switch (choose)
		{
		case 1:
			//设置窗口颜色
			 // * color ??
			 // * 第一个为背景色,第二个为前景色
			 // * 0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色 9=淡蓝色
			 // * A=淡绿色 B=淡浅绿色 C=淡红色 D=淡紫色 E=淡黄色 F=亮白色
			system("color B0");
			flag = 0;
			break;
		case 2:
			system("color E5");
			flag = 0;
			break;
		case 3:
			system("color 8F");
			flag = 0;
			break;
		case 4:
			system("color 9F");
			flag = 0;
			break;
		default:
			printf("你输入的数字不在服务内!!!(o - o)\n");
			printf("按任意键重开(-o-)!\n");
			system("pause");
			break;
		}

		//设置清屏
		//cls
		system("cls");
	}
}

 

3.游戏记录

(-..-)嘿嘿。

文件操作会更好。掌握更成熟后再来完善。功能暂且预留。。。

0.退出游戏

放在主函数中实现。

函数的声明(在guessNum.h中)

#ifdef _GUESSNUM_
void Menu();
void Star();
void setMenu();
void Set();
void Record();
#endif // _GUESSNUM_

 

主函数 

1.设置循环(多次游戏实现)

        循环判定flag

        选择输入 

                输入判定 

         分支语句分配不同功能

#include<stdio.h>
#include<stdlib.h>
#include"guessNum.h"  //函数的声明文件

int main()
{
	//设置窗口标题
	// * title ???
	system("title 猜数字游戏");

	//设置窗口大小
	// * mode con cols=? lines=?
	// * cols 列数
	// * lines 行数
	system("mode con cols=40 lines=10");

	 //设置窗口颜色
	 // * color ??
	 // * 第一个为背景色,第二个为前景色
	 // * 0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色 9=淡蓝色
	 // * A=淡绿色 B=淡浅绿色 C=淡红色 D=淡紫色 E=淡黄色 F=亮白色
	system("color F3"); 

	
	
	int choose=0;
	int flag=1;
	while (flag)
	{
		//菜单界面
		Menu();
		printf("告诉我你的选择,勇者!");
		char ch;
		while ((scanf("%d",&choose)!=1))
		{
			while ((ch=getchar()) != '\n')
			{
				continue;
			}
			printf("只能输入对应的数字呦!再试一次。\n");	
		}
		
		switch (choose)
		{
		case 1:
			//开始游戏
			 
			//设置清屏
			//cls
			system("cls");
			Star();
			break;
		case 2:
			//设置
			system("cls");
			Set();
			break;
		case 3:
			//记录  文件操作
			//Record();
			break;
		case 0:
			//退出游戏
			flag = 0;
			break;
		default:
			printf("你输入的数字不在服务内!!!(o - o)\n");
			printf("按任意键重开(-o-)!\n");
			system("pause");
			break;
		}
		
		//设置清屏
		//cls
		system("cls");
	}
	
}

通过system函数进行窗口的美化,提升好感度。

通过if语句进行更多的人机交互,提升使用的流畅度,更加人性化一点(个人观点)

 

成品展示

界面 

 

设置 

 四选一展示(猜一下是什么配色)

 开始游戏

 

多次猜测后 

 

更多次后 

 

 

 没注意看,就说老是不对。。。

上一个结局没截到,这是另一次的但不影响( ^ v ^ )

 第一把结束

退出游戏

 

 程序图标更改

项目名(右键)

 

 添加->资源

 选择Icon

 导入自己的ico文件,之后在重新生成可执行文件即可!

这是我的可执行文件!(o-o) 

最难不过坚持!

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值