源码下载地址: http://download.csdn.net/detail/monkey_uan/5115921
#include<stdio.h>
#include<windows.h>
char j;//技能序号
int HP1,HP2;
int speed=30;//速度,越小越快!
int sh;//伤害
int bika[2];//比卡丘坐标
int feiyu[2];//飞羽(职业)坐标
int feiyu_before[2];//移动前坐标
int x_min=1;x_max=77; y_min=5; y_max=22;//范围
int level=1,jingyan=0;//初始化等级、经验
char name[10];//名字
int i,num1,num2,tem,win,stu_level=2; //小学生练习系统 第520行开始void gotoxy(int x, int y)//x为列坐标,y为行坐标
{COORD pos = {x,y};SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
void hidden()//隐藏光标
{HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_CURSOR_INFO cci;GetConsoleCursorInfo(hOut,&cci);cci.bVisible=0;//赋1为显示,赋0为隐藏SetConsoleCursorInfo(hOut,&cci);
}
void loading()//装载
{int i;printf("为了得到更好的体验请最大化窗口!\n\n请相信我!\n正在很努力地为您加载。\n 请稍候...\n Loading: ");for(i = 0; i <= 100; i++){printf("%3d%%\b\b\b\b", i);Sleep(20);}
}
void logo()
{int i;for(i=0;i<18;i++){gotoxy(i,0);puts(" .======. "); gotoxy(i,1);puts(" | INRI | "); gotoxy(i,2);puts(" | | "); gotoxy(i,3);puts(" | | "); gotoxy(i,4);puts(" .========' '========. "); gotoxy(i,5);puts(" | _ xxxx _ | "); gotoxy(i,6);puts(" | /_;-.__ / _\\ _.-;_\\ | "); gotoxy(i,7);puts(" | `-._`'`_/'`.-' | "); gotoxy(i,8);puts(" '========.`\ /`========' "); gotoxy(i,9);puts(" | | / | "); gotoxy(i,10);puts(" |/-.( | "); gotoxy(i,11);puts(" |\\_._\\ | "); gotoxy(i,12);puts(" | \\ \\`;| "); gotoxy(i,13);puts(" | > |/| "); gotoxy(i,14);puts(" | / // | "); gotoxy(i,15); puts(" | |// | "); gotoxy(i,16); puts(" | \\(\\ | "); gotoxy(i,17); puts(" | `` | "); gotoxy(i,18); puts(" | | "); gotoxy(i,19);//puts(" | | "); gotoxy(i,20); //puts(" | | "); gotoxy(i,21);puts(" | | "); gotoxy(i,20);puts(" \\\ _ _\\\| \\// |//_ _ \\// _ "); gotoxy(i,21);puts(" ^ `^`^ ^`` `^ ^` ``^^` `^^` `^ `^ "); gotoxy(i,22);puts(" 流浪诗人 Studio 作品"); Sleep(10);if(i==0)Sleep(300);}getch();
}
void piantou() //片头
{int i;for(i=0;i<18;i++){gotoxy(0,0);puts("从前、从前...."); gotoxy(i,0);printf(" ");Sleep(100);}for(i=0;i<30;i++){gotoxy(0,0);puts("这故事有点长,作者有点懒"); gotoxy(i,0);printf(" ");Sleep(100);}Sleep(100);for(i=0;i<18;i++){gotoxy(0,0);puts("预知后事如何..."); gotoxy(i,0);printf(" ");Sleep(100);}for(i=0;i<22;i++){gotoxy(0,0);puts("尽请期待、正式版。"); gotoxy(i,0);printf(" ");Sleep(100);}getch();
}void HP()
{if(HP1<=0)HP1=0;if(HP2<=0)HP2=0;gotoxy(0,0);printf(" HP:%d HP:%d \n",HP1,HP2);printf(" %-10s 比卡丘\n",name);
}void gong()
{printf(" 4$$-. \n");printf(" 4 '. \n");printf(" 4 ^. `;-. ____, \n"); printf(" 4 $ `.`\\_...._/`.-'` \n");printf(" 4 'b \\ / ,\n");printf(" 4 'b. /() () | .' `-._ \n");printf(" 4 $ |) . () \\ / _.' \n");printf(" 4 $r \\ -'- ,; '. < \n");printf(" 4 $F ;.__ ,;| > \\ \n");printf(" 4 $b / , / , |.-'.-' \n");printf(" 4 *$$F (_/ (_/ ,;|.<` \n"); printf(" 4 $$' \\ , ;-` \n");printf(" 4 .$F > \\ / \n");printf(" 4 dP (_,-'`> .' \n");printf(" 4 F (_,' \n");printf(" 4 @ \n");printf(" 4 . \n");printf(" J. ^ \n");printf(" '$$^ \n");
}void jian()
{int x=0,y=10,i;if(j=='1'){for(i=0;i<15;i++){gotoxy(i,y);printf(" -$b========================*P=- \n");Sleep(speed);}}if(j=='2')//苦逼的C绘图!{for(y=0;y<18;y++){gotoxy(47,y);printf(" ");gotoxy(47,y+1);printf("∨");gotoxy(47,y+2);printf("‖");gotoxy(47,y+3);printf("‖");gotoxy(47,y+4);printf("‖");gotoxy(47,y+5);printf("‖");gotoxy(47,y+6);printf("‖");gotoxy(47,y+7);printf("‖");gotoxy(47,y+8);printf("‖");gotoxy(47,y+9);printf("㏕");gotoxy(47,y+10);printf("‖");gotoxy(47,y+11);printf("‖");gotoxy(47,y+12);printf("∨");Sleep(speed);}}if(j=='3'){for(i=0;i<15;i++){gotoxy(i,y-2);printf(" -$b========================*P=-");gotoxy(i,y);printf(" -$b========================*P=-");gotoxy(i,y+2);printf(" -$b========================*P=-");Sleep(22);}}
}void about()
{printf(" C语言模拟回合制游戏(小学生数学练习系统移植版)\n 意见反馈\n QQ:137987751\n BY 流浪诗人 Studio\n\n\n");puts(" 更新日志:");puts(" 2012.9.26 完成初版本");puts(" 堕落时期,罪过罪过");puts(" 2012.11.1 加入伪随机函数");puts(" 2012.11.22 加入字符画");puts(" 一直在努力,从未间断过");getch();
}void shan()
{int refresh;
Sleep(500);
for(refresh=0;refresh<5;refresh++)
{printf("比卡丘使用十万伏特\n%s HP-%d\n",name,sh);system("CLS");Sleep(70);HP();gong();
}
}void fight()//战斗系统
{ int i;HP1=500;HP2=1000;system("CLS");for(i=1;i>0;){ HP();gong();gotoxy(0,10);printf(" -$b========================*P=- \n");gotoxy(0,22);printf(" 1.百步穿杨\n 2.龙剑波\n 3.多重射击\n");j=getch();if(j=='1'){ sh=rand()%(135-88+1)+88;HP2=HP2-sh;HP();jian();gotoxy(0,26);printf("凝心静心,百步穿杨。\n比卡丘 HP-%d\n",sh);Sleep(1000);if(HP2<=0)break;sh=rand()%(135-88+1)+88;HP1=HP1-sh;shan();}elseif(j=='2'){sh=rand()%(245-155+1)+155;HP2=HP2-sh;HP();jian();gotoxy(0,26);printf("以龙剑施展御箭术。\n比卡丘 HP-%d\n",sh);Sleep(1000);if(HP2<=0)break;sh=rand()%(135-88+1)+88;HP1=HP1-sh;shan();}elseif(j=='3'){sh=rand()%(305-215+1)+215;HP2=HP2-sh;HP();jian();gotoxy(0,27);printf("满天箭雨,无路可逃!\n比卡丘HP-%d\n",sh);Sleep(1000);if(HP2<=0)break;sh=rand()%(135-88+1)+88;HP1=HP1-sh;shan();}else printf("请输入正确的数字!");printf("\n");Sleep(1000);system("CLS");if(HP1<=0){printf("\n\n OH!好可惜哦!\n");getch();return;}}printf("\n\n 获得80 经验!\n");jingyan+=80;getch();system("CLS");
}void update()
{gotoxy(58,0);printf("%s",name);gotoxy(58,1);if(jingyan>=80*level*1.2)level++;printf("等级:%d",level);gotoxy(58,2);printf("经验:%d",jingyan);
}void game()
{ int i;
char direction;//方向
bika[0]=5;
bika[1]=10;
feiyu[1]=4;
for(;;i++)
{gotoxy(0,0);
puts(" '''╭⌒╮⌒╮.',''',,',.'',,','',. '',,',.',''',,',.'' ");
puts("╱◥██◣''o',''',,',.''.'',,',. '',,',.',''',,',.'' ");
puts("|田|田田│ '',,',.',''',,',.'' '',,',.',''',,',.'' ");
puts("╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬");
update();
gotoxy(0,23);
puts(" \\\|// _\\| \// \|//_ _\// __\\| \// |//_ \// _\\| \// \|//_ _\// _\\| \///_ _\// _\\| \//");
puts(" ^ `^`^ ^`` `^ ^` ``^^``^^` `^ `^`^ ^` ``^^` `^^` `^ `^`^`^ ^` ``^^` `^^` `");
// for(;;i++) 测试备用
gotoxy(bika[0],bika[1]);
printf("□");
gotoxy(feiyu[0],feiyu[1]);
printf("■");
direction=getch();
switch(direction)
{
case 27: {return;}
case 75: {feiyu_before[0]=feiyu[0];feiyu_before[1]=feiyu[1]; if(feiyu[0]<x_min)break; feiyu[0]--; break;}
case 77: {feiyu_before[0]=feiyu[0];feiyu_before[1]=feiyu[1]; if(feiyu[0]>=x_max) break; feiyu[0]++; break;}
case 72: {feiyu_before[0]=feiyu[0];feiyu_before[1]=feiyu[1]; if(feiyu[1]<y_min) break; feiyu[1]--; break;}
case 80:{feiyu_before[0]=feiyu[0];feiyu_before[1]=feiyu[1]; if(feiyu[1]>=y_max) break; feiyu[1]++; break;}
}
gotoxy(feiyu_before[0],feiyu_before[1]);
printf(" ");
/*if(feiyu[0]-bika[0]<3 && feiyu[0]-bika[0]>0)
bika[0]++;
if(bika[0]-feiyu[0]<3 && bika[0]-feiyu[0]>0)
bika[0]--;
if(feiyu[1]-bika[1]<3 && feiyu[1]-bika[1]>0)
bika[1]++;
if(bika[1]-feiyu[1]<3 && bika[1]-feiyu[1]>0)
bika[1]++;*/ //失败的怪物AI系统
if((bika[0]-1==feiyu[0] ||bika[0]+1==feiyu[0]||bika[0]==feiyu[0]) && bika[1]==feiyu[1]) //同理可做住宿满血系统
{fight();bika[0]=rand()%(77-1+1)+1;bika[1]=rand()%(22-5+1)+5;
}
if(level>=10)
{printf("恭喜你通过游戏基本操作测试\n正式进入游戏...\n");loading();system("CLS");printf("很抱歉,文件已损坏...\n请返回进行数学练习");Sleep(1000);getch();return;
}
}
}void set()//设置
{int i;for(i=1;i<2;i++){puts(" 设置\n温馨提示:ctrl键+空格键选择输入法。\n输入主角的名字:");scanf("%s",name);if(strlen(name)>10){puts("请正确输入十个字符(一个中文两个字符)以内的名字:");i--;Sleep(2000);system("CLS");}}
}
void help()
{puts(" 帮助\n运动场景:\n方向键控制 上下左右;Esc键返回菜单\n\n战斗场景:\n数字键选择施放技能,详情请看技能菜单\n\n仅供娱乐测试");getch();
}menu() //游戏菜单
{int t,a,x;char m;srand((unsigned)time(NULL));hidden();//隐藏光标loading();logo();system("CLS");set();system("CLS");for(x=1;;){system("cls");printf("╔═══════════════╗\n║ 1.开始游戏 ║\n║ 2.设置 ║\n║ 3.关于 ║\n║ 4.帮助 ║\n║ 5.退出 ║\n╚═══════════════╝"); m=getch();if(m=='1'){ system("CLS");piantou();system("CLS");game();}if(m=='2'){ system("CLS");set();}if(m=='3'){ system("CLS");about();}if(m=='4'){ system("CLS");help();}if(m=='5'){ return 0;}elsex=1;}
}
void hidden1()//显示光标
{HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_CURSOR_INFO cci;GetConsoleCursorInfo(hOut,&cci);cci.bVisible=1;//赋1为显示,赋0为隐藏SetConsoleCursorInfo(hOut,&cci);
}
/*---------------------------------------------完美分割线------------------------------------------------------*/
randnum()
{if(stu_level==1){num1=rand()%10;num2=rand()%10;}if(stu_level==2){num1=rand()%100;num2=rand()%100;}}
stu_set()
{char slevel;puts("选择练习难度:\n1.个位运算,除法只进行整除运算\n2.十位运算(包括个位),除法结果精确到2位数");slevel=getch();switch(slevel){case 27: {return;} case '1': {stu_level=1;break;} case '2': {stu_level=2;break;} }
}
stu_help()
{puts(" 帮助\n练习难度:\n1.个位运算,除法只进行整除运算\n2.十位运算(包括个位),除法结果精确到2位数\n\n每次练习10道题,如果全部答对,返回菜单出现隐藏功能。\n数字键选择菜单,详情请看菜单选择序号\n\n意见反馈:\n QQ:137987751");getch();
}
jia()
{FILE*fp;fp=fopen("c:\\错题本.txt","a");//追加打开printf("本次练习共有10道题,输入答案以回车键结束\n");for(i=1;i<11;i++){randnum();printf(" %d+%d=",num1,num2);scanf("%d",&tem);if(tem==num1+num2){win++;printf(" 恭喜答对了! 再答对%d道题就可以开启隐藏功能哦!\n",10-win);}else{fprintf(fp,"%d+%d=%d\n",num1,num2,num1+num2);printf(" 好可惜哦! %d+%d=%d\a\n",num1,num2,num1+num2);//警报声}}
fclose(fp);
}
jianfa()
{FILE*fp;fp=fopen("c:\\错题本.txt","a");printf("本次练习共有10道题,输入答案以回车键结束\n");for(i=1;i<11;i++){randnum();if(num2>num1){i--;continue; }printf(" %d-%d=",num1,num2);scanf("%d",&tem);if(tem==num1-num2){win++;printf(" 恭喜答对了! 再答对%d道题就可以开启隐藏功能哦!\n",10-win);}else{fprintf(fp,"%d-%d=%d\n",num1,num2,num1-num2);printf(" 好可惜哦! %d-%d=%d\a\n",num1,num2,num1-num2); //警报声}}fclose(fp);
}
cheng()
{FILE*fp;fp=fopen("c:\\错题本.txt","a");printf("本次练习共有10道题,输入答案以回车键结束\n");for(i=1;i<11;i++){randnum();printf(" %d*%d=",num1,num2);scanf("%d",&tem);if(tem==num1*num2){win++;printf(" 恭喜答对了! 再答对%d道题就可以开启隐藏功能哦!\n",10-win);}else{fprintf(fp,"%d*%d=%d\n",num1,num2,num1*num2);printf(" 好可惜哦! %d*%d=%d\a\n",num1,num2,num1*num2);//警报声}}fclose(fp);
}
chu()
{float shang,temshang,fnum1,fnum2;FILE*fp;fp=fopen("c:\\错题本.txt","a");if(stu_level==1)printf("本次练习共有10道题,输入答案以回车键结束\n");if(stu_level==2)printf("本次练习共有10道题,输入答案(精确到两位小数),以回车键结束\n");for(i=1;i<11;i++){randnum();if(stu_level==1 && (num2==0 || num2>num1 ||num1%num2!=0)){i--;continue; }if(stu_level==2 && num2==0 ){i--;continue; }printf(" %d/%d=",num1,num2);scanf("%f",&shang);if(stu_level==1){if(shang==num1/num2){win++;printf(" 恭喜答对了! 再答对%d道题就可以开启隐藏功能哦!\n",10-win);}else{fprintf(fp,"%d/%d=%d\n",num1,num2,num1/num2);printf(" 好可惜哦! %d/%d=%d\a\n",num1,num2,num1/num2);//警报声}}if(stu_level==2){fnum1=(float)num1;fnum2=(float)num2;temshang=((int)((fnum1/fnum2)*100.0+0.5))/100.0;if(shang==temshang){win++;printf(" 恭喜答对了! 再答对%d道题就可以开启隐藏功能哦!\n",10-win);}else{fprintf(fp,"%d/%d=%.2f\n",num1,num2,temshang);printf(" 好可惜哦! %d/%d=%.2f\a\n",num1,num2,temshang);//警报声}}}fclose(fp);
}
main()
{int x,m;srand( (unsigned)time( NULL ) );//以系统时间为随机种子,没此种子,每次运行程序随机数有规律。hidden();//隐藏光标logo();for(x=1;;){system("cls");hidden();//隐藏光标printf("╔═══════════════╗\n"); printf("║ 小学生算术练习小软件 ║\n"); printf("╠═══════════════╣\n");printf("║ 1.加法运算练习 ║\n");printf("║ 2.减法运算练习 ║\n");printf("║ 3.乘法运算练习 ║\n");printf("║ 4.除法运算练习 ║\n");printf("║ 5.难度设置 ║\n");printf("║ 6.帮助 ║\n");printf("║ 7.退出 ║\n");if(win==10) //隐藏奖励功能,仅供娱乐。printf("║ 8.小游戏 ║\n");printf("╚═══════════════╝"); m=getch();hidden1();//显示光标if(m=='1'){win=0; system("CLS");jia();}if(m=='2'){ win=0;system("CLS");jianfa();}if(m=='3'){ win=0;system("CLS");cheng();}if(m=='4'){win=0;system("CLS");chu();}if(m=='5'){system("CLS");stu_set();}if(m=='6'){system("CLS");stu_help();}if(m=='7'){ system("start c:\\错题本.txt");//正常退出打开错题本return 0;}if(win==10 && m=='8'){system("CLS");menu();}}
}