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, "  星空战斗鸡 ~ ♂ %-10s                                                  ", d.name);        else if (d.sex == 2)            sprintf(buf, "  星空战斗鸡 ~ ♀ %-10s                                                  ", d.name);        else            sprintf(buf, "  星空战斗鸡 ~ ? %-10s                                                  ", d.name);        prints(buf);        move(6, 0);        if (mode == 1)            show_badman_pic(n);        move(1, 0);        sprintf(buf, "┌—————————————————————————————————————┐");        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, "│生  命:%-12s法  力:%-12s疲  劳:[%dm%-12d金  钱:%-10d│", inbuf1, inbuf2, lucky, d.tired, d.money);        prints(buf);        move(3, 0);        sprintf(inbuf1, "%d/%d", d.hexp, d.mexp);        sprintf(buf, "│攻  击:%-10d  防  御:%-10d  速  度:%-5d       经  验:%-10s│", d.attack, d.resist, d.speed, inbuf1);        prints(buf);        move(4, 0);        sprintf(buf, "│食  物:%-5d       大补丸:%-5d       零  食:%-5d       药  草:%-5d     │", d.food, d.bighp, d.cookie, d.medicine);        prints(buf);        move(5, 0);        sprintf(buf, "└—————————————————————————————————————┘");        prints(buf);        move(19, 0);        sprintf(buf, "┌—————————————————————————————————————┐");        prints(buf);        move(20, 0);        sprintf(inbuf1, "%d/%d", m.hp, m.maxhp);        sprintf(inbuf2, "%d/%d", m.mp, m.maxmp);        sprintf(buf, "│姓  名:%-10s  生  命:%-11s 法  力:%-11s                  │", p[n].name, inbuf1, inbuf2);        prints(buf);        move(21, 0);        sprintf(buf, "│攻  击:%-6d      防  御:%-6d      速  度:%-6d      金  钱:%-6d    │", m.attack, m.resist, m.speed, m.money);        prints(buf);        move(22, 0);        sprintf(buf, "└—————————————————————————————————————┘");        prints(buf);        move(b_lines, 0);        sprintf(buf, "  战斗命令    [1]普通  [2]全力  [3]魔法  [4]防御  [5]补充  [6]逃命         ");        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("            ┌——————————————————————┐");                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 元", oldmoney - d.money);                prints("            │  勇敢降低了 %-5d 点  金钱减少了 %-13s  │", oldbrave - d.brave, inbuf1);                move(15, 0);                prints("            └——————————————————————┘");                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, "  星空战斗鸡 ~ ♂ %-10s                                                  ", d.name);        else if (d.sex == 2)            sprintf(buf, "  星空战斗鸡 ~ ♀ %-10s                                                  ", d.name);        else            sprintf(buf, "  星空战斗鸡 ~ ? %-10s                                                  ", d.name);        prints(buf);        move(1, 0);        sprintf(buf, "┌—————————————————————————————————————┐");        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, "│生  命:%-12s法  力:%-12s疲  劳:[%dm%-12d金  钱:%-10d│", inbuf1, inbuf2, lucky, d.tired, d.money);        prints(buf);        move(3, 0);        sprintf(inbuf1, "%d/%d", d.hexp, d.mexp);        sprintf(buf, "│攻  击:%-6d      防  御:%-6d      速  度:%-5d       经  验:%-10s│", d.attack, d.resist, d.speed, inbuf1);        prints(buf);        move(4, 0);        sprintf(buf, "│食  物:%-5d       大补丸:%-5d       零  食:%-5d       药  草:%-5d     │", d.food, d.bighp, d.cookie, d.medicine);        prints(buf);        move(5, 0);        sprintf(buf, "└—————————————————————————————————————┘");        prints(buf);        move(6, 0);        if (mode == 1)            show_badman_pic(n);        move(19, 0);        sprintf(buf, "┌—————————————————————————————————————┐");        prints(buf);        move(20, 0);        sprintf(inbuf1, "%d/%d", m.hp, m.maxhp);        sprintf(inbuf2, "%d/%d", m.mp, m.maxmp);        sprintf(buf, "│姓  名:%-10s  生  命:%-11s 法  力:%-11s                  │", p[n].name, inbuf1, inbuf2);        prints(buf);        move(21, 0);        sprintf(buf, "│攻  击:%-6d      防  御:%-6d      速  度:%-6d      金  钱:%-6d    │", m.attack, m.resist, m.speed, m.money);        prints(buf);        move(22, 0);        sprintf(buf, "└—————————————————————————————————————┘");        prints(buf);        move(b_lines, 0);        sprintf(buf, "  攻击命令    [1]普通  [2]全力  [3]魔法  [4]防御  [5]逃命                     ");        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 + -
显示快捷键?