C语言模拟回合制游戏 源码
生活随笔
收集整理的這篇文章主要介紹了
C语言模拟回合制游戏 源码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
| 源碼下載地址: http://download.csdn.net/detail/monkey_uan/5115921 剛學C的作品,略帶稚氣,僅供參考學習,版權所有。 #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();}} } |
總結
以上是生活随笔為你收集整理的C语言模拟回合制游戏 源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么医疗行业需要完整的API管理系统?
- 下一篇: 白痴的午夜记叙