***************猜数字游戏*******************
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("你猜的也太小了 (- -)!nn");
else if (guess > number)
printf("你猜的有点大了(@ @)!nn");
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.游戏记录配合使用,进行游戏排名。。。
设置
1.设置菜单通过system函数进行窗口背景色设置。
不仅仅,也可以是设置游戏难度等级(通过设置随机数范围实现)。。。
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#include #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)
最难不过坚持!



