📄 pip_fight.c
字号:
sprintf(buf,"对方普通攻击,生命力减低%d",minjure); pressanykey(buf); } break; case 2: if(rand()%11==10) { pressanykey("对方没打中..:~~~"); } else { if(m.hp>5) { if(dresistmore==0) minjure=(m.attack/5-d.resist/12+rand()%12+6-d.speed/30+m.speed/30-d.hskill/200-d.hexp/200); else minjure=(m.attack/5-d.resist/8+rand()%12+6-d.speed/30+m.speed/30-d.hskill/200-d.hexp/200); if(minjure<=15) minjure=20; d.hp-=minjure; m.hp-=5; sprintf(buf,"对方全力攻击, 生命力减低%d",minjure); d.tired+=rand()%4+4; pressanykey(buf); } else { if(dresistmore==0) minjure=(m.attack/9-d.resist/12+rand()%12+4-d.speed/30+m.speed/25-d.hexp/200-d.hskill/200); else minjure=(m.attack/9-d.resist/8+rand()%12+3-d.speed/30+m.speed/25-d.hexp/200-d.hskill/200); if(minjure<=0) minjure=4; d.hp-=minjure; d.tired+=rand()%3+2; sprintf(buf,"对方普通攻击,生命力减低%d",minjure); pressanykey(buf); } } break; case 3: if(rand()%5>0 && m.mp>20) { if(rand()%6>0 && m.mp>=50) { if(m.mp>=1000) { minjure=500; m.mp-=(500+rand()%300); if(rand()%2) sprintf(inbuf1,"热火魔"); else sprintf(inbuf1,"寒气鬼"); } else if(m.mp<1000 && m.mp>=500) { minjure=300; m.mp-=(300+rand()%200); if(rand()%2) sprintf(inbuf1,"狂水怪"); else sprintf(inbuf1,"怒土虫"); } else if(m.mp<500 && m.mp>=200) { minjure=100; m.mp-=(100+rand()%100); if(rand()%2) sprintf(inbuf1,"迷魂鬼差"); else sprintf(inbuf1,"石怪"); } else if(m.mp<200 && m.mp>=50) { minjure=50; m.mp-=50; if(rand()%2) sprintf(inbuf1,"鬼木魂"); else sprintf(inbuf1,"风妖"); } minjure=minjure-d.resist/50-d.mresist/10-d.mskill/200-d.mexp/200+rand()%10; if(minjure<0) minjure=15; d.hp-=minjure; d.mresist+=rand()%2+1; sprintf(buf,"对方招换了%s,你受伤了%d点",inbuf1,minjure); pressanykey(buf); } else { m.mp-=20; m.hp+=130+rand()%20; if(m.hp>m.maxhp) m.hp=m.maxhp; pressanykey("对方使用魔法治疗了自己..."); } } else { mresistmore=1; pressanykey("对方加强防御...."); } break; case 4: d.money+=(m.money+m.money/2)/3+rand()%10; d.hskill+=rand()%4+3; d.brave+=rand()%3+2; m.death=1; sprintf(buf,"对方先闪了..但掉了一些钱给你..."); pressanykey(buf); break; } } if(m.death==1) { clear(); showtitle("电子养小鸡", BoardName); if(mode==1) { move(10,0); prints(" [1;31m┌——————————————————————┐[m"); move(11,0); prints(" [1;31m│ [37m英勇的小鸡 [33m%-10s [31m│[m",d.name); move(12,0); prints(" [1;31m│ [37m打败了邪恶的怪物 [32m%-10s [31m│[m",p[n].name); } else { move(10,0); prints(" [1;31m┌——————————————————————┐[m"); move(11,0); prints(" [1;31m│ [37m武术大会的小鸡 [33m%-10s [31m│[m",d.name); move(12,0); prints(" [1;31m│ [37m打败了强劲的对手 [32m%-10s [31m│[m",p[n].name); } move(13,0); sprintf(inbuf1,"%d/%d",d.hexp-oldhexp,d.mexp-oldmexp); prints(" [1;31m│ [37m评价提升了 %-5s 点 技术增加了 %-2d/%-2d 点 [31m│[m",inbuf1,d.hskill-oldhskill,d.mskill-oldmskill); move(14,0); sprintf(inbuf1,"%d 元",d.money-oldmoney); prints(" [1;31m│ [37m勇敢提升了 %-5d 点 金钱增加了 %-9s [31m│[m",d.brave-oldbrave,inbuf1); move(15,0); prints(" [1;31m└——————————————————————┘[m"); if(m.hp<=0) pressanykey("对方死掉罗..所以你赢罗.."); else if(m.hp>0) pressanykey("对方落跑罗..所以算你赢罗....."); winorlose=1; } if(d.death==1 && mode==1) { clear(); showtitle("电子养小鸡", BoardName); move(10,0); prints(" [1;31m┌——————————————————————┐[m"); move(11,0); prints(" [1;31m│ [37m可怜的小鸡 [33m%-10s [31m│[m",d.name); move(12,0); prints(" [1;31m│ [37m在与 [32m%-10s [37m的战斗中, [31m│[m",p[n].name); move(13,0); prints(" [1;31m│ [37m不幸地阵亡了,在此特别默哀.......... [31m│[m"); move(14,0); prints(" [1;31m└——————————————————————┘[m"); pressanykey("小鸡阵亡了...."); pipdie("[1;31m战斗中被打死了...[m ",1); } else if(d.death==1 && mode==2) { clear(); showtitle("电子养小鸡", BoardName); move(10,0); prints(" [1;31m┌——————————————————————┐[m"); move(11,0); prints(" [1;31m│ [37m可怜的小鸡 [33m%-10s [31m│[m",d.name); move(12,0); prints(" [1;31m│ [37m在与 [32m%-10s [37m的战斗中, [31m│[m",p[n].name); move(13,0); prints(" [1;31m│ [37m不幸地打输了,记者现场特别报导......... [31m│[m"); move(14,0); prints(" [1;31m└——————————————————————┘[m"); pressanykey("小鸡打输了...."); } }while((pipkey!='6')&&(d.death!=1)&&(m.death!=1)&&(mankey!=8)); return winorlose; } /*---------------------------------------------------------------------------*//* 战斗魔法函式 *//* *//*---------------------------------------------------------------------------*//*进入使用魔法选单*/intpip_magic_menu() /*战斗中法术的应用*/{ char buf[256]; int magicnum=0; int injure; /*伤害力*/ int pipkey; do { move(b_lines, 0); clrtoeol(); move(b_lines,0); sprintf(buf, "[1;44;37m 魔法选单 [46m [1]治疗 [2]雷系 [3]冰系 [4]火系 [5]土系 [6]风系 [Q]放弃: [m"); move(b_lines,0); prints(buf); pipkey=egetch(); switch(pipkey) { case '1': /*治疗法术*/ d.magicmode=1; injure=pip_magic_doing_menu(treatmagiclist); break; case '2': /*雷系法术*/ d.magicmode=2; injure=pip_magic_doing_menu(thundermagiclist); break; case '3': /*冰系法术*/ d.magicmode=3; injure=pip_magic_doing_menu(icemagiclist); break; case '4': /*炎系法术*/ d.magicmode=4; injure=pip_magic_doing_menu(firemagiclist); show_fight_pic(341); pressanykey("小鸡使用了炎系法术"); break; case '5': /*土系法术*/ d.magicmode=5; injure=pip_magic_doing_menu(earthmagiclist); break; case '6': /*风系法术*/ d.magicmode=6; injure=pip_magic_doing_menu(windmagiclist); break;#ifdef MAPLE case Ctrl('R'): if (currutmp->msgs[0].last_pid) { extern screenline* big_picture; screenline* screen0 = calloc(t_lines, sizeof(screenline)); memcpy(screen0, big_picture, t_lines * sizeof(screenline)); show_last_call_in(); my_write(currutmp->msgs[0].last_pid, "水球丢回去:"); memcpy(big_picture, screen0, t_lines * sizeof(screenline)); free(screen0); redoscr(); } break;#endif // END MAPLE } }while((pipkey!='1')&&(pipkey!='2')&&(pipkey!='3')&&(pipkey!='4')&&(pipkey!='5')&&(pipkey!='6')&&(pipkey!='Q')&&(pipkey!='q')&&(d.nodone==0)); if((pipkey=='Q')||(pipkey=='q')) { d.nodone=1; } return injure; }/*魔法视窗*/intpip_magic_doing_menu(p) /*魔法画面*/struct magicset *p;{ register int n=1; register char *s; char buf[256]; char ans[5]; int pipkey; int injure=0; d.nodone=0; clrchyiuan(6,18); move(7,0); sprintf(buf,"[1;31m┤[37;41m 可用[%s]一览表 [0;1;31m├————————————[m",p[0].name); prints(buf); while ((s = p[n].name)&&strcmp(s,"NULL")&& (p[n].needmp<=d.mp)) { move(7+n,4); if(p[n].hpmode==1) { sprintf(buf, "[1;37m[[36m%d[37m] [33m%-10s [37m需要法力: [32m%-6d [37m恢复体力: [32m%-6d [37m恢复疲劳: [32m%-6d[m ",n,p[n].name,p[n].needmp,p[n].hp,p[n].tired); prints(buf); } else if(p[n].hpmode==2) { sprintf(buf, "[1;37m[[36m%d[37m] [33m%-10s [37m需要法力: [32m%-6d [37m恢复体力到[35m最大值[37m 恢复疲劳到[35m最小值[m ",n,p[n].name,p[n].needmp); prints(buf); } else if(p[n].hpmode==0) { sprintf(buf, "[1;37m[[36m%d[37m] [33m%-10s [37m需要法力: [32m%-6d [m ",n,p[n].name,p[n].needmp); prints(buf); } n++; } n-=1; do{ move(16,4); sprintf(buf,"你想使用那一个%8s呢? [Q]放弃:",p[0].name);#ifdef MAPLE getdata(16,4,buf, ans, 2, 1, 0);#else getdata(16,4,buf, ans, 2, DOECHO, YEA);#endif // END MAPLE if( ans[0]!='q' && ans[0]!='Q') { pipkey=atoi(ans); } }while( ans[0]!='q' && ans[0]!='Q' && (pipkey>n || pipkey <=0)); if(ans[0]!='q' && ans[0]!='Q') {#ifdef MAPLE getdata(17,4,"确定使用吗? [Y/n]", ans, 2, 1, 0);#else getdata(17,4,"确定使用吗? [Y/n]", ans, 2, DOECHO, YEA);#endif // END MAPLE if(ans[0]!='n' && ans[0]!='N') { if(p[pipkey].hpmode==1) { d.hp+=p[pipkey].hp; d.tired-=p[pipkey].tired; d.mp-=p[pipkey].needmp; if(d.hp>d.maxhp) d.hp=d.maxhp; if(d.tired<0) d.tired=0; injure=0; } else if(p[pipkey].hpmode==2) { d.hp=d.maxhp; d.mp-=p[pipkey].needmp; d.tired=0; injure=0; } else { injure=(p[pipkey].hp-rand()%5); d.mp-=p[pipkey].needmp; } d.mexp+=rand()%3+pipkey; } else { d.nodone=1; injure=0; } } else { d.nodone=1; injure=0; } return injure;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -