C语言编一个数字益智小游戏
程序功能及运行情况
设计的程序是一个数字益智游戏,旨在培养小朋友玩家的数学思维,提高玩家的数学能力。游戏共设有四个不同的小游戏,分别是一位数四则运算、两位数四则运算、找最值游戏、排序游戏。程序能实现产生随机题目,并能检验玩家的作答是否正确。为了小朋友能感受到游戏的乐趣,特意设置了得分系统,答对不同题目有不同的加分,并会根据总得分划分不同「段位」,呈现给玩家。另外,程序还运用了更加充满活力的设计,让玩家爱上该游戏。
程序运行截图主菜单
运算游戏
找最值游戏
排序游戏
得分统计
代码部分头文件区域
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<time.h> #include<math.h> int score0 = 0; int u, z;
启动界面及主菜单
int main() //主函数游戏说明 { int menu(); char o; printf(" "); printf(" = = = = = = = = = = = = = = = = "); printf(" = 数 字 益 智 小 游 戏 = "); printf(" = = "); printf(" = 欢迎游玩该数字益智小游戏,游戏共设有 = "); printf(" = 四个小游戏,其中『算』小游戏各设有四 = "); printf(" = 个关卡。当你挑战难度越高的小游戏,并 = "); printf(" = 挑战成功,你将获得更高的得分奖励,最 = "); printf(" = 终将根据你的总得分划分你的游戏段位。 = "); printf(" = = "); printf(" = = "); printf(" = * * * * * * * * * = "); printf(" = * 游 戏 段 位 * = "); printf(" = * 『青铜』 --- 5 分 以 下 * = "); printf(" = * 『白银』 --- 5 分 - 10 分 * = "); printf(" = * 『黄金』 --- 10 分 - 15 分 * = "); printf(" = * 『铂金』 --- 15 分 - 20 分 * = "); printf(" = * 『钻石』 --- 20 分 - 25 分 * = "); printf(" = * 『星耀』 --- 25 分 - 30 分 * = "); printf(" = * 『王者』 --- 30 分 以 上 * = "); printf(" = * * * * * * * * * = "); printf(" = = "); printf(" = 作 者 : Cowjiang = "); printf(" = = "); printf(" = = = = = = = = = = = = = = = = "); printf(" 按回车键即可开始游戏"); scanf_s("%c", &o, 1); if (o == ' ') //输入回车开始游戏 { system("cls"); menu(); } else exit(0); } int menu() //游戏主菜单函数 { void one_arithmetic(); void two_arithmetic(); void comparation(); void maxmin(); int score(); int scores(); int scorep(); int o; system("color 30"); printf(" "); printf(" ** "); printf(" * * "); printf(" * 主 菜 单 * "); printf(" * * "); printf(" * * * * * * * * * * * * * * * "); printf(" * * "); printf(" * 1.『 算 』一位数运算 * "); printf(" * 2.『 算 』两位数运算 * "); printf(" * 3.『 找 』夹缝找最值 * "); printf(" * 4.『 排 』排序比大小 * "); printf(" * 5. 我 的 目 前 得 分 * "); printf(" * 6. 退 出 益 智 游 戏 * "); printf(" * * "); printf(" * * * * * * * * * "); printf(" 请输入序号选择:"); scanf_s("%d", &o); if (o == 1) { one_arithmetic(); } else if (o == 2) { two_arithmetic(); } else if (o == 3) { maxmin(); } else if (o == 4) { comparation(); } else if (o == 5) { scorep(); } else if (o == 6) { printf(" = = = = = = = = = = = = = = = = = "); printf(" = = "); printf(" = 感谢你的游玩! = "); printf(" = = "); printf(" = = = = = = = = = = = = = = = = = "); exit(0); } else { printf(" 你输入的数字序号有误噢,请重新选择! "); system("pause"); system("cls"); menu(); } }
得分统计
int scorep() //查看当前得分 { system("color F4"); z = score0; system("cls"); printf(" "); printf(" * "); printf(" * * "); printf(" * * "); printf(" * * * * * * * * "); printf(" * 当前得分: * "); printf(" * %2d分 * ", z); printf(" * * * * "); printf(" * * * * "); if (z <= 5) { printf(" ** [青 铜] ** "); printf(" * * "); } else if (z > 5 && z <= 10) { printf(" ** [白 银] ** "); printf(" * * "); } else if (z > 10 && z <= 15) { printf(" ** [黄 金] ** "); printf(" * * "); } else if (z > 15 && z <= 20) { printf(" ** [铂 金] ** "); printf(" * * "); } else if (z > 20 && z <= 25) { printf(" ** [钻 石] ** "); printf(" * * "); } else if (z > 25 && z <= 30) { printf(" ** [星 耀] ** "); printf(" * * "); } else if (z > 30) { printf(" ** [王 者] ** "); printf(" * * "); } printf(" 继续游戏请输入1,退出游戏请输入2 :"); scanf_s("%d", &u); if (u == 1) //返回主菜单 { system("cls"); menu(); } else if (u == 2) //退出游戏 { printf(" = = = = = = = = = = = = = = = = = "); printf(" = = "); printf(" = 感谢你的游玩! = "); printf(" = = "); printf(" = = = = = = = = = = = = = = = = = "); exit(0); } else { printf(" 你输入的数字序号有误噢,返回主菜单! "); menu(); } } int score() //加分函数 { score0++; return score0; } int scores() //减分函数 { score0--; return score0; }
一位数运算
void one_arithmetic() //一位数运算 { int p, a, b, c, d, f, g, h, l, m; float e; srand(time(NULL)); a = rand() % 10; b = rand() % 10; g = rand() % 10; h = rand() % 10; system("color E0"); system("cls"); printf(" * * * * * * * * "); //一位数运算主菜单 printf(" * * "); printf(" * 1. [第一关] 加 法 * "); printf(" * 2. [第二关] 减 法 * "); printf(" * 3. [第三关] 乘 法 * "); printf(" * 4. [第四关] 除 法 * "); printf(" * 5. [进阶]混合运算 * "); printf(" * 6. [返 回] 主菜单 * "); printf(" * * "); printf(" * * * * * * * * "); printf(" * * * "); printf(" * * * "); printf(" * * * * * "); printf(" * * * "); printf(" * "); printf(" 请输入数字序号选择挑战关卡:"); scanf_s("%d", &p); while (p == 1) //一位数加法 { system("cls"); printf(" %d + %d = ", a, b); scanf_s("%d", &c); if (c == a + b) { system("color AE"); printf(" 太棒了!挑战成功,加 1 分! "); score(); system("pause"); } else if (c != a + b) { system("color 4E"); printf(" 太可惜了!挑战失败,不要灰心噢! "); system("pause"); } one_arithmetic(); } while (p == 2) //一位数减法 { system("cls"); if (a > b) //控制大数减小数 { printf(" %d - %d = ", a, b); scanf_s("%d", &c); if (c == a - b) { system("color AE"); printf(" 太棒了!挑战成功,加 1 分! "); score(); system("pause"); } else if (c != a - b) { system("color 4E"); printf(" 太可惜了!挑战失败,不要灰心噢! "); system("pause"); } one_arithmetic(); } else if (a < b) { system("cls"); printf(" %d - %d = ", b, a); scanf_s("%d", &c); if (c == b - a) { system("color AE"); printf(" 太棒了!挑战成功,加 1 分! "); score(); system("pause"); } else if (c != b - a) { system("color 4E"); printf(" 太可惜了!挑战失败,不要灰心噢! "); system("pause"); } one_arithmetic(); } } while (p == 3) //一位数乘法 { system("cls"); printf(" %d * %d = ", a, b); scanf_s("%d", &c); if (c == a * b) { system("color AE"); printf(" 太棒了!挑战成功,加 1 分! "); score(); system("pause"); } else if (c != a * b) { system("color 4E"); printf(" 太可惜了!挑战失败,不要灰心噢! "); system("pause"); } one_arithmetic(); } while (p == 4) //一位数除法 { system("cls"); b = rand() % (9) + 1; //防止被除数为0 printf(" (四舍五入保留整数)%d除以%d等于", a, b); scanf_s("%f", &e); f = b / 2; //四舍五入 if (a % b <= f) { d = (int)(e); if (d == a / b) { system("color AE"); printf(" 太棒了!挑战成功,加 1 分! "); score(); system("pause"); } else if (d != a / b) { system("color 4E"); printf(" 太可惜了!挑战失败,不要灰心噢! "); system("pause"); } } if (a % b > f) { d = (int)(e - 0.5); if (d == a / b) { system("color AE"); printf(" 太棒了!挑战成功,加 1 分! "); score(); system("pause"); } else if (d != a / b) { system("color 4E"); printf(" 太可惜了!挑战失败,不要灰心噢! "); system("pause"); } } one_arithmetic(); } while (p == 5) //一位数混合运算 { system("cls"); printf(" %d + %d * ( %d - %d ) = ", a, b, g, h); scanf_s("%d", &l); m = a + b * (g - h); if (l == m) { system("color AE"); printf(" 太棒了!挑战成功,加 2 分! "); score(); score(); system("pause"); } else if (l != m) { system("color 4E"); printf(" 太可惜了!挑战失败,不要灰心噢! "); system("pause"); } one_arithmetic(); } while (p == 6) { system("cls"); menu(); } while (p < 1 || p > 6) { system("color 4E"); printf(" 输入数字序号有误噢,请重新输入! "); system("pause"); one_arithmetic(); } }
两位数运算
void two_arithmetic() //两位数运算 { int p, a, b, c, d, f, g, h, l, m; float e; srand(time(NULL)); a = rand() % (90) + 10; b = rand() % (90) + 10; g = rand() % (90) + 10; h = rand() % (90) + 10; system("color B0"); system("cls"); printf(" * * * * * * * * "); //两位数运算主菜单 printf(" * * "); printf(" * 1. [第一关] 加 法 * "); printf(" * 2. [第二关] 减 法 * "); printf(" * 3. [第三关] 乘 法 * "); printf(" * 4. [第四关] 除 法 * "); printf(" * 5. [进阶]混合运算 * "); printf(" * 6. [返 回] 主菜单 * "); printf(" * * "); printf(" * * * * * * * * "); printf(" * * * "); printf(" * * * "); printf(" * * * * * "); printf(" * * * "); printf(" * "); printf(" 请输入数字序号选择挑战关卡:"); scanf_s("%d", &p); while (p == 1) //两位数加法 { system("cls"); printf(" %d + %d = ", a, b); scanf_s("%d", &c); if (c == a + b) { system("color AE"); printf(" 太棒了!挑战成功,加 1 分! "); score(); system("pause"); } else if (c != a + b) { system("color 4B"); printf(" 太可惜了!挑战失败,不要灰心噢! "); system("pause"); } two_arithmetic(); } while (p == 2) //两位数减法 { if (a > b) //控制大数减小数 { system("cls"); printf(" %d - %d = ", a, b); scanf_s("%d", &c); if (c == a - b) { system("color AE"); printf(" 太棒了!挑战成功,加 1 分! "); score(); system("pause"); } else if (c != a - b) { system("color 4B"); printf(" 太可惜了!挑战失败,不要灰心噢! "); system("pause"); } two_arithmetic(); } else if (a < b) { system("cls"); printf(" %d - %d = ", b, a); scanf_s("%d", &c); if (c == b - a) { system("color AE"); printf(" 太棒了!挑战成功,加 1 分! "); score(); system("pause"); } else if (c != b - a) { system("color 4B"); printf(" 太可惜了!挑战失败,不要灰心噢! "); system("pause"); } two_arithmetic(); } } while (p == 3) //两位数乘法 { system("cls"); printf(" %d * %d = ", a, b); scanf_s("%d", &c); if (c == a * b) { system("color AE"); printf(" 太棒了!挑战成功,加 1 分! "); score(); system("pause"); } else if (c != a * b) { system("color 4B"); printf(" 太可惜了!挑战失败,不要灰心噢! "); system("pause"); } two_arithmetic(); } while (p == 4) //两位数除法 { b = rand() % (9) + 1; //防止被除数为0 system("cls"); printf(" (四舍五入保留整数)%d除以%d等于", a, b); scanf_s("%f", &e); f = b / 2; //四舍五入 if (a % b <= f) { d = (int)(e); if (d == a / b) { system("color AE"); printf(" 太棒了!挑战成功,加 1 分! "); score(); system("pause"); } else if (d != a / b) { system("color 4B"); printf(" 太可惜了!挑战失败,不要灰心噢! "); system("pause"); } } if (a % b > f) { d = (int)(e - 0.5); if (d == a / b) { system("color AE"); printf(" 太棒了!挑战成功,加 1 分! "); score(); system("pause"); } else if (d != a / b) { system("color 4B"); printf(" 太可惜了!挑战失败,不要灰心噢! "); system("pause"); } } two_arithmetic(); } while (p == 5) //两位数混合运算 { system("cls"); printf(" %d + %d * ( %d - %d ) = ", a, b, g, h); scanf_s("%d", &l); m = a + b * (g - h); if (l == m) { system("color AE"); printf(" 太棒了!挑战成功,加 2 分! "); score(); score(); system("pause"); } else if (l != m) { system("color 4B"); printf(" 太可惜了!挑战失败,不要灰心噢! "); system("pause"); } one_arithmetic(); } while (p == 6) { system("cls"); menu(); } while (p < 1 || p > 6) { system("color 4B"); printf(" 输入数字序号有误噢,请重新输入! "); system("pause"); two_arithmetic(); } }
排序游戏
void comparation() //排序游戏 { int a[5], b[5]; int i, j, n, p, q; srand(time(NULL)); for (i = 0; i < 5; i++) a[i] = rand() % 10; system("cls"); system("color 9F"); printf(" * * * * * * * * * * * * * * "); //排序游戏规则 printf(" * 游 戏 规 则 * "); printf(" * 开始游戏后将会显示随机五个整数, * "); printf(" * 请根据提示从小到大依次输入排序后 * "); printf(" * 的五个整数,若排序正确即可获得 3 * "); printf(" * 分奖励。加油噢,你能行! * "); printf(" * * * * * * * * * * * * * * "); printf(" * * * "); printf(" * * * "); printf(" * * * * * "); printf(" * * * "); printf(" * "); printf(" 输入数字 0 即可开始游戏:"); scanf_s("%d", &p); if (p == 0) printf(" * * * * * * * * * * * * * * "); printf(" * * "); printf(" * "); for (i = 0; i < 5; i++) printf(" %d ", a[i]); for (j = 0; j < 4; j++) //将数组从小到大排列 { for (i = 0; i < 4 - j; i++) { if (a[i] > a[i + 1]) { n = a[i]; a[i] = a[i + 1]; a[i + 1] = n; } } } printf(" * "); printf(" * * "); printf(" * * * * * * * * * * * * * * "); printf("接下来,请从小到大输入排序后的五个整数(用空格隔开):"); for (i = 0; i < 5; i++) scanf_s("%d", &b[i]); for (i = 0; i < 5; i++) //验证回答正确与否 { if (a[i] == b[i]) continue; else { system("color 49"); printf(" 太可惜了,就差一点就成功了!再挑战一次吧! "); system("pause"); comparation(); } } system("color AF"); printf(" 哇你太棒啦,挑战成功!获得 3 分奖励! "); score(); score(); score(); system("pause"); system("color 0F"); printf(" 想挑战别的游戏吗? "); printf("1. 挑战其它游戏 "); printf(" 2. 继续挑战排序游戏 "); printf(" 3. 查看当前得分 "); printf("回复数字序号选择一项吧:"); scanf_s("%d", &q); if (q == 2) { system("cls"); comparation(); } else if (q == 3) scorep(); else { system("cls"); menu(); } } else //退出排序游戏? { system("color F0"); printf(" 想玩别的游戏吗? "); printf("1. 挑战其它游戏 "); printf(" 2. 继续当前游戏 "); printf("回复数字序号选择一项吧:"); scanf_s("%d", &q); if (q == 2) comparation(); else { system("cls"); menu(); } } }
找最值游戏
void maxmin() { int i, j, n, p, q, max, min, maxx, minn; int a[5]; srand(time(NULL)); system("color DF"); system("cls"); printf(" * * * * * * * * * * * * * * "); //找最值游戏规则 printf(" * 游 戏 规 则 * "); printf(" * 开始游戏后将会显示随机五个整数, * "); printf(" * 请分别找出五个整数的最大值和最小 * "); printf(" * 值,若回答正确即可获得 2 分奖励。 * "); printf(" * 加油噢,你能行! * "); printf(" * * * * * * * * * * * * * * "); printf(" * * * "); printf(" * * * "); printf(" * * * * * "); printf(" * * * "); printf(" * "); printf(" 输入数字 0 即可开始游戏:"); scanf_s("%d", &p); if (p == 0) { for (i = 0; i < 5; i++) a[i] = rand() % 10; printf(" * * * * * * * * * * * * * * "); printf(" * * "); printf(" * "); for (i = 0; i < 5; i++) printf(" %d ", a[i]); printf(" * "); printf(" * * "); printf(" * * * * * * * * * * * * * * "); printf("接下来,请找出最大值:"); scanf_s("%d", &maxx); printf(" 然后请找出最小值:"); scanf_s("%d", &minn); max = a[4]; min = a[1]; for (i = 0; i < 5; i++) { if (a[i] > max) max = a[i]; if (a[i] < min) min = a[i]; } if (maxx == max && minn == min) //验证回答正确与否 { system("color AF"); printf(" 哇你太棒啦!获得奖励 2 分! "); score(); score(); system("pause"); system("color 0F"); printf(" 想挑战别的游戏吗? "); printf("1. 挑战其它游戏 "); printf(" 2. 继续挑战找最值游戏 "); printf(" 3. 查看当前得分 "); printf("回复数字序号选择一项吧:"); scanf_s("%d", &q); if (q == 2) { system("cls"); maxmin(); } else if (q == 3) scorep(); else { system("cls"); menu(); } } else { system("color 4F"); printf(" 有点小可惜,再挑战一次吧! "); system("pause"); maxmin(); } } else //退出找最值游戏? { system("color F0"); printf(" 想玩别的游戏吗? "); printf("1. 挑战其它游戏 "); printf(" 2. 回到当前游戏 "); printf("回复数字序号选择一项吧:"); scanf_s("%d", &q); if (q == 2) maxmin(); else { system("cls"); menu(); } } }
小结
这个数字益智游戏是我第一次编写如此规模的 C 语言程序,知识水平有限,也花了不少时间去编写这个程序,代码可能有不尽完美的地方,也没有尽可能地简化代码。最后,非常欢迎各路大神给我提出一些建议,大家一起学习,共同进步,奥力给!
以上所述是小编给大家介绍的C语言编一个数字益智小游戏,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
上一篇:C语言数组实现公交车管理系统
栏 目:C语言
下一篇:C语言实现简单航班管理系统
本文标题:C语言编一个数字益智小游戏
本文地址:https://www.xiuzhanwang.com/a1/Cyuyan/4.html
您可能感兴趣的文章
- 04-02c语言函数调用后清空内存 c语言调用函数删除字符
- 04-02c语言的正则匹配函数 c语言正则表达式函数库
- 04-02func函数+在C语言 func函数在c语言中
- 04-02c语言中对数函数的表达式 c语言中对数怎么表达
- 04-02c语言用函数写分段 用c语言表示分段函数
- 04-02c语言编写函数冒泡排序 c语言冒泡排序法函数
- 04-02c语言没有round函数 round c语言
- 04-02c语言分段函数怎么求 用c语言求分段函数
- 04-02C语言中怎么打出三角函数 c语言中怎么打出三角函数的值
- 04-02c语言调用函数求fibo C语言调用函数求阶乘
阅读排行
本栏相关
- 04-02c语言函数调用后清空内存 c语言调用
- 04-02func函数+在C语言 func函数在c语言中
- 04-02c语言的正则匹配函数 c语言正则表达
- 04-02c语言用函数写分段 用c语言表示分段
- 04-02c语言中对数函数的表达式 c语言中对
- 04-02c语言编写函数冒泡排序 c语言冒泡排
- 04-02c语言没有round函数 round c语言
- 04-02c语言分段函数怎么求 用c语言求分段
- 04-02C语言中怎么打出三角函数 c语言中怎
- 04-02c语言调用函数求fibo C语言调用函数求
随机阅读
- 01-10delphi制作wav文件的方法
- 04-02jquery与jsp,用jquery
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 01-10SublimeText编译C开发环境设置
- 01-11ajax实现页面的局部加载
- 01-10C#中split用法实例总结
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 08-05DEDE织梦data目录下的sessions文件夹有什