***************猜数字游戏*******************
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)
最难不过坚持!