pip_fight.c
来自「bbs server linux平台下软件源码」· C语言 代码 · 共 994 行 · 第 1/3 页
C
994 行
do { if (m.hp <= 0) { /*敌人死掉了 */ m.hp = 0; d.money += m.money; m.death = 1; d.brave += rand() % 4 + 3; } if (d.hp <= 0 || d.tired >= 100) { /*小鸡阵亡 */ if (mode == 1) { d.hp = 0; d.tired = 0; d.death = 1; } else { d.hp = d.maxhp / 3 + 10; d.hexp -= rand() % 3 + 2; d.mexp -= rand() % 3 + 2; d.tired = 50; d.death = 1; } } clear(); /* * showtitle("电子养小鸡", BBS_FULL_NAME); */ move(0, 0); if (d.sex == 1) sprintf(buf, "[1;41m 星空战斗鸡 ~ [32m♂ [37m%-10s [0m", d.name); else if (d.sex == 2) sprintf(buf, "[1;41m 星空战斗鸡 ~ [33m♀ [37m%-10s [0m", d.name); else sprintf(buf, "[1;41m 星空战斗鸡 ~ [34m? [37m%-10s [0m", d.name); prints(buf); move(6, 0); if (mode == 1) show_badman_pic(n); move(1, 0); sprintf(buf, "[1;31m┌—————————————————————————————————————┐[m"); prints(buf); move(2, 0); /* * lucky拿来当color用 */ if (d.tired >= 80) lucky = 31; else if (d.tired >= 60 && d.tired < 80) lucky = 33; else lucky = 37; sprintf(inbuf1, "%d/%d", d.hp, d.maxhp); sprintf(inbuf2, "%d/%d", d.mp, d.maxmp); sprintf(buf, "[1;31m│[33m生 命:[37m%-12s[33m法 力:[37m%-12s[33m疲 劳:[%dm%-12d[33m金 钱:[37m%-10d[31m│[m", inbuf1, inbuf2, lucky, d.tired, d.money); prints(buf); move(3, 0); sprintf(inbuf1, "%d/%d", d.hexp, d.mexp); sprintf(buf, "[1;31m│[33m攻 击:[37m%-10d [33m防 御:[37m%-10d [33m速 度:[37m%-5d [33m经 验:[37m%-10s[31m│[m", d.attack, d.resist, d.speed, inbuf1); prints(buf); move(4, 0); sprintf(buf, "[1;31m│[33m食 物:[37m%-5d [33m大补丸:[37m%-5d [33m零 食:[37m%-5d [33m药 草:[37m%-5d [31m│[m", d.food, d.bighp, d.cookie, d.medicine); prints(buf); move(5, 0); sprintf(buf, "[1;31m└—————————————————————————————————————┘[m"); prints(buf); move(19, 0); sprintf(buf, "[1;34m┌—————————————————————————————————————┐[m"); prints(buf); move(20, 0); sprintf(inbuf1, "%d/%d", m.hp, m.maxhp); sprintf(inbuf2, "%d/%d", m.mp, m.maxmp); sprintf(buf, "[1;34m│[32m姓 名:[37m%-10s [32m生 命:[37m%-11s [32m法 力:[37m%-11s [34m│[m", p[n].name, inbuf1, inbuf2); prints(buf); move(21, 0); sprintf(buf, "[1;34m│[32m攻 击:[37m%-6d [32m防 御:[37m%-6d [32m速 度:[37m%-6d [32m金 钱:[37m%-6d [34m│[m", m.attack, m.resist, m.speed, m.money); prints(buf); move(22, 0); sprintf(buf, "[1;34m└—————————————————————————————————————┘[m"); prints(buf); move(b_lines, 0); sprintf(buf, "[1;44;37m 战斗命令 [46m [1]普通 [2]全力 [3]魔法 [4]防御 [5]补充 [6]逃命 [m"); prints(buf); if (m.death == 0 && d.death == 0) { dresistmore = 0; d.nodone = 0; pipkey = igetkey(); switch (pipkey) { case '1': if (rand() % 9 == 0) { pressanykey("竟然没打中..:~~~"); } else { if (mresistmore == 0) dinjure = (d.hskill / 100 + d.hexp / 100 + d.attack / 9 - m.resist / 12 + rand() % 12 + 2 - m.speed / 30 + d.speed / 30); else dinjure = (d.hskill / 100 + d.hexp / 100 + d.attack / 9 - m.resist / 8 + rand() % 12 + 2 - m.speed / 30 + d.speed / 30); if (dinjure <= 0) dinjure = 9; m.hp -= dinjure; d.hexp += rand() % 2 + 2; d.hskill += rand() % 2 + 1; sprintf(buf, "普通攻击,对方生命力减低%d", dinjure); pressanykey(buf); } d.tired += rand() % (n + 1) / 15 + 2; break; case '2': show_fight_pic(2); if (rand() % 11 == 0) { pressanykey("竟然没打中..:~~~"); } else { if (mresistmore == 0) dinjure = (d.hskill / 100 + d.hexp / 100 + d.attack / 5 - m.resist / 12 + rand() % 12 + 6 - m.speed / 50 + d.speed / 30); else dinjure = (d.hskill / 100 + d.hexp / 100 + d.attack / 5 - m.resist / 8 + rand() % 12 + 6 - m.speed / 40 + d.speed / 30); if (dinjure <= 15) dinjure = 20; if (d.hp > 5) { m.hp -= dinjure; d.hp -= 5; d.hexp += rand() % 3 + 3; d.hskill += rand() % 2 + 2; d.tired += rand() % (n + 1) / 10 + 3; sprintf(buf, "全力攻击,对方生命力减低%d", dinjure); pressanykey(buf); } else { d.nodone = 1; pressanykey("你的HP小於5啦..不行啦..."); } } break; case '3': oldtired = d.tired; oldhp = d.hp; d.magicmode = 0; dinjure = pip_magic_menu(); if (dinjure < 0) dinjure = 5; if (d.nodone == 0) { if (d.magicmode == 1) { oldtired = oldtired - d.tired; oldhp = d.hp - oldhp; sprintf(buf, "治疗后,生命力提高%d 疲劳降低%d", oldhp, oldtired); pressanykey(buf); } else { if (rand() % 15 == 0) pressanykey("竟然没打中..:~~~"); else { if (d.mexp <= 100) { if (rand() % 4 > 0) dinjure = dinjure * 60 / 100; else dinjure = dinjure * 80 / 100; } else if (d.mexp <= 250 && d.mexp > 100) { if (rand() % 4 > 0) dinjure = dinjure * 70 / 100; else dinjure = dinjure * 85 / 100; } else if (d.mexp <= 500 && d.mexp > 250) { if (rand() % 4 > 0) dinjure = dinjure * 85 / 100; else dinjure = dinjure * 95 / 100; } else if (d.mexp > 500) { if (rand() % 10 > 0) dinjure = dinjure * 90 / 100; else dinjure = dinjure * 99 / 100; } if ((p[n].special[d.magicmode - 2] - 48) == 1) { if (rand() % 2 > 0) { dinjure = dinjure * 125 / 100; } else { dinjure = dinjure * 110 / 100; } } else { if (rand() % 2 > 0) { dinjure = dinjure * 60 / 100; } else { dinjure = dinjure * 75 / 100; } } d.tired += rand() % (n + 1) / 12 + 2; m.hp -= dinjure; /* * d.mexp+=rand()%2+2; */ d.mskill += rand() % 2 + 2; sprintf(buf, "魔法攻击,对方生命力减低%d", dinjure); pressanykey(buf); } } } break; case '4': dresistmore = 1; d.tired += rand() % (n + 1) / 20 + 1; pressanykey("小鸡加强防御啦...."); break; case '5': pip_basic_feed(); break; case '6': d.money -= (rand() % 100 + 30); d.brave -= (rand() % 3 + 2); if (d.money < 0) d.money = 0; if (d.hskill < 0) d.hskill = 0; if (d.brave < 0) d.brave = 0; clear(); showtitle("电子养小鸡", BBS_FULL_NAME); 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); sprintf(inbuf1, "%d/%d", d.hexp - oldhexp, d.mexp - oldmexp); prints(" [1;31m│ [37m评价增加了 [36m%-5s [37m点 技术增加了 [36m%-2d/%-2d [37m点 [31m│[m", inbuf1, d.hskill - oldhskill, d.mskill - oldmskill); move(14, 0); sprintf(inbuf1, "%d [37m元", oldmoney - d.money); prints(" [1;31m│ [37m勇敢降低了 [36m%-5d [37m点 金钱减少了 [36m%-13s [31m│[m", oldbrave - d.brave, inbuf1); move(15, 0); prints(" [1;31m└——————————————————————┘[m"); pressanykey("三十六计 走为上策..."); winorlose = 0; break;#ifdef MAPLE case Ctrl('R'): if (currutmp->msgs[0].last_pid) { show_last_call_in(); my_write(currutmp->msgs[0].last_pid, "水球丢回去:"); } break;#endif // END MAPLE } } clear(); move(0, 0); if (d.sex == 1) sprintf(buf, "[1;41m 星空战斗鸡 ~ [32m♂ [37m%-10s [0m", d.name); else if (d.sex == 2) sprintf(buf, "[1;41m 星空战斗鸡 ~ [33m♀ [37m%-10s [0m", d.name); else sprintf(buf, "[1;41m 星空战斗鸡 ~ [34m? [37m%-10s [0m", d.name); prints(buf); move(1, 0); sprintf(buf, "[1;31m┌—————————————————————————————————————┐[m"); prints(buf); move(2, 0); /* * lucky拿来当color用 */ if (d.tired >= 80) lucky = 31; else if (d.tired >= 60 && d.tired < 80) lucky = 33; else lucky = 37; sprintf(inbuf1, "%d/%d", d.hp, d.maxhp); sprintf(inbuf2, "%d/%d", d.mp, d.maxmp); sprintf(buf, "[1;31m│[33m生 命:[37m%-12s[33m法 力:[37m%-12s[33m疲 劳:[%dm%-12d[33m金 钱:[37m%-10d[31m│[m", inbuf1, inbuf2, lucky, d.tired, d.money); prints(buf); move(3, 0); sprintf(inbuf1, "%d/%d", d.hexp, d.mexp); sprintf(buf, "[1;31m│[33m攻 击:[37m%-6d [33m防 御:[37m%-6d [33m速 度:[37m%-5d [33m经 验:[37m%-10s[31m│[m", d.attack, d.resist, d.speed, inbuf1); prints(buf); move(4, 0); sprintf(buf, "[1;31m│[33m食 物:[37m%-5d [33m大补丸:[37m%-5d [33m零 食:[37m%-5d [33m药 草:[37m%-5d [31m│[m", d.food, d.bighp, d.cookie, d.medicine); prints(buf); move(5, 0); sprintf(buf, "[1;31m└—————————————————————————————————————┘[m"); prints(buf); move(6, 0); if (mode == 1) show_badman_pic(n); move(19, 0); sprintf(buf, "[1;34m┌—————————————————————————————————————┐[m"); prints(buf); move(20, 0); sprintf(inbuf1, "%d/%d", m.hp, m.maxhp); sprintf(inbuf2, "%d/%d", m.mp, m.maxmp); sprintf(buf, "[1;34m│[32m姓 名:[37m%-10s [32m生 命:[37m%-11s [32m法 力:[37m%-11s [34m│[m", p[n].name, inbuf1, inbuf2); prints(buf); move(21, 0); sprintf(buf, "[1;34m│[32m攻 击:[37m%-6d [32m防 御:[37m%-6d [32m速 度:[37m%-6d [32m金 钱:[37m%-6d [34m│[m", m.attack, m.resist, m.speed, m.money); prints(buf); move(22, 0); sprintf(buf, "[1;34m└—————————————————————————————————————┘[m"); prints(buf); move(b_lines, 0); sprintf(buf, "[1;41;37m [37m攻击命令 [47m [31m[1][30m普通 [31m[2][30m全力 [31m[3][30m魔法 [31m[4][30m防御 [31m[5][30m逃命 [m"); prints(buf); if ((m.hp > 0) && (pipkey != '6') && (pipkey == '1' || pipkey == '2' || pipkey == '3' || pipkey == '4' || pipkey == '5') && (d.death == 0) && (d.nodone == 0)) { mresistmore = 0; lucky = rand() % 100; if (lucky >= 0 && lucky <= 50) mankey = 1; else if (lucky >= 51 && lucky <= 84) mankey = 2; else if (lucky >= 85 && lucky <= 97) mankey = 3; else if (lucky >= 98) mankey = 4; switch (mankey) { case 1: if (rand() % 6 == 5) { pressanykey("对方没打中..:~~~"); } else { if (dresistmore == 0) minjure = (m.attack / 9 - d.resist / 12 + rand() % 15 + 4 - d.speed / 30 + m.speed / 30 - d.hskill / 200 - d.hexp / 200); else minjure = (m.attack / 9 - d.resist / 8 + rand() % 12 + 4 - d.speed / 50 + m.speed / 20 - d.hskill / 200 - d.hexp / 200); if (minjure <= 0) minjure = 8; d.hp -= minjure; d.tired += rand() % 3 + 2; sprintf(buf, "对方普通攻击,生命力减低%d", minjure); pressanykey(buf); } break;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?