⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pip_fight.c

📁 one bbs source code
💻 C
📖 第 1 页 / 共 3 页
字号:
        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("            ┌——————————————————————┐");       move(11,0);       prints("            │  英勇的小鸡 %-10s                     │",d.name);       move(12,0);       prints("            │  打败了邪恶的怪物 %-10s               │",p[n].name);     }       else     {       move(10,0);       prints("            ┌——————————————————————┐");       move(11,0);       prints("            │  武术大会的小鸡 %-10s                 │",d.name);       move(12,0);       prints("            │  打败了强劲的对手 %-10s               │",p[n].name);     }     move(13,0);     sprintf(inbuf1,"%d/%d",d.hexp-oldhexp,d.mexp-oldmexp);       prints("            │  评价提升了 %-5s 点  技术增加了 %-2d/%-2d 点  │",inbuf1,d.hskill-oldhskill,d.mskill-oldmskill);     move(14,0);     sprintf(inbuf1,"%d 元",d.money-oldmoney);     prints("            │  勇敢提升了 %-5d 点  金钱增加了 %-9s │",d.brave-oldbrave,inbuf1);     move(15,0);     prints("            └——————————————————————┘");               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("            ┌——————————————————————┐");       move(11,0);       prints("            │  可怜的小鸡 %-10s                     │",d.name);       move(12,0);       prints("            │  在与 %-10s 的战斗中,                │",p[n].name);       move(13,0);       prints("            │  不幸地阵亡了,在此特别默哀..........      │");       move(14,0);       prints("            └——————————————————————┘");               pressanykey("小鸡阵亡了....");             pipdie("战斗中被打死了...  ",1);          }   else if(d.death==1 && mode==2)   {       clear();       showtitle("电子养小鸡", BoardName);              move(10,0);       prints("            ┌——————————————————————┐");       move(11,0);       prints("            │  可怜的小鸡 %-10s                     │",d.name);       move(12,0);       prints("            │  在与 %-10s 的战斗中,                │",p[n].name);       move(13,0);       prints("            │  不幸地打输了,记者现场特别报导.........   │");       move(14,0);       prints("            └——————————————————————┘");               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]治疗 [2]雷系 [3]冰系 [4]火系 [5]土系 [6]风系 [Q]放弃: ");   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,"┤   可用[%s]一览表   ├————————————",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,      "[%d] %-10s  需要法力: %-6d  恢复体力: %-6d 恢复疲劳: %-6d   ",n,p[n].name,p[n].needmp,p[n].hp,p[n].tired);      prints(buf);  }  else if(p[n].hpmode==2)  {      sprintf(buf,      "[%d] %-10s  需要法力: %-6d  恢复体力到最大值 恢复疲劳到最小值  ",n,p[n].name,p[n].needmp);      prints(buf);  }    else if(p[n].hpmode==0)  {      sprintf(buf,      "[%d] %-10s  需要法力: %-6d              ",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 + -