欢迎来到入门教程网!

C语言

当前位置:主页 > 软件编程 > C语言 >

C语言编一个数字益智小游戏

来源:本站原创|时间:2020-01-10|栏目: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

推荐教程

网页制作CMS教程网络编程软件编程脚本语言数据库服务器

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:835971066 | 邮箱:835971066#qq.com(#换成@)

Copyright © 2002-2020 脚本教程网 版权所有