萌新刚学模拟玄关求条
查看原帖
萌新刚学模拟玄关求条
1036180
ChampionCyan楼主2024/7/26 15:01

样例不过555。

#include <bits/stdc++.h>
#define auto list<char>::iterator
using namespace std;
int n, m;
int cnt_fp;

/*
基本牌:
    桃:P
    杀:K
    闪:D
锦囊牌:
    决斗:F
    南猪入侵:N
    万箭齐发:W
    无懈可击:J
装备牌:
    猪哥连弩:Z
*/

struct Pig {
    string type;
    /*
    猪种
    主猪:MP
    忠猪:ZP
    反猪:FP
    */
    list<char> cards;//手中卡牌
    bool show_type;//是否跳了身份
    bool dead;//是否死亡
    bool like_bad;//是否是类反猪
    bool armed;//是否装备猪哥连弩
    int hp;//血量
} pigs[11];

list<char> cards_heap;//全局卡牌

/*<============下面是一堆令人毛骨悚然的函数……================>*/
inline void init();
inline bool game_over();
inline void print();
inline void stage1();
inline void stage2();
inline void mp(int);
inline void zp(int);
inline void fp(int);
inline void eat_peach(int id);
inline bool tips(char, int, int);

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    init();
    while (true) {
        stage1();
        stage2();
    }
    return 0;
}

inline void init() {
    cin >> n >> m;
    for (int i = 1; i <= n; i++) {
        cin >> pigs[i].type;
        if (pigs[i].type == "FP")
            cnt_fp++;
        pigs[i].cards.clear();
        pigs[i].show_type = false;
        pigs[i].dead = false;
        pigs[i].like_bad = false;
        pigs[i].armed = false;
        pigs[i].hp = 4;
        for (int j = 0; j < 4; j++) {
            char card;
            cin >> card;
            pigs[i].cards.push_back(card);
        }
    }
    for (int i = 1; i <= m; i++) {
        char card;
        cin >> card;
        cards_heap.push_back(card);
    }
}

inline bool game_over() {
    return pigs[1].dead || cnt_fp == 0;
}

inline void print() {
    if (cnt_fp)
        cout << "FP" << endl;
    else
        cout << "MP" << endl;
    for (int i = 1; i <= n; i++) {
        if (pigs[i].dead)
            cout << "DEAD" << endl;
        while (!pigs[i].cards.empty()) {
            cout << pigs[i].cards.front();
            pigs[i].cards.pop_front();
        }
    }
    exit(0);
}

inline void stage1() {
    for (int i = 1; i <= n; i++)
        if (!pigs[i].dead)//死猪不用摸牌!!!
            for (int j = 1; j <= 2; j++) {
                char card = cards_heap.front();
                if (cards_heap.size() > 1)
                    cards_heap.pop_front();
                if (card == 'Z')
                    pigs[i].armed = true;
                else
                    pigs[i].cards.push_back(card);
            }
}

inline void stage2() {
    for (int i = 1; i <= n; i++) {
        if (pigs[i].dead)//猪都死了还费啥劲
            continue;
        if (pigs[i].type == "MP")
            mp(i);
        else if (pigs[i].type == "ZP")
            zp(i);
        else
            fp(i);
    }
}

inline void mp(int id) {
    auto card = pigs[id].cards.begin();
    bool used_kill = false;
    pigs[id].show_type = true;
    while (card != pigs[id].cards.end()) {
        if (pigs[id].dead)//死了,送葬吧
            print();
        if (*card == 'P')//吃桃
            if (pigs[id].hp != 4) {
                pigs[id].hp++;
                auto peach = card;
                card++;
                pigs[id].cards.erase(peach);
            }
        else if (*card == 'K') {//杀!
            if (used_kill && !pigs[id].armed)//不能再杀了
                continue;
            used_kill = true;
            int k = id + 1;
            while (pigs[k].dead) {//找可以攻击的目标
                k++;
                if (k > n)
                    k = 1;
            }
            if ((pigs[k].show_type && pigs[k].type == "FP") || pigs[k].like_bad) {//有问题
                bool flag = true;
                auto kc = pigs[k].cards.begin();
                while (kc != pigs[k].cards.end()) {//能闪吗
                    if (*kc == 'D') {
                        flag = false;
                        pigs[k].cards.erase(kc);
                        break;
                    }
                    kc++;
                }
                if (flag) {//不能闪
                    pigs[k].hp--;//扣血
                    if (pigs[k].hp <= 0) {
                        eat_peach(k);//吃桃补充体力!!!
                        if (pigs[k].hp <= 0) {
                            pigs[k].dead = true;//死啦
                            if (pigs[k].type == "FP") {
                                cnt_fp--;
                                if (game_over())
                                    print();
                                for (int i = 1; i <= 3; i++) {//摸三张牌!
                                    char mc = cards_heap.front();
                                    if (mc == 'Z')//有猪哥连弩辣!前面的Kill能用了!
                                        pigs[id].armed = true, card = pigs[id].cards.begin();
                                    else//不是猪哥连弩
                                        pigs[id].cards.push_back(mc);
                                    cards_heap.pop_front();
                                }
                            } else//卧活,丢牌吧
                                pigs[id].cards.clear(), pigs[id].armed = false;
                        }
                    }
                }
            }
        } else if (*card == 'F') {//Fight!
            int k = id + 1;
            while (pigs[k].dead || 
            (pigs[id].show_type && pigs[id].type == "ZP") || 
            !pigs[id].like_bad) {//找第一个可以表敌意的目标
                k++;
                if (k > n)
                    k = 1;
            }
            if (tips('F', id, k)) {
                auto tc = pigs[k].cards.begin();
                auto fc = pigs[id].cards.begin();
                bool win_or_lose;
                if (pigs[k].type != "ZP")
                    while (true) {
                        while (*tc != 'K' && tc != pigs[k].cards.end())
                            tc++;
                        if (tc == pigs[k].cards.end()) {//决斗胜利
                            win_or_lose = true;
                            break;
                        }
                        while (*fc != 'K' && fc != pigs[id].cards.end())
                            fc++;
                        if (fc == pigs[id].cards.end()) {//决斗失败
                            win_or_lose = false;
                            break;
                        }
                    }
                else
                    win_or_lose = true;
                if (win_or_lose) {//决斗胜利!!!
                    pigs[k].hp--;//扣血
                    if (pigs[k].hp <= 0) {
                        eat_peach(k);//吃桃补充体力!!!
                        if (pigs[k].hp <= 0) {
                            pigs[k].dead = true;//死啦
                            if (pigs[k].type == "FP") {
                                cnt_fp--;
                                if (game_over())
                                    print();
                                for (int i = 1; i <= 3; i++) {//摸三张牌!
                                    char mc = cards_heap.front();
                                    if (mc == 'Z')//有猪哥连弩辣!前面的Kill能用了!
                                        pigs[id].armed = true, card = pigs[id].cards.begin();
                                    else//不是猪哥连弩
                                        pigs[id].cards.push_back(mc);
                                    cards_heap.pop_front();
                                }
                            } else//卧活,丢牌吧
                                pigs[id].cards.clear(), pigs[id].armed = false;
                        }
                    } else {
                        pigs[id].hp--;//我方扣血
                        card = pigs[id].cards.begin();//赶紧吃前面的桃子
                        if (pigs[id].hp <= 0) {
                            eat_peach(k);//吃桃补充体力!!!
                            if (pigs[id].hp <= 0)//完辣!主猪驾崩辣!!!
                                pigs[id].dead = true, print();
                        }
                    }
                }
            }
        } else if (*card == 'N') {
            int k = id + 1;
            if (k > n)
                k = 1;
            while (k != id) {
                if (pigs[k].dead) {//死猪别管
                    k++;
                    if (k > n)
                        k = 1;
                    continue;
                }
                if (tips('N', id, k)) {
                    auto kc = pigs[k].cards.begin();
                    bool flag = false;
                    while (kc != pigs[k].cards.end()) {
                        if (*kc == 'K') {
                            flag = true;
                            break;
                        }
                    }
                    if (flag)//有杀
                        pigs[k].cards.erase(kc);
                    else {//没杀
                        pigs[k].hp--;//扣血
                        if (pigs[k].hp <= 0) {
                            eat_peach(k);//吃桃补充体力!!!
                            if (pigs[k].hp <= 0) {
                                pigs[k].dead = true;//死啦
                                if (pigs[k].type == "FP") {
                                    cnt_fp--;
                                    if (game_over())
                                        print();
                                    for (int i = 1; i <= 3; i++) {//摸三张牌!
                                        char mc = cards_heap.front();
                                        if (mc == 'Z')//有猪哥连弩辣!前面的Kill能用了!
                                            pigs[id].armed = true, card = pigs[id].cards.begin();
                                        else//不是猪哥连弩
                                            pigs[id].cards.push_back(mc);
                                        cards_heap.pop_front();
                                    }
                                } else//卧活,丢牌吧
                                    pigs[id].cards.clear(), pigs[id].armed = false;
                            }
                        }
                    }
                }
            }
        } else if (*card == 'W') {
            int k = id + 1;
            if (k > n)
                k = 1;
            while (k != id) {
                if (pigs[k].dead) {//死猪别管
                    k++;
                    if (k > n)
                        k = 1;
                    continue;
                }
                if (tips('N', id, k)) {
                    auto kc = pigs[k].cards.begin();
                    bool flag = false;
                    while (kc != pigs[k].cards.end()) {
                        if (*kc == 'D') {
                            flag = true;
                            break;
                        }
                    }
                    if (flag)//有闪
                        pigs[k].cards.erase(kc);
                    else {//没闪
                        pigs[k].hp--;//扣血
                        if (pigs[k].hp <= 0) {
                            eat_peach(k);//吃桃补充体力!!!
                            if (pigs[k].hp <= 0) {
                                pigs[k].dead = true;//死啦
                                if (pigs[k].type == "FP") {
                                    cnt_fp--;
                                    if (game_over())
                                        print();
                                    for (int i = 1; i <= 3; i++) {//摸三张牌!
                                        char mc = cards_heap.front();
                                        if (mc == 'Z')//有猪哥连弩辣!前面的Kill能用了!
                                            pigs[id].armed = true, card = pigs[id].cards.begin();
                                        else//不是猪哥连弩
                                            pigs[id].cards.push_back(mc);
                                        cards_heap.pop_front();
                                    }
                                } else//卧活,丢牌吧
                                    pigs[id].cards.clear(), pigs[id].armed = false;
                            }
                        }
                    }
                }
            }
        }
        auto na = card;
        card++;
        pigs[id].cards.erase(na);
    }
}

inline void zp(int id) {
    auto card = pigs[id].cards.begin();
    bool used_kill = false;
    while (card != pigs[id].cards.end()) {
        if (pigs[id].dead)//死了,送葬吧
            print();
        if (*card == 'P')//吃桃
            if (pigs[id].hp != 4) {
                pigs[id].hp++;
                auto peach = card;
                card++;
                pigs[id].cards.erase(peach);
            }
        else if (*card == 'K') {//杀!
            if (used_kill && !pigs[id].armed)//不能再杀了
                continue;
            used_kill = true;
            int k = id + 1;
            while (pigs[k].dead) {//找可以攻击的目标
                k++;
                if (k > n)
                    k = 1;
            }
            if (pigs[k].show_type && (pigs[k].type == "ZP" || pigs[k].type == "MP")) {//有问题
                pigs[id].show_type = true;
                bool flag = true;
                auto kc = pigs[k].cards.begin();
                while (kc != pigs[k].cards.end()) {//能闪吗
                    if (*kc == 'D') {
                        flag = false;
                        pigs[k].cards.erase(kc);
                        break;
                    }
                    kc++;
                }
                if (flag) {//不能闪
                    pigs[k].hp--;//扣血
                    if (pigs[k].hp <= 0) {
                        eat_peach(k);//吃桃补充体力!!!
                        if (pigs[k].hp <= 0) {
                            pigs[k].dead = true;//死啦
                            cnt_fp--;
                            if (game_over())
                                print();
                            for (int i = 1; i <= 3; i++) {//摸三张牌!
                                char mc = cards_heap.front();
                                if (mc == 'Z')//有猪哥连弩辣!前面的Kill能用了!
                                    pigs[id].armed = true, card = pigs[id].cards.begin();
                                else//不是猪哥连弩
                                    pigs[id].cards.push_back(mc);
                                cards_heap.pop_front();
                            }
                        }
                    }
                }
            }
        } else if (*card == 'F') {//Fight!
            int k = id + 1;
            while (pigs[k].dead || pigs[id].show_type && pigs[id].type == "ZP") {//找第一个可以表敌意的目标
                k++;
                if (k > n)
                    k = 1;
            }
            if (tips('F', id, k)) {
                pigs[id].show_type = true;
                auto tc = pigs[k].cards.begin();
                auto fc = pigs[id].cards.begin();
                bool win_or_lose;
                if (pigs[k].type != "MP")
                    while (true) {
                        while (*tc != 'K' && tc != pigs[k].cards.end())
                            tc++;
                        if (tc == pigs[k].cards.end()) {//决斗胜利
                            win_or_lose = true;
                            break;
                        }
                        while (*fc != 'K' && fc != pigs[id].cards.end())
                            fc++;
                        if (fc == pigs[id].cards.end()) {//决斗失败
                            win_or_lose = false;
                            break;
                        }
                    }
                else
                    win_or_lose = false;
                if (win_or_lose) {//决斗胜利!!!
                    pigs[k].hp--;//扣血
                    if (pigs[k].hp <= 0) {
                        eat_peach(k);//吃桃补充体力!!!
                        if (pigs[k].hp <= 0) {
                            pigs[k].dead = true;//死啦
                            cnt_fp--;
                            if (game_over())
                                print();
                            for (int i = 1; i <= 3; i++) {//摸三张牌!
                                char mc = cards_heap.front();
                                if (mc == 'Z')//有猪哥连弩辣!前面的Kill能用了!
                                    pigs[id].armed = true, card = pigs[id].cards.begin();
                                else//不是猪哥连弩
                                    pigs[id].cards.push_back(mc);
                                cards_heap.pop_front();
                            }
                        }
                    } else {
                        pigs[id].hp--;//我方扣血
                        card = pigs[id].cards.begin();//赶紧吃前面的桃子
                        if (pigs[id].hp <= 0) {
                            eat_peach(k);//吃桃补充体力!!!
                            if (pigs[id].hp <= 0) {//忠猪死辣!!!
                                pigs[id].dead = true;
                                return;
                            }
                        }
                    }
                }
            }
        } else if (*card == 'N') {
            int k = id + 1;
            if (k > n)
                k = 1;
            while (k != id) {
                if (pigs[k].dead) {//死猪别管
                    k++;
                    if (k > n)
                        k = 1;
                    continue;
                }
                if (tips('N', id, k)) {
                    auto kc = pigs[k].cards.begin();
                    bool flag = false;
                    while (kc != pigs[k].cards.end()) {
                        if (*kc == 'K') {
                            flag = true;
                            break;
                        }
                    }
                    if (flag)//有杀
                        pigs[k].cards.erase(kc);
                    else {//没杀
                        pigs[k].hp--;//扣血
                        if (pigs[k].type == "MP")
                            pigs[k].like_bad = true;
                        if (pigs[k].hp <= 0) {
                            eat_peach(k);//吃桃补充体力!!!
                            if (pigs[k].hp <= 0) {
                                pigs[k].dead = true;//死啦
                                cnt_fp--;
                                if (game_over())
                                    print();
                                for (int i = 1; i <= 3; i++) {//摸三张牌!
                                    char mc = cards_heap.front();
                                    if (mc == 'Z')//有猪哥连弩辣!前面的Kill能用了!
                                        pigs[id].armed = true, card = pigs[id].cards.begin();
                                    else//不是猪哥连弩
                                        pigs[id].cards.push_back(mc);
                                    cards_heap.pop_front();
                                }
                            }
                        }
                    }
                }
            }
        } else if (*card == 'W') {
            int k = id + 1;
            if (k > n)
                k = 1;
            while (k != id) {
                if (pigs[k].dead) {//死猪别管
                    k++;
                    if (k > n)
                        k = 1;
                    continue;
                }
                if (tips('N', id, k)) {
                    auto kc = pigs[k].cards.begin();
                    bool flag = false;
                    while (kc != pigs[k].cards.end()) {
                        if (*kc == 'D') {
                            flag = true;
                            break;
                        }
                    }
                    if (flag)//有闪
                        pigs[k].cards.erase(kc);
                    else {//没闪
                        if (pigs[k].type == "MP")
                            pigs[k].like_bad = true;
                        pigs[k].hp--;//扣血
                        if (pigs[k].hp <= 0) {
                            eat_peach(k);//吃桃补充体力!!!
                            if (pigs[k].hp <= 0) {
                                pigs[k].dead = true;//死啦
                                cnt_fp--;
                                if (game_over())
                                    print();
                                for (int i = 1; i <= 3; i++) {//摸三张牌!
                                    char mc = cards_heap.front();
                                    if (mc == 'Z')//有猪哥连弩辣!前面的Kill能用了!
                                        pigs[id].armed = true, card = pigs[id].cards.begin();
                                    else//不是猪哥连弩
                                        pigs[id].cards.push_back(mc);
                                    cards_heap.pop_front();
                                }
                            }
                        }
                    }
                }
            }
        }
        auto na = card;
        card++;
        pigs[id].cards.erase(na);
    }
}

inline void fp(int id) {
    auto card = pigs[id].cards.begin();
    bool used_kill = false;
    while (card != pigs[id].cards.end()) {
        if (pigs[id].dead)//死了,送葬吧
            print();
        if (*card == 'P')//吃桃
            if (pigs[id].hp != 4) {
                pigs[id].hp++;
                auto peach = card;
                card++;
                pigs[id].cards.erase(peach);
            }
        else if (*card == 'K') {//杀!
            if (used_kill && !pigs[id].armed)//不能再杀了
                continue;
            used_kill = true;
            int k = id + 1;
            while (pigs[k].dead) {//找可以攻击的目标
                k++;
                if (k > n)
                    k = 1;
            }
            if (pigs[k].show_type && (pigs[k].type == "ZP" || pigs[k].type == "MP")) {//有问题
                pigs[id].show_type = true;
                bool flag = true;
                auto kc = pigs[k].cards.begin();
                while (kc != pigs[k].cards.end()) {//能闪吗
                    if (*kc == 'D') {
                        flag = false;
                        pigs[k].cards.erase(kc);
                        break;
                    }
                    kc++;
                }
                if (flag) {//不能闪
                    pigs[k].hp--;//扣血
                    if (pigs[k].hp <= 0) {
                        eat_peach(k);//吃桃补充体力!!!
                        if (pigs[k].hp <= 0) {
                            pigs[k].dead = true;//死啦
                            cnt_fp--;
                            if (game_over())
                                print();
                            for (int i = 1; i <= 3; i++) {//摸三张牌!
                                char mc = cards_heap.front();
                                if (mc == 'Z')//有猪哥连弩辣!前面的Kill能用了!
                                    pigs[id].armed = true, card = pigs[id].cards.begin();
                                else//不是猪哥连弩
                                    pigs[id].cards.push_back(mc);
                                cards_heap.pop_front();
                            }
                        }
                    }
                }
            }
        } else if (*card == 'F') {//Fight!
            int k = 1;
            if (tips('F', id, k)) {
                pigs[id].show_type = true;
                auto tc = pigs[k].cards.begin();
                auto fc = pigs[id].cards.begin();
                bool win_or_lose;
                while (true) {
                    while (*tc != 'K' && tc != pigs[k].cards.end())
                        tc++;
                    if (tc == pigs[k].cards.end()) {//决斗胜利
                        win_or_lose = true;
                        break;
                    }
                    while (*fc != 'K' && fc != pigs[id].cards.end())
                        fc++;
                    if (fc == pigs[id].cards.end()) {//决斗失败
                        win_or_lose = false;
                        break;
                    }
                }
                if (win_or_lose) {//决斗胜利!!!
                    pigs[k].hp--;//扣血
                    if (pigs[k].hp <= 0) {
                        eat_peach(k);//吃桃补充体力!!!
                        if (pigs[k].hp <= 0) {
                            pigs[k].dead = true;//死啦
                            cnt_fp--;
                            if (game_over())
                                print();
                            for (int i = 1; i <= 3; i++) {//摸三张牌!
                                char mc = cards_heap.front();
                                if (mc == 'Z')//有猪哥连弩辣!前面的Kill能用了!
                                    pigs[id].armed = true, card = pigs[id].cards.begin();
                                else//不是猪哥连弩
                                    pigs[id].cards.push_back(mc);
                                cards_heap.pop_front();
                            }
                        }
                    } else {
                        pigs[id].hp--;//我方扣血
                        card = pigs[id].cards.begin();//赶紧吃前面的桃子
                        if (pigs[id].hp <= 0) {
                            eat_peach(k);//吃桃补充体力!!!
                            if (pigs[id].hp <= 0) {//反猪死辣!!!
                                pigs[id].dead = true;
                                if (game_over())
                                    print();
                                return;
                            }
                        }
                    }
                }
            }
        } else if (*card == 'N') {
            int k = id + 1;
            if (k > n)
                k = 1;
            while (k != id) {
                if (pigs[k].dead) {//死猪别管
                    k++;
                    if (k > n)
                        k = 1;
                    continue;
                }
                if (tips('N', id, k)) {
                    auto kc = pigs[k].cards.begin();
                    bool flag = false;
                    while (kc != pigs[k].cards.end()) {
                        if (*kc == 'K') {
                            flag = true;
                            break;
                        }
                    }
                    if (flag)//有杀
                        pigs[k].cards.erase(kc);
                    else {//没杀
                        pigs[k].hp--;//扣血
                        if (pigs[k].type == "MP")
                            pigs[k].like_bad = true;
                        if (pigs[k].hp <= 0) {
                            eat_peach(k);//吃桃补充体力!!!
                            if (pigs[k].hp <= 0) {
                                pigs[k].dead = true;//死啦
                                cnt_fp--;
                                if (game_over())
                                    print();
                                for (int i = 1; i <= 3; i++) {//摸三张牌!
                                    char mc = cards_heap.front();
                                    if (mc == 'Z')//有猪哥连弩辣!前面的Kill能用了!
                                        pigs[id].armed = true, card = pigs[id].cards.begin();
                                    else//不是猪哥连弩
                                        pigs[id].cards.push_back(mc);
                                    cards_heap.pop_front();
                                }
                            }
                        }
                    }
                }
            }
        } else if (*card == 'W') {
            int k = id + 1;
            if (k > n)
                k = 1;
            while (k != id) {
                if (pigs[k].dead) {//死猪别管
                    k++;
                    if (k > n)
                        k = 1;
                    continue;
                }
                if (tips('N', id, k)) {
                    auto kc = pigs[k].cards.begin();
                    bool flag = false;
                    while (kc != pigs[k].cards.end()) {
                        if (*kc == 'D') {
                            flag = true;
                            break;
                        }
                    }
                    if (flag)//有闪
                        pigs[k].cards.erase(kc);
                    else {//没闪
                        if (pigs[k].type == "MP")
                            pigs[k].like_bad = true;
                        pigs[k].hp--;//扣血
                        if (pigs[k].hp <= 0) {
                            eat_peach(k);//吃桃补充体力!!!
                            if (pigs[k].hp <= 0) {
                                pigs[k].dead = true;//死啦
                                cnt_fp--;
                                if (game_over())
                                    print();
                                for (int i = 1; i <= 3; i++) {//摸三张牌!
                                    char mc = cards_heap.front();
                                    if (mc == 'Z')//有猪哥连弩辣!前面的Kill能用了!
                                        pigs[id].armed = true, card = pigs[id].cards.begin();
                                    else//不是猪哥连弩
                                        pigs[id].cards.push_back(mc);
                                    cards_heap.pop_front();
                                }
                            }
                        }
                    }
                }
            }
        }
        auto na = card;
        card++;
        pigs[id].cards.erase(na);
    }
}

inline void eat_peach(int id) {
    auto card = pigs[id].cards.begin();
    while (card != pigs[id].cards.end())
        if (*card == 'P') {//吃桃
            if (pigs[id].hp <= 0) {
                pigs[id].hp++;
                auto peach = card;
                card++;
                pigs[id].cards.erase(peach);
            } else
                return;
        } else
            card++;
}

inline bool tips(char card, int id, int t) {
    if (card == 'F' || card == 'N' || card == 'W') {
        int k = id + 1;
        if (k > n)
            k = 1;
        while (k != id) {
            if (
            ((pigs[t].type == "MP" && pigs[k].type == "ZP") || (pigs[t].type == "ZP" && pigs[k].type == "MP") || (pigs[t].type == pigs[k].type)) && pigs[t].show_type) {//我帮你!!!
                auto kc = pigs[k].cards.begin();
                bool flag = false;//我先找一下无懈在哪儿^o^
                while (kc != pigs[k].cards.end()) {
                    if (*kc == 'J') {//OK找到了^o^!
                        flag = true;
                        pigs[k].cards.erase(kc);
                        break;
                    }
                    kc++;
                }
                if (flag) {
                    flag = !tips('J', k, t);
                    if (flag)
                        pigs[k].show_type = true;//跳身份
                    return flag;
                }
            }
            k++;
            if (k > n)
                k = 1;
        }
    } else {
        int k = id + 1;
        if (k > n)
            k = 1;
        while (k != id) {
            if (((pigs[t].type == "MP" && pigs[k].type == "FP") || (pigs[t].type == "ZP" && pigs[k].type == "FP")) && pigs[t].show_type) {//我无懈你的无懈!!!
                auto kc = pigs[k].cards.begin();
                bool flag = false;//我先找一下无懈在哪儿…
                while (kc != pigs[k].cards.end()) {
                    if (*kc == 'J') {//OK找到了^o^!
                        flag = true;
                        pigs[k].cards.erase(kc);
                        break;
                    }
                    kc++;
                }
                if (flag) {
                    flag = !tips('J', k, t);
                    if (flag)
                        pigs[k].show_type = true;//跳身份
                    return flag;
                }
            }
            k++;
            if (k > n)
                k = 1;
        }
    }
    return true;//没人愿意打无懈!
}
2024/7/26 15:01
加载中...