算术小游戏

目录

●简单解释在代码内

一、一些简单功能:

1、记录最高分:

2、记录时间:

二、加减法运算:

三、乘除法运算:

四、混合模式

 五、完整代码:

 六、完整展示:


●简单解释在代码内

一、一些简单功能:

1、记录最高分:

//在文件中读取混合运算最高分
   void File_out1()
 {
     FILE *fp;
     fp =fopen("save1.txt","r+");
    fscanf(fp,"%d",&HighScore);
    fclose(fp);
 }
 
 /*
  *将混合运算最高分存储与文件中
  */
  void File_in1()
  {
      FILE *fp ;
    fp =fopen("save1.txt","w+");
    fprintf(fp,"%d",HighScore);
    fclose(fp); 
   } 

需要调用最高分时,用File_out()即可。需要重新改写最高分用File_in()即可。

 

2、记录时间:

    int start,end;

    start=time(NULL);     //开始时间 
    end=time(NULL);     //结束时间

    printf("您的使用时间是%ds\n",end-start);  

 

二、加减法运算:

运行界面展示:

//加法 
int add()

{
	score=0; 

	File_out();		//打开文件 
	int start,end;

	start=time(NULL); 	//开始时间 

	int i,tnum,rand1,rand2,yours;

	gotoxy(81,7);
	printf("最高分为:%d",HighScore);
	gotoxy(81,8);
	printf("本次得分:%d",score); 
	gotoxy(27,6);
	printf("请选择题目数量<建议在20题左右>:");

	scanf("%d",&tnum);
	for(i=0;i<tnum;i++)    
	
	{ 
	    srand(time(NULL));
	
	    rand1=rand()%100+1;		//随机产生100内的两位数 
	
	    rand2=1+(int)rand()%100;
	    
		gotoxy(28,7+i);
	    printf("%d+%d= ",rand1,rand2);
	
	    scanf("%d",&yours);
	
	    if (yours==rand1+rand2)		//当添入的答案正确时,显示√,否则显示×,并显示正确答案。 
	    {
			score+=10;
			gotoxy(40,7+i);
			printf("√\n"); 
		}else{
			gotoxy(40,7+i);
			
			printf("× 正确答案是:%d\n",rand1+rand2); 
		}
		gotoxy(81,8);
		printf("本次得分:%d",score); 

	}
	if(score >= HighScore)
	{
		gotoxy(28,16);
		printf("创记录啦!最高记录被你刷新啦~您的得分是:%d",score);
		HighScore=score;		
		File_in(); 		//记录最高分 
	}else{
		gotoxy(28,17);
		printf("继续努力吧~ 你离最高分还差:%d",HighScore-score);
	}
	
	end=time(NULL);                                            //结束时间
	gotoxy(28,18);
	printf("您的使用时间是%ds\n",end-start);                   //时间计数
	gotoxy(28,19);
	go();
	//是否进入菜单栏

}


//减法 
int sub()

{    
	score=0;
	File_out();
	int start,end;

	start=time(NULL);


	int i,tnum,rand1,rand2,yours;

	gotoxy(81,7);
	printf("最高分为:%d",HighScore);
	gotoxy(81,8);
	printf("本次得分:%d",score); 
	gotoxy(27,6);
	printf("请选择题目数量<建议在20题左右>:");                    
	         
	scanf("%d",&tnum);

	for(i=0;i<tnum;i++)
	
	{
	
	    srand(time(NULL));
	
	    rand1=1+(int)rand()%100;
	
	    rand2=1+(int)rand()%100;
	
	    if(rand1>rand2)
	
	    {
	    	gotoxy(28,7+i);
	    	printf("%d-%d=",rand1,rand2);
	        scanf("%d",&yours);
	
	        if (yours==rand1-rand2)
	        {
				score+=10;
				gotoxy(40,7+i);
				printf("√"); 
			}
			else{
				gotoxy(40,7+i);
				printf("× 正确答案是:%d",rand1-rand2); 
			} 
				gotoxy(81,8);
				printf("本次得分:%d",score);
	    }else{
		gotoxy(28,7+i);	
        printf("%d-%d=",rand2,rand1);

        scanf("%d",&yours);

        if (yours==rand2-rand1)
		{
			score+=10;
			gotoxy(40,7+i);
			printf("√"); 
		}
		else{
			gotoxy(40,7+i);
			printf("× 正确答案是:%d",rand1-rand2); 
		} 
			gotoxy(81,8);
			printf("本次得分:%d",score); 
    	}
	}
	if(score >= HighScore)
	{
		//color(14);
		gotoxy(28,15);
		printf("最高记录被您刷新啦~");
		HighScore=score;
		File_in(); 	
	}else{
			//color(14);
			gotoxy(28,15);
			printf("您离最高分还差:%d",HighScore-score);
	}
	
	end=time(NULL);
	//color(14);                                           //结束时间
	gotoxy(28,16);
	printf("您的游戏时间是%ds\n",end-start);
	
	gotoxy(28,17);
	//color(14); 
	go();
}

 

 

三、乘除法运算:

//乘法 
int mul()

{
	gotoxy(0,1);
	int start,end;
	start=time(NULL);        //开始计时
    int i,j,tnum,rand1,rand2,yours;

	for(j=0;j<3;j++)    //显示关卡
	
	{
	
	    if(j==0)
			
	        printf("第一关\n");
	
	    if(j==1)
	        printf("第二关\n");
	
	    if(j==2)
	
	        printf("第三关\n");
	
	        printf("请选择题目数量<建议在20题左右>:");
	
			scanf("%d",&tnum);

		for(i=0;i<tnum;i++)    //依次显示题目
		
		{
		
		    srand(time(NULL));
		
		    rand1=1+(int)rand()%10;    //随机产生1-10内的数字
		
		    rand2=1+(int)rand()%10;
		
		    printf("%d*%d=",rand1,rand2);
		
		    scanf("%d",&yours);
		
		    if (yours==rand1*rand2)
		
		    {
		
		    //if(i==0)
		
		       printf("	 	√\n");
		
		    //if(i==1)
		
		       // printf("	 	√\n");
		
		    }else {
			printf("闯关失败!正确答案是:%d\n",rand1*rand2);
			end=time(NULL);
			printf("您的游戏时间是%ds\n",end-start);
			go();
			}
//有一题错误即失败
		}

	 if(j==0)
	
	        printf("恭喜通过第一关!\n\n");
	
	    if(j==1)
	
	        printf("恭喜通过第二关!!\n\n");
	
	    if(j==2)
	
	        printf("恭喜通全关!!!\n\n");
	
	}
	end=time(NULL);
	printf("您的游戏时间是%d\n",end-start);
	go();
}


//除法 
int dive()

{
	gotoxy(0,1);
	int start,end;
	start=time(NULL);	

	int i,j,tnum,rand1,rand2,yours;


	for(j=0;j<3;j++)
	
	{
	
	    if(j==0)
	
	        printf("第一关");
	
	    if(j==1)
	
	        printf("第二关");
	
	    if(j==2)
	
	        printf("第三关");
	
	    printf("\n请选择题目数量<建议在20题左右>:");
	
		scanf("%d",&tnum);

		for(i=0;i<tnum;i++)
		
		{
		
		    srand(time(NULL));
		
		    rand1=1+(int)rand()%10;
		
		    rand2=rand1*(1+(int)rand()%10);                         //随机数产生数字
		
		    printf("%d/%d=",rand2,rand1);                            //相乘结果即被除数
		
		    scanf("%d",&yours);
		
		    if (yours==rand2/rand1)
		
		    {
		
		
		
		         printf("	 	√\n");
		
		    }
		
		    else 
			{printf("闯关失败!正确答案是:%d\n",rand2/rand1);go();}
		}
		
		 if(j==0)
		
		        printf("恭喜通过第一关!\n\n");
		
		    if(j==1)
		
		        printf("恭喜通过第二关!!\n\n");
		
		    if(j==2)
		
		        printf("恭喜通全关!!!\n\n");
		
	}
	end=time(NULL);
	printf("您的游戏时间是%d\n",end-start);
	go();
}

 

 

四、混合模式

在混合模式里,我采用了高难度和低难度,高难度的为两位数的混合运算,低难度的为个位数的。均产生十题,最高分为100。

 

//低难度混合运算 
void  mixdown()
{
	
	score=0;
	File_out1();        //重新创建一个文档,记录混合运算的最高分
	int start,end;
	start=time(NULL); 
	int i,rand1,rand2,rand3,yours,x;
	gotoxy(1,1);
	printf("此为十道低难度四则运算的试题\n");
	gotoxy(1,2);
	printf("小朋友,快来算算吧~\n") ; 
	gotoxy(48,2);
	printf("这套卷子的最高分是:%d",HighScore);
	gotoxy(0,4);
	for(i=0;i<10;i++)        
	{

		rand1=rand()%10+1;
		rand2=rand()%10+1;  
		rand3=rand()%10+1;
		x=rand()%6;
		switch(x)        //通过随机产生6个数字来代表不同的运算。也可以更多。
		{
			case 1:
				printf("%d+%d-%d=",rand1,rand2,rand3);
				scanf("%d",&yours);
				if(yours==rand1+rand2-rand3)
				{
					printf("			√\n");
					score+=10;
				}
				else
				{
					
					printf("			×答案为:%d\n",rand1+rand2-rand3);
				}
				continue;
			case 2:
				printf("%d+%d*%d=",rand1,rand2,rand3);
				scanf("%d",&yours);
				if(yours==rand1+rand2*rand3)
				{
					printf("			√\n");
					score+=10;
				}
				else
				{
					printf("			×答案为:%d\n",rand1+rand2*rand3);
				}
				continue;
			case 3:
				if(rand2%rand3==0)
				{
					printf("%d+%d/%d=",rand1,rand2,rand3);
					scanf("%d",&yours);
					if(yours==rand1+rand2/rand3)
					{
						printf("			√\n");
						score+=10;
					}
					else
					{
						printf("			×答案为:%d\n",rand1+rand2/rand3);
					}
					continue;
				}else{
					i--;
					continue;
				}
			case 4:
				printf("%d*(%d+%d)=",rand1,rand2,rand3);
				scanf("%d",&yours);
				if(yours==rand1*(rand2+rand3))
				{
					printf("			√\n");
					score+=10;
				}
				else
				{
					printf("			×答案为:%d\n",rand1*(rand2+rand3));
				}
				continue;
			case 5:
				if(rand2%rand3==0)
				{
					printf("%d-%d/%d=",rand1,rand2,rand3);
					scanf("%d",&yours);
					if(yours==rand1-rand2/rand3)
					{
						printf("			√\n");
						score+=10;
					}
					else
					{
						printf("			×答案为:%d\n",rand1+rand2/rand3);
					}
					continue;
				}else{
					i--;
				continue;
				}
			default:
				printf("(%d-%d)*%d=",rand1,rand2,rand3);
				scanf("%d",&yours);
				if(yours==(rand1-rand2)*rand3)
				{
					printf("			√\n");
					score+=10;
				}
				else
				{
					printf("			×答案为:%d\n",(rand1-rand2)*rand3);
				}
				continue;
		}
	}
	printf("这套试卷您的得分是:%d\n",score); 
	if(score >= HighScore)
	{
	printf("最高记录被您刷新啦~\n");
	HighScore=score;
	File_in1(); 	
	}else{
		printf("您离最高分还差:%d\n",HighScore-score);
	}
}


//高难度混合运算 
void  mixup()
{
	
	score=0;
	File_out1();
	int start,end;
	start=time(NULL); 
	int i,rand1,rand2,rand3,yours,x;
	gotoxy(1,1);
	printf("此为十道高难度四则运算的试题\n");
	gotoxy(1,2);
	printf("小朋友,快来算算吧~\n") ; 
	gotoxy(48,2);
	printf("这套卷子的最高分是:%d",HighScore);
	gotoxy(0,4);
	for(i=0;i<10;i++)
	{

		rand1=rand()%100+1;
		rand2=rand()%100+1;  
		rand3=rand()%100+1;
		x=rand()%6;
		switch(x)
		{
			case 1:
				printf("%d+%d-%d=",rand1,rand2,rand3);
				scanf("%d",&yours);
				if(yours==rand1+rand2-rand3)
				{
					printf("			√\n");
					score+=10;
				}
				else
				{
					
					printf("			×答案为:%d\n",rand1+rand2-rand3);
				}
				continue;
			case 2:
				printf("%d+%d*%d=",rand1,rand2,rand3);
				scanf("%d",&yours);
				if(yours==rand1+rand2*rand3)
				{
					printf("			√\n");
					score+=10;
				}
				else
				{
					printf("			×答案为:%d\n",rand1+rand2*rand3);
				}
				continue;
			case 3:
				if(rand2%rand3==0)
				{
					printf("%d+%d/%d=",rand1,rand2,rand3);
					scanf("%d",&yours);
					if(yours==rand1+rand2/rand3)
					{
						printf("			√\n");
						score+=10;
					}
					else
					{
						printf("			×答案为:%d\n",rand1+rand2/rand3);
					}
					continue;
				}else{
					i--;
					continue;
				}
			case 4:
				printf("%d*(%d+%d)=",rand1,rand2,rand3);
				scanf("%d",&yours);
				if(yours==rand1*(rand2+rand3))
				{
					printf("			√\n");
					score+=10;
				}
				else
				{
					printf("			×答案为:%d\n",rand1*(rand2+rand3));
				}
				continue;
			case 5:
				if(rand2%rand3==0)
				{
					printf("%d-%d/%d=",rand1,rand2,rand3);
					scanf("%d",&yours);
					if(yours==rand1-rand2/rand3)
					{
						printf("			√\n");
						score+=10;
					}
					else
					{
						printf("			×答案为:%d\n",rand1+rand2/rand3);
					}
					continue;
				}else{
					i--;
				continue;
				}
			default:
				printf("(%d-%d)*%d=",rand1,rand2,rand3);
				scanf("%d",&yours);
				if(yours==(rand1-rand2)*rand3)
				{
					printf("			√\n");
					score+=10;
				}
				else
				{
					printf("			×答案为:%d\n",(rand1-rand2)*rand3);
				}
				continue;
		}
	}
	printf("这套试卷您的得分是:%d\n",score); 
	if(score >= HighScore)
	{
	printf("最高记录被您刷新啦~\n");
	HighScore=score;
	File_in1(); 	
	}else{
		printf("您离最高分还差:%d\n",HighScore-score);
	}
}

 

 

 五、完整代码:

/*******头 文 件*******/ 
#include <stdio.h>  //标准输入输出函数库 
#include <windows.h>  //控制 DOS界面(获取控制台上坐标位置、设置字体颜色) 
#include<conio.h>	//接受键盘输入输出 
#include<time.h>	//用于获得随机数
 


/******* 宏 定 义 *******/ 
#define FrameX 4	//游戏窗口左上角的X轴坐标为13 
#define FrameY 4	// 游戏窗口左上角的Y轴坐标为3 
#define Frame_height 20	//游戏窗口的高度为20 
#define Frame_width  18	// 游戏窗口的宽度为18


int HighScore;
int score=0;


void welcom();
void Gameplay();
void File_in();
void File_out();
void go();
void Frame();
void Fence();
void mixup();
void mixdown();
void explanation();

/**
 *文字颜色函数
 */ 
int color(int c)
{
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),c);
	return 0;
}


/**
 *获取屏幕光标位置 
 */ 
void gotoxy(int x,int y)
{
	COORD pos;
	pos.X=x;
	pos.Y=y;
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);

}


void welcom()
{
	gotoxy(40,7);
	printf("欢迎来到小学算数练习游戏~\n");
	gotoxy(40,8);
	
    gotoxy(75,6);
    printf("    _.'__   `.\n");
    gotoxy(75,7);
    printf("   .--($)($$)---/#\              \n");
    gotoxy(75,8);
    printf("  .' @          /###\            \n");
    gotoxy(75,9);
    printf(" :         ,   #####\             \n");
    gotoxy(75,10);
    printf("  `-..__.-' _.-\###/			  \n");
    gotoxy(75,11);
    printf("        `;_:    `''             \n"); 
    gotoxy(75,12);
    printf("       .'""""`.					\n");
    gotoxy(75,13);
    printf("      /,  wo ,\\					\n");
    gotoxy(75,14);
    printf("     //  404!  \\						\n");
    gotoxy(75,15);
    printf("     `-._______.-'						\n");
    gotoxy(75,16);
    printf("     ___`. | .'___						\n");
    gotoxy(75,17);
    printf("    (______|______)						\n"); 
    
    for(int i=5;i<=20;i++)
	{
		gotoxy(30,i);
		printf("||");
	 }
	for(int j=30;j<=85;j++)
	{
		gotoxy(j,20);
		printf("=");
	}
	gotoxy(86,20);
	printf("||") ;
	gotoxy(86,19);
	printf("||") ;
}

void explanation(){
	int n;
	int i,j=1;
	for (i=5;i<=25;i++)
	{
		for (j=25;j<=93;j++)
		{
			gotoxy(j,i);
			if (i==5||i==25) printf("=");
			else if (j==25||j==92) printf("||");
		}
	}
	gotoxy(28,10); 
	printf("●在本游戏中加减法采用计分模式,答对一题得十分。 \n");
	gotoxy(28,12);
	printf("●乘除法采用闯关模式,共三关。当有一题答错时,即为闯关失败。\n ");
	gotoxy(28,14);
	printf("●混合模式分为低难度和高难度。\n");
	gotoxy(28,16);
	printf(" 低难度为个位运算,高难度为十位运算,设有十道题 共100分\n");
	gotoxy(28,18);
	printf("●若您不熟悉四则运算,可选择[6]进行简单地学习后再进入算数游戏。\n");
	gotoxy(43,20);
	printf("★★★  祝您学习愉快~   ★★★\n"); 
	gotoxy(40,22);
	go();
}

 
void Gameplay()
{
	int choose;
	int add();

	int sub();
	
	int dive();
	
	int mul();
	
	void choose1();
	                 
	void teach();        
	gotoxy(11,10);
	printf("\t\t\t\t1.加法\n");
	gotoxy(11,11);
	printf("\t\t\t\t2.减法\n");
	gotoxy(11,12);
	printf("\t\t\t\t3.乘法\n");
	gotoxy(11,13);
	printf("\t\t\t\t4.除法\n");
	gotoxy(11,14);
	printf("\t\t\t\t5.混合算数\n"); 
	gotoxy(11,15);
	printf("\t\t\t\t6.学习\n"); 
	gotoxy(11,16);
	printf("\t\t\t\t7.游戏说明\n"); 
	gotoxy(11,17);
	printf("\t\t\t\t0.退出\n");
	gotoxy(40,18);
	printf("请选择[1 2 3 4 5 6 7 0]:[ ]\b\b");
	
	scanf("%d",&choose);
	
	system("cls");
	
	switch(choose)
	
	{
	
	    case 0:exit (1) ;
	
	    case 1: Frame();
				add();
	
	    case 2:Frame();
				sub();
	
	    case 3:Fence();
				mul();
	
	    case 4: Fence();
				dive();
	
	    case 5: choose1();
	    
	    case 6:teach();
	    
		case 7:explanation();
 
	    
	
		}
		go();
	}

void choose1()
{
	int choose;
	system("cls");
	gotoxy(11,15);
	printf("\t\t\t\t1.低难度混合运算\n"); 
	gotoxy(11,16);
	printf("\t\t\t\t2.高难度混合运算\n");
	gotoxy(40,17);
	printf("请选择[1 2]:[ ]\b\b");
	
	scanf("%d",&choose);
	
	system("cls");
	
	switch(choose)
	
	{
	
	    case 1:Fence();
				mixdown();
				go();
	
	    case 2: Fence();
				mixup();
				go();
	}
}

//加法 
int add()

{
	score=0; 

	File_out();		//打开文件 
	int start,end;

	start=time(NULL); 	//开始时间 

	int i,tnum,rand1,rand2,yours;

	gotoxy(81,7);
	printf("最高分为:%d",HighScore);
	gotoxy(81,8);
	printf("本次得分:%d",score); 
	gotoxy(27,6);
	printf("请选择题目数量<建议在20题左右>:");

	scanf("%d",&tnum);
	for(i=0;i<tnum;i++)
	
	{ 
	    srand(time(NULL));
	
	    rand1=rand()%100+1;		//随机产生从1-10的数 
	
	    rand2=1+(int)rand()%100;
	    
		gotoxy(28,7+i);
	    printf("%d+%d= ",rand1,rand2);
	
	    scanf("%d",&yours);
	
	    if (yours==rand1+rand2)		//当添入的答案正确时,显示√,否则显示×,并显示正确答案。 
	    {
			score+=10;
			gotoxy(40,7+i);
			printf("√\n"); 
		}else{
			gotoxy(40,7+i);
			
			printf("× 正确答案是:%d\n",rand1+rand2); 
		}
		gotoxy(81,8);
		printf("本次得分:%d",score); 

	}
	if(score >= HighScore)
	{
		gotoxy(28,16);
		printf("创记录啦!最高记录被你刷新啦~您的得分是:%d",score);
		HighScore=score;		
		File_in(); 		//记录最高分 
	}else{
		gotoxy(28,17);
		printf("继续努力吧~ 你离最高分还差:%d",HighScore-score);
	}
	
	end=time(NULL);                                            //结束时间
	gotoxy(28,18);
	printf("您的使用时间是%ds\n",end-start);                   //时间计数
	gotoxy(28,19);
	go();
	//是否进入菜单栏

}


void plus()

{

	printf("****加法****\n");
	
	printf("    2  3\n");
	
	printf("  + 3  8\n");
	
	printf("_____________\n");
	
	printf("    6  1\n");

}


void minus()

{

	printf("****减法****\n");
	
	printf("    3  8\n");
	
	printf("  - 1  9\n");
	
	printf("_____________\n");
	
	printf("    1  9\n");
	
	printf("输入'回车'以继续!\n");
	
	getchar();

}


void time()

{

	printf("****乘法****\n");
	
	printf("需要用到如下九九乘法表:\n");
	
	int i,j;
	
	for(i=1;i<=9;i++)
	
	{
	
		for(j=1;j<=i;j++)
		
		{
		
		printf("%d*%d=%d ",i,j,i*j);
		
		}
		
		printf("\n");
	
	}
	
	printf("输入'回车'以继续!\n");
	
	getchar();
	
	printf("例如:\n");
	
	printf("    2  3\n");
	
	printf("  X    3\n");
	
	printf("_____________\n");
	
	printf("    6  9\n");
	
	printf("输入'回车'以继续!\n");
	
	getchar();

}


void devide()

{

	printf("****除法****\n");
	
	printf("        5\n");
	
	printf("  _________\n");
	
	printf(" 7|  3  5\n");
	
	printf("     3  5\n");
	
	printf("  _________\n");
	
	printf("        0\n\n");
	
	printf("输入'回车'以继续!\n");
	
	getchar();
	
	printf("        9.  8  5……\n");
	
	printf("  _____________\n");
	
	printf(" 7|  6  9.  0  0\n");
	
	printf("     6  3\n");
	
	printf("  ______________\n");
	
	printf("        6  0\n");
	
	printf("        5  6\n");
	
	printf("  ______________\n");
	
	printf("           4  0\n");
	
	printf("           3  5\n");
	
	printf("           :\n");
	
	printf("           :\n");
	
	printf("           :\n");

}

//学习 
void teach()

{


	system("cls");
	
	void plus();
	
	void minus();
	
	void time();
	
	void devide();
	
	plus();
	
	minus();
	
	time();
	
	devide();
	
	printf("\n\n简单四则运算的学习结束啦~\n\n\n"); 
	go();

}


//减法 
int sub()

{    
	score=0;
	File_out();
	int start,end;

	start=time(NULL);


	int i,tnum,rand1,rand2,yours;

	gotoxy(81,7);
	printf("最高分为:%d",HighScore);
	gotoxy(81,8);
	printf("本次得分:%d",score); 
	gotoxy(27,6);
	printf("请选择题目数量<建议在20题左右>:");                    
	         
	scanf("%d",&tnum);

	for(i=0;i<tnum;i++)
	
	{
	
	    srand(time(NULL));
	
	    rand1=1+(int)rand()%100;
	
	    rand2=1+(int)rand()%100;
	
	    if(rand1>rand2)
	
	    {
	    	gotoxy(28,7+i);
	    	printf("%d-%d=",rand1,rand2);
	        scanf("%d",&yours);
	
	        if (yours==rand1-rand2)
	        {
				score+=10;
				gotoxy(40,7+i);
				printf("√"); 
			}
			else{
				gotoxy(40,7+i);
				printf("× 正确答案是:%d",rand1-rand2); 
			} 
				gotoxy(81,8);
				printf("本次得分:%d",score);
	    }else{
		gotoxy(28,7+i);	
        printf("%d-%d=",rand2,rand1);

        scanf("%d",&yours);

        if (yours==rand2-rand1)
		{
			score+=10;
			gotoxy(40,7+i);
			printf("√"); 
		}
		else{
			gotoxy(40,7+i);
			printf("× 正确答案是:%d",rand1-rand2); 
		} 
			gotoxy(81,8);
			printf("本次得分:%d",score); 
    	}
	}
	if(score >= HighScore)
	{
		//color(14);
		gotoxy(28,15);
		printf("最高记录被您刷新啦~");
		HighScore=score;
		File_in(); 	
	}else{
			//color(14);
			gotoxy(28,15);
			printf("您离最高分还差:%d",HighScore-score);
	}
	
	end=time(NULL);
	//color(14);                                           //结束时间
	gotoxy(28,16);
	printf("您的游戏时间是%ds\n",end-start);
	
	gotoxy(28,17);
	//color(14); 
	go();
}

//乘法 
int mul()

{
	gotoxy(0,1);
	int start,end;
	start=time(NULL);
    int i,j,tnum,rand1,rand2,yours;

	for(j=0;j<3;j++)
	
	{
	
	    if(j==0)
			
	        printf("第一关\n");
	
	    if(j==1)
	        printf("第二关\n");
	
	    if(j==2)
	
	        printf("第三关\n");
	
	        printf("请选择题目数量<建议在20题左右>:");
	
			scanf("%d",&tnum);

		for(i=0;i<tnum;i++)
		
		{
		
		    srand(time(NULL));
		
		    rand1=1+(int)rand()%10;
		
		    rand2=1+(int)rand()%10;
		
		    printf("%d*%d=",rand1,rand2);
		
		    scanf("%d",&yours);
		
		    if (yours==rand1*rand2)
		
		    {
		
		    //if(i==0)
		
		       printf("	 	√\n");
		
		    //if(i==1)
		
		       // printf("	 	√\n");
		
		    }else {
			printf("闯关失败!正确答案是:%d\n",rand1*rand2);
			end=time(NULL);
			printf("您的游戏时间是%ds\n",end-start);
			go();
			}
//有一题错误即失败
		}

	 if(j==0)
	
	        printf("恭喜通过第一关!\n\n");
	
	    if(j==1)
	
	        printf("恭喜通过第二关!!\n\n");
	
	    if(j==2)
	
	        printf("恭喜通全关!!!\n\n");
	
	}
	end=time(NULL);
	printf("您的游戏时间是%d\n",end-start);
	go();
}


//除法 
int dive()

{
	gotoxy(0,1);
	int start,end;
	start=time(NULL);	

	int i,j,tnum,rand1,rand2,yours;


	for(j=0;j<3;j++)
	
	{
	
	    if(j==0)
	
	        printf("第一关");
	
	    if(j==1)
	
	        printf("第二关");
	
	    if(j==2)
	
	        printf("第三关");
	
	    printf("\n请选择题目数量<建议在20题左右>:");
	
		scanf("%d",&tnum);

		for(i=0;i<tnum;i++)
		
		{
		
		    srand(time(NULL));
		
		    rand1=1+(int)rand()%10;
		
		    rand2=rand1*(1+(int)rand()%10);                         //随机数产生数字
		
		    printf("%d/%d=",rand2,rand1);                            //相乘结果即被除数
		
		    scanf("%d",&yours);
		
		    if (yours==rand2/rand1)
		
		    {
		
		
		
		         printf("	 	√\n");
		
		    }
		
		    else 
			{printf("闯关失败!正确答案是:%d\n",rand2/rand1);go();}
		}
		
		 if(j==0)
		
		        printf("恭喜通过第一关!\n\n");
		
		    if(j==1)
		
		        printf("恭喜通过第二关!!\n\n");
		
		    if(j==2)
		
		        printf("恭喜通全关!!!\n\n");
		
	}
	end=time(NULL);
	printf("您的游戏时间是%d\n",end-start);
	go();
}


/*
 *在文件中读取加减法运算最高分
 */
 void File_out()
 {
 	FILE *fp;
 	fp =fopen("save.txt","r+");
	fscanf(fp,"%d",&HighScore);
	fclose(fp);
 }
 
 /*
  *将加减法最高分存储与文件中
  */
  void File_in()
  {
  	FILE *fp ;
	fp =fopen("save.txt","w+");
	fprintf(fp,"%d",HighScore);
	fclose(fp); 
   } 
   
   

//在文件中读取混合运算最高分
   void File_out1()
 {
 	FILE *fp;
 	fp =fopen("save1.txt","r+");
	fscanf(fp,"%d",&HighScore);
	fclose(fp);
 }
 
 /*
  *将混合运算最高分存储与文件中
  */
  void File_in1()
  {
  	FILE *fp ;
	fp =fopen("save1.txt","w+");
	fprintf(fp,"%d",HighScore);
	fclose(fp); 
   } 
 
 //是否继续 
 void go()
//清屏选项

{
	int choose; 
	printf("如果你想继续,输入1,想退出就输入0  ");
	scanf("%d",&choose);
	system("cls");
	switch(choose)
	
	{
	
	    case 0:
		exit(0);
	
	    case 1: 
				Gameplay()  ;
	}
}

//边框 
void Frame()
{
	int n;
	int i,j=1;
	//color(14);
	for (i=5;i<=25;i++)
	{
		for (j=25;j<=80;j++)
		{
			gotoxy(j,i);
			if (i==5||i==25) printf("=");
			else if (j==25||j==79) printf("||");
		}
	}
}


void Fence()
{
	int i;
	for(i=1;i<=29;i++)
	{
		gotoxy(45,i);
		printf("||"); 
	
	}
 } 
 

//低难度混合运算 
void  mixdown()
{
	
	score=0;
	File_out1();
	int start,end;
	start=time(NULL); 
	int i,rand1,rand2,rand3,yours,x;
	gotoxy(1,1);
	printf("此为十道低难度四则运算的试题\n");
	gotoxy(1,2);
	printf("小朋友,快来算算吧~\n") ; 
	gotoxy(48,2);
	printf("这套卷子的最高分是:%d",HighScore);
	gotoxy(0,4);
	for(i=0;i<10;i++)
	{

		rand1=rand()%10+1;
		rand2=rand()%10+1;  
		rand3=rand()%10+1;
		x=rand()%6;
		switch(x)
		{
			case 1:
				printf("%d+%d-%d=",rand1,rand2,rand3);
				scanf("%d",&yours);
				if(yours==rand1+rand2-rand3)
				{
					printf("			√\n");
					score+=10;
				}
				else
				{
					
					printf("			×答案为:%d\n",rand1+rand2-rand3);
				}
				continue;
			case 2:
				printf("%d+%d*%d=",rand1,rand2,rand3);
				scanf("%d",&yours);
				if(yours==rand1+rand2*rand3)
				{
					printf("			√\n");
					score+=10;
				}
				else
				{
					printf("			×答案为:%d\n",rand1+rand2*rand3);
				}
				continue;
			case 3:
				if(rand2%rand3==0)
				{
					printf("%d+%d/%d=",rand1,rand2,rand3);
					scanf("%d",&yours);
					if(yours==rand1+rand2/rand3)
					{
						printf("			√\n");
						score+=10;
					}
					else
					{
						printf("			×答案为:%d\n",rand1+rand2/rand3);
					}
					continue;
				}else{
					i--;
					continue;
				}
			case 4:
				printf("%d*(%d+%d)=",rand1,rand2,rand3);
				scanf("%d",&yours);
				if(yours==rand1*(rand2+rand3))
				{
					printf("			√\n");
					score+=10;
				}
				else
				{
					printf("			×答案为:%d\n",rand1*(rand2+rand3));
				}
				continue;
			case 5:
				if(rand2%rand3==0)
				{
					printf("%d-%d/%d=",rand1,rand2,rand3);
					scanf("%d",&yours);
					if(yours==rand1-rand2/rand3)
					{
						printf("			√\n");
						score+=10;
					}
					else
					{
						printf("			×答案为:%d\n",rand1+rand2/rand3);
					}
					continue;
				}else{
					i--;
				continue;
				}
			default:
				printf("(%d-%d)*%d=",rand1,rand2,rand3);
				scanf("%d",&yours);
				if(yours==(rand1-rand2)*rand3)
				{
					printf("			√\n");
					score+=10;
				}
				else
				{
					printf("			×答案为:%d\n",(rand1-rand2)*rand3);
				}
				continue;
		}
	}
	printf("这套试卷您的得分是:%d\n",score); 
	if(score >= HighScore)
	{
	printf("最高记录被您刷新啦~\n");
	HighScore=score;
	File_in1(); 	
	}else{
		printf("您离最高分还差:%d\n",HighScore-score);
	}
}


//高难度混合运算 
void  mixup()
{
	
	score=0;
	File_out1();
	int start,end;
	start=time(NULL); 
	int i,rand1,rand2,rand3,yours,x;
	gotoxy(1,1);
	printf("此为十道高难度四则运算的试题\n");
	gotoxy(1,2);
	printf("小朋友,快来算算吧~\n") ; 
	gotoxy(48,2);
	printf("这套卷子的最高分是:%d",HighScore);
	gotoxy(0,4);
	for(i=0;i<10;i++)
	{

		rand1=rand()%100+1;
		rand2=rand()%100+1;  
		rand3=rand()%100+1;
		x=rand()%6;
		switch(x)
		{
			case 1:
				printf("%d+%d-%d=",rand1,rand2,rand3);
				scanf("%d",&yours);
				if(yours==rand1+rand2-rand3)
				{
					printf("			√\n");
					score+=10;
				}
				else
				{
					
					printf("			×答案为:%d\n",rand1+rand2-rand3);
				}
				continue;
			case 2:
				printf("%d+%d*%d=",rand1,rand2,rand3);
				scanf("%d",&yours);
				if(yours==rand1+rand2*rand3)
				{
					printf("			√\n");
					score+=10;
				}
				else
				{
					printf("			×答案为:%d\n",rand1+rand2*rand3);
				}
				continue;
			case 3:
				if(rand2%rand3==0)
				{
					printf("%d+%d/%d=",rand1,rand2,rand3);
					scanf("%d",&yours);
					if(yours==rand1+rand2/rand3)
					{
						printf("			√\n");
						score+=10;
					}
					else
					{
						printf("			×答案为:%d\n",rand1+rand2/rand3);
					}
					continue;
				}else{
					i--;
					continue;
				}
			case 4:
				printf("%d*(%d+%d)=",rand1,rand2,rand3);
				scanf("%d",&yours);
				if(yours==rand1*(rand2+rand3))
				{
					printf("			√\n");
					score+=10;
				}
				else
				{
					printf("			×答案为:%d\n",rand1*(rand2+rand3));
				}
				continue;
			case 5:
				if(rand2%rand3==0)
				{
					printf("%d-%d/%d=",rand1,rand2,rand3);
					scanf("%d",&yours);
					if(yours==rand1-rand2/rand3)
					{
						printf("			√\n");
						score+=10;
					}
					else
					{
						printf("			×答案为:%d\n",rand1+rand2/rand3);
					}
					continue;
				}else{
					i--;
				continue;
				}
			default:
				printf("(%d-%d)*%d=",rand1,rand2,rand3);
				scanf("%d",&yours);
				if(yours==(rand1-rand2)*rand3)
				{
					printf("			√\n");
					score+=10;
				}
				else
				{
					printf("			×答案为:%d\n",(rand1-rand2)*rand3);
				}
				continue;
		}
	}
	printf("这套试卷您的得分是:%d\n",score); 
	if(score >= HighScore)
	{
	printf("最高记录被您刷新啦~\n");
	HighScore=score;
	File_in1(); 	
	}else{
		printf("您离最高分还差:%d\n",HighScore-score);
	}
}

//主函数 
int main(void)
{
	system("color f0\n");
	welcom();
	Gameplay();
	
	
 } 

 

 六、完整展示:

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值