C语言实现小游戏
小编导读:
/************************************************************************/ /* @author mero */ /* @data 2016.6.8 */ /* @version 1.0 */ /************************************************************************/ #include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> //结构体config用来配置机会次数,题量大小 struct config{ int chance;//用来存储每道题目机会次数 int topicNum;//用来存储题目数量 }cfg[4],*p; /*结构体award用于保存奖励语*/ struct award{ char good[30]; char well[20]; char cheers[20]; char nice[20]; char fine[20]; }award1; int main(void){ /*------------------------函数声明部分-------------------------*/ int getRandom(int,int);//得到随机数函数 int add(int,int); //加法函数 int mul(int,int); //乘法函数 void goto_xy(int,int); //定位光标到指定坐标 /*------------------------业务逻辑区---------------------------*/ printf("\n\t\t\t\t 小学生算术游戏v1.0\n"); printf("\n\t\t\t\t*********************\n\n"); printf("\t\t\t\t\t[1]加法\n"); printf("\t\t\t\t\t[2]减法\n"); printf("\t\t\t\t\t[3]乘法\n"); printf("\t\t\t\t\t[4]除法\n"); printf("\t\t\t\t\t[5]设置题量大小\n"); printf("\t\t\t\t\t[6]设置答题机会\n"); printf("\t\t\t\t\t[0]退出\n"); printf("\n\t\t\t\t*********************\n\n"); //初始配置数据 struct config cfg[4]={{3,5},{3,5},{3,5},{3,5}}; p=cfg; struct award award1={"恭喜你,奖励一根棒棒糖","非常棒,太聪明啦","不错哦!加油","干得漂亮","运气真好"}; int selector; for (;;) { printf("\t\t\t\t请输入选项[ ]\n"); HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); COORD coordScreen = {0, 0}; //光标位置 CONSOLE_SCREEN_BUFFER_INFO csbi; GetConsoleScreenBufferInfo(hConsole, &csbi); //printf("光标坐标:(%d,%d)\n", csbi.dwCursorPosition.X, csbi.dwCursorPosition.Y); goto_xy(43,csbi.dwCursorPosition.Y-1); scanf("%d",&selector); if (selector>=0&&selector<7) { switch(selector){ case 0: printf("\t\t-----------正在退出游戏中-----------\n"); printf("\t\t************************************\n"); printf("\t\t\t\t------正在恢复原始状态--------\n"); printf("\t\t\t\t------------请稍后------------\n"); int j; for(j=0;j<4;j++){ p->chance=3; p->topicNum=5; } printf("\t\t\t\t------------已恢复------------\n"); printf("\t\t--------游戏已退出,重新开始--------\n"); printf("\t\t************************************\n"); break; case 1: printf("\t\t\t\t欢迎进入加法游戏中\n"); int i; int result; for(i=0;i<p->topicNum;i++){ srand(time(NULL)); int a = getRandom(1,100); int b = getRandom(1,100); //产生结果 int addResult=add(a,b); printf("\t\t\t\t当前正在做第%d题,请输入 \n",i+1); printf("\t\t\t\t%d+%d=",a,b); scanf("%d",&result); printf("\t\t\t------当前输入的数为%d-------\n",result); if(result==addResult){ printf("\t\t\t恭喜你做对了,正在加载下一题\n"); int hah=getRandom(1,5); switch(hah){ case 1: printf("\t\t\t\t%s\n",award1.good); break; case 2: printf("\t\t\t\t%s\n",award1.well); break; case 3: printf("\t\t\t\t%s\n",award1.nice); break; case 4: printf("\t\t\t\t%s\n",award1.cheers); break; case 5: printf("\t\t\t\t%s\n",award1.fine); break; } }else{ printf("\t\t\t“再试一次!”\n"); int j; for (j=0;j<p->chance-1;j++) { printf("\t\t\t\t请输入 "); scanf("%d",&result); printf("\t\t\t------当前输入的数为%d-------\n",result); if (result==addResult) { printf("\t\t\t恭喜你做对了,正在加载下一题\n"); int hah=getRandom(1,5); switch(hah){ case 1: printf("\t\t\t\t%s\n",award1.good); break; case 2: printf("\t\t\t\t%s\n",award1.well); break; case 3: printf("\t\t\t\t%s\n",award1.nice); break; case 4: printf("\t\t\t\t%s\n",award1.cheers); break; case 5: printf("\t\t\t\t%s\n",award1.fine); break; } break; } else{ printf("\t\t\t“再试一次!”\n"); } } printf("\t\t\t\t第%d题正确答案是%d\n",i+1,addResult); } } break; case 2: printf("\t\t\t\t欢迎进入减法游戏中\n"); int g; int result1; for(g=0;g<(p+1)->topicNum;g++){ int a,b; for(;;){ srand(time(NULL)); a=getRandom(1,100); b=getRandom(1,100); if(a>b){ break; } } //产生结果 int subResult=a-b; printf("\t\t\t\t当前正在做第%d题,请输入 \n",g+1); printf("\t\t\t\t%d-%d=",a,b); scanf("%d",&result1); printf("\t\t\t------当前输入的数为%d-------\n",result1); if(result1==subResult){ printf("\t\t\t恭喜你做对了,正在加载下一题\n"); int hah=getRandom(1,5); switch(hah){ case 1: printf("\t\t\t\t%s\n",award1.good); break; case 2: printf("\t\t\t\t%s\n",award1.well); break; case 3: printf("\t\t\t\t%s\n",award1.nice); break; case 4: printf("\t\t\t\t%s\n",award1.cheers); break; case 5: printf("\t\t\t\t%s\n",award1.fine); break; } }else{ printf("\t\t\t“再试一次!”\n"); int v; for (v=0;v<(p+1)->chance-1;v++) { printf("\t\t\t\t请输入 "); scanf("%d",&result1); printf("\t\t\t------当前输入的数为%d-------\n",result1); if (result1==subResult) { printf("\t\t\t恭喜你做对了,新开传奇网站,正在加载下一题\n"); int hah=getRandom(1,5); switch(hah){ case 1: printf("\t\t\t\t%s\n",award1.good); break; case 2: printf("\t\t\t\t%s\n",award1.well); break; case 3: printf("\t\t\t\t%s\n",award1.nice); break; case 4: printf("\t\t\t\t%s\n",award1.cheers); break; case 5: printf("\t\t\t\t%s\n",award1.fine); break; } break; } else{ printf("\t\t\t“再试一次!”\n"); } } printf("\t\t\t\t第%d题正确答案是%d\n",g+1,subResult); } } break; case 3: printf("\t\t\t\t欢迎进入乘法游戏中\n"); int m; int result2; for(m=0;m<(p+2)->topicNum;m++){ srand(time(NULL)); int a = getRandom(1,100); int b = getRandom(1,100); //产生结果 int mulResult=mul(a,b); printf("\t\t\t\t当前正在做第%d题,请输入 \n",m+1); printf("\t\t\t\t%d*%d=",a,b); scanf("%d",&result2); printf("\t\t\t------当前输入的数为%d-------\n",result2); if(result2==mulResult){ printf("\t\t\t恭喜你做对了,正在加载下一题\n"); int hah=getRandom(1,5); switch(hah){ case 1: printf("\t\t\t\t%s\n",award1.good); break; case 2: printf("\t\t\t\t%s\n",award1.well); break; case 3: printf("\t\t\t\t%s\n",award1.nice); break; case 4: printf("\t\t\t\t%s\n",award1.cheers); break; case 5: printf("\t\t\t\t%s\n",award1.fine); break; } }else{ printf("\t\t\t“再试一次!”\n"); int n; for (n=0;n<(p+2)->chance-1;n++) { printf("\t\t\t\t请输入 "); scanf("%d",&result2); printf("\t\t\t------当前输入的数为%d-------\n",result2); if (result2==mulResult) { printf("\t\t\t恭喜你做对了,正在加载下一题\n"); int hah=getRandom(1,5); switch(hah){ case 1: printf("\t\t\t\t%s\n",award1.good); break; case 2: printf("\t\t\t\t%s\n",award1.well); break; case 3: printf("\t\t\t\t%s\n",award1.nice); break; case 4: printf("\t\t\t\t%s\n",award1.cheers); break; case 5: printf("\t\t\t\t%s\n",award1.fine); break; } break; } else{ printf("\t\t\t“再试一次!”\n"); } } printf("\t\t\t\t第%d题正确答案是%d\n",m+1,mulResult); } } break; case 4: printf("\t\t\t\t欢迎进入除法游戏中\n"); int mm; int result3; for(mm=0;mm<(p+3)->topicNum;mm++){ int a,b; for(;;){ srand(time(NULL)); a=getRandom(1,100); b=getRandom(1,100); if(a%b==0){ break; } } //产生结果 int divideResult=a/b; printf("\t\t\t\t当前正在做第%d题,请输入 \n",mm+1); printf("\t\t\t\t%d/%d=",a,b); scanf("%d",&result3); printf("\t\t\t------当前输入的数为%d-------\n",result3); if(result3==divideResult){ printf("\t\t\t恭喜你做对了,正在加载下一题\n"); int hah=getRandom(1,5); switch(hah){ case 1: printf("\t\t\t\t%s\n",award1.good); break; case 2: printf("\t\t\t\t%s\n",award1.well); break; case 3: printf("\t\t\t\t%s\n",award1.nice); break; case 4: printf("\t\t\t\t%s\n",award1.cheers); break; case 5: printf("\t\t\t\t%s\n",award1.fine); break; } }else{ printf("\t\t\t“再试一次!”\n"); int nn; for (nn=0;nn<(p+3)->chance-1;nn++) { printf("\t\t\t\t请输入 "); scanf("%d",&result3); printf("\t\t\t------当前输入的数为%d-------\n",result3); if (result3==divideResult) { printf("\t\t\t恭喜你做对了,正在加载下一题\n"); int hah=getRandom(1,5); switch(hah){ case 1: printf("\t\t\t\t%s\n",award1.good); break; case 2: printf("\t\t\t\t%s\n",award1.well); break; case 3: printf("\t\t\t\t%s\n",award1.nice); break; case 4: printf("\t\t\t\t%s\n",award1.cheers); break; case 5: printf("\t\t\t\t%s\n",award1.fine); break; } break; } else{ printf("\t\t\t“再试一次!”\n"); } } printf("\t\t\t\t第%d题正确答案是%d\n",mm+1,divideResult); } } break; case 5: printf("\t\t\t\t------请输入题量大小----\n"); scanf("%d%d%d%d",&cfg[0].topicNum,&cfg[1].topicNum,&cfg[2].topicNum,&cfg[3].topicNum); printf("\t\t\t\t你已修改加减乘除题量大小为%d %d %d %d\n",cfg[0].topicNum,cfg[1].topicNum,cfg[2].topicNum,cfg[3].topicNum); /*-----------------修改题量大小---------------*/ break; case 6: printf("\t\t\t\t请输入要修改的加减乘除游戏机会次数\n"); scanf("%d%d%d%d",&cfg[0].chance,&cfg[1].chance,&cfg[2].chance,&cfg[3].chance); printf("\t\t\t\t你已修改加减乘除题量大小为%d %d %d %d\n",cfg[0].chance,cfg[1].chance,cfg[2].chance,cfg[3].chance); /*-----------------修改机会次数---------------*/ break; } }else{ printf("对不起,请输入正确选项\n"); } } return 0; } /*-----------------------函数实现部分-------------------------*/ //获取随机数函数 int getRandom(int a,int b){ int ran; ran = rand()%(b-a+1)+a; return ran; } //加法函数 int add(int a,int b){ int sum=0; sum = a+b; return sum; } //乘法函数 int mul(int a,int b){ int mulResult; mulResult=a*b; return mulResult; } void goto_xy(int x,int y){ //定位光标位置到指定坐标 HANDLE hOut; hOut = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos={x,y}; SetConsoleCursorPosition(hOut,pos); }
程序员的思维,呵呵!代码很简明。也没写成头文件形式,全部放在一个文件中,方便。
热门资讯
06-08
·明年还会有《古墓丽影》、《细胞06-08
·前两月全部留给了进口片撒欢06-08
·沙飞/FOTOE评论697347民国时孩子06-08
·《斗仙2》天道决战场攻略之队伍06-08
·主要课程模式为1对1个训课、小组06-08
·现场粉丝表示男神女神完全没有明06-08
·笔者一开始也不相信这样的手机应06-08
·大厅集合了《快乐牛牛》、《斗地
传奇特荐
05-04
·《期间》评最具影响力50款科技产05-05
·虐心游戏《Choppa》评测:虐的就05-06
·慈文传媒第一季度矫正通告:上半05-19
·女主播直播斗鸡游戏 衣着暴露动05-19
·眼下就是花式告白的最佳时机05-19
·《白发魔女传》删档测试今日开启05-19
·整体音乐让游戏带入感非常不错05-20
·《诛仙手游》中还有凄凉肃杀的空05-21
·pass:深圳市巨彩科技05-21
·pass:棋牌游戏银商