Krads

· · 休闲·娱乐

1.3版本,加入第一张反制指令:科创反诈中心。

#include<bits/stdc++.h>
#define IT set<Node>::iterator
#define mpl pl[1].wz
#define mpr pl[2].wz
using namespace std;
const int kardstot=6;
const int MP_MAX=100000,MP_MIN=1;
string orkards[]= {"","前进","后退","攻击","洗牌","有限补给","科创反诈中心"};
int aknum[]= {0,10,10,10,4,7,3};
int kardsnum;
string kardsname[10000005]= {""};
string mapname[]= {"","p1","p2","空地","焦土"};
struct Player
{
    int hp,wz,knum;
    int fzok;//判定是否挂载反诈
    int kards[100005];
} pl[3];
int action;//用于判断行为
int mp[100005];
mt19937 rng(time(0));
int rand(int l,int r)
{
    return rng()%(r-l+1)+l;
}
bool find_winner()
{
    if(pl[1].hp<=0)
    {
        cout<<"p2 win!\n";
        return false;
    }
    if(pl[2].hp<=0)
    {
        cout<<"p1 win!\n";
        return false;
    }
    return true;
}
void give_kard(int op,int num)
{
    for(int i=1; i<=num; i++)
    {
        pl[op].kards[++pl[op].knum]=rand(1,kardsnum);
    }
    sort(pl[op].kards+1,pl[op].kards+pl[op].knum+1);
}
void qianjin(int op)
{
    if(pl[1].wz==pl[2].wz-1)
    {
        return;
    }
    if(op==1)
    {
        mp[pl[1].wz]=0;
        pl[1].wz++;
        mp[pl[1].wz]=1;
    }
    else
    {
        mp[pl[2].wz]=0;
        pl[2].wz--;
        mp[pl[2].wz]=2;
    }
}
void houtui(int op)
{
    if(op==1)
    {
        if(pl[1].wz==MP_MIN)
        {
            if(pl[2].wz!=MP_MAX)
            {
                houtui(2);
            }
            return;
        }
        mp[pl[1].wz]=3;
        pl[1].wz--;
        mp[pl[1].wz]=1;
    }
    else
    {
        if(pl[2].wz==MP_MAX)
        {
            if(pl[1].wz!=MP_MIN)
            {
                houtui(2);
            }
            return;
        }
        mp[pl[2].wz]=3;
        pl[2].wz++;
        mp[pl[2].wz]=2;
    }
}
void kill(int op,int killnum)
{
    if(op==1)
    {
        int nxt=pl[1].wz+1;
        if(mp[nxt]==2)
        {
            pl[2].hp-=killnum;
            cout<<"p2 hp:"<<pl[2].hp<<"\n";
        }
        else if(mp[nxt]==3)
        {
            if(killnum<=2)
            {
                mp[nxt]=4;
            }
            else
            {
                qianjin(op);
            }
        }
        else if(mp[nxt])
        {
            qianjin(op);
        }
    }
    else
    {
        int nxt=pl[2].wz-1;
        if(mp[nxt]==1)
        {
            pl[1].hp-=killnum;
            cout<<"p1 hp:"<<pl[1].hp<<"\n";
        }
        else if(mp[nxt]==3)
        {
            if(killnum<=2)
            {
                mp[nxt]=4;
            }
            else
            {
                qianjin(op);
            }
        }
        else if(mp[nxt])
        {
            qianjin(op);
        }
    }
}
void pop_kard(int op,int kid)
{
    swap(pl[op].kards[pl[op].knum],pl[op].kards[kid]);
    pl[op].kards[kid]=0;
    pl[op].knum--;
    sort(pl[op].kards+1,pl[op].kards+pl[op].knum+1);
}
void xipai(int op)
{
    int ornum=pl[op].knum;
    while(pl[op].knum)
    {
        pop_kard(op,rand(1,pl[op].knum));
    }
    give_kard(op,ornum);
}
void fanzha(int op)
{
    if(op==1)
    {
        pl[2].fzok++;
    }
    else
    {
        pl[1].fzok++;
    }
}
void youxianbuji(int op)
{
    give_kard(op,min(2,max(0,10-pl[op].knum)));
}
void us_kard(int op,int kid)
{
    string nowname=kardsname[pl[op].kards[kid]];
    pl[op].kards[kid]=1e8;
    sort(pl[op].kards+1,pl[op].kards+pl[op].knum+1);
    pl[op].knum--;
    if(pl[op].fzok)
    {
        cout<<"我恭喜你发财!!\n";
        pl[op].fzok--;
        return;
    }
    if(nowname=="前进")
    {
        qianjin(op);
    }
    else if(nowname=="后退")
    {
        houtui(op);
    }
    else if(nowname=="攻击")
    {
        kill(op,2);
    }
    else if(nowname=="洗牌")
    {
        xipai(op);
    }
    else if(nowname=="有限补给")
    {
        youxianbuji(op);
    }
    else if(nowname=="科创反诈中心")
    {
        fanzha(op);
    }
}
void init()
{
    for(int i=1; i<=kardstot; i++)
    {
        for(int j=1; j<=aknum[i]; j++)
        {
            kardsname[++kardsnum]=orkards[i];
        }
    }
    pl[1].hp=pl[2].hp=10;
    give_kard(1,5),give_kard(2,5);
    pl[1].wz=1,pl[2].wz=5;
    mp[1]=1,mp[2]=mp[3]=mp[4]=3,mp[5]=2;
}
void out_map(int l,int r)
{
    cout<<"| ";
    for(int i=l; i<=r; i++)
    {
        cout<<mapname[mp[i]]<<" | ";
    }
    cout<<"\n";
}
void out_kard(int op)
{
    for(int i=1; i<=pl[op].knum; i++)
    {
        cout<<i<<":"<<kardsname[pl[op].kards[i]]<<" ";
    }
    cout<<"\n";
}
void cls()
{
    system("cls");
    for(int i=1; i<=5; i++)
    {
        cout<<"\n";
    }
}//如果你使用的是VScode,请将cls()改为cls2()
void cls2()
{
    for (int i = 1; i <= 30;i++)
    {
        cout << "\n";
    }
}
int main()
{
    init();
    while(pl[1].hp>0 && pl[2].hp>0)
    {
        cout<<"p1 trun\n";
        out_map(mpl,mpr),out_kard(1);
        cin>>action;
        while(action!=-1)
        {
            if(action>pl[1].knum)
            {
                cout<<"wrong kard\n";
                cin>>action;
                continue;
            }
            us_kard(1,action);
            if(!find_winner())
            {
                return 0;
            }
            if(!pl[1].knum)
            {
                break;
            }
            out_map(mpl,mpr),out_kard(1);
            cin>>action;
        }
        cls();
        cout<<"p2 trun\n";
        out_map(mpl,mpr),out_kard(2);
        cin>>action;
        while(action!=-1)
        {
            if(action>pl[2].knum)
            {
                cout<<"wrong kard\n";
                cin>>action;
                continue;
            }
            us_kard(2,action);
            if(!find_winner())
            {
                return 0;
            }
            if(!pl[2].knum)
            {
                break;
            }
            out_map(mpl,mpr),out_kard(2);
            cin>>action;
        }
        cls();
        give_kard(1,min(2,max(0,10-pl[1].knum)));
        give_kard(2,min(2,max(0,10-pl[2].knum)));
    }
    return 0;
}

1.2版本,增加手牌上限,增加新牌:有限补给。

#include<bits/stdc++.h>
#define IT set<Node>::iterator
#define mpl pl[1].wz
#define mpr pl[2].wz
using namespace std;
const int kardstot=5;
const int MP_MAX=100000,MP_MIN=1;
string orkards[]= {"","前进","后退","攻击","洗牌","有限补给"};
int aknum[]= {0,10,10,10,4,7};
int kardsnum;
string kardsname[10000005]= {""};
string mapname[]= {"","p1","p2","空地","焦土"};
struct Player
{
    int hp,wz,knum;
    int kards[100005];
} pl[3];
int action;//用于判断行为
int mp[100005];
mt19937 rng(time(0));
int rand(int l,int r)
{
    return rng()%(r-l+1)+l;
}
bool find_winner()
{
    if(pl[1].hp<=0)
    {
        cout<<"p2 win!\n";
        return false;
    }
    if(pl[2].hp<=0)
    {
        cout<<"p1 win!\n";
        return false;
    }
    return true;
}
void give_kard(int op,int num)
{
    for(int i=1; i<=num; i++)
    {
        pl[op].kards[++pl[op].knum]=rand(1,kardsnum);
    }
    sort(pl[op].kards+1,pl[op].kards+pl[op].knum+1);
}
void qianjin(int op)
{
    if(pl[1].wz==pl[2].wz-1)
    {
        return;
    }
    if(op==1)
    {
        mp[pl[1].wz]=0;
        pl[1].wz++;
        mp[pl[1].wz]=1;
    }
    else
    {
        mp[pl[2].wz]=0;
        pl[2].wz--;
        mp[pl[2].wz]=2;
    }
}
void houtui(int op)
{
    if(op==1)
    {
        if(pl[1].wz==MP_MIN)
        {
            if(pl[2].wz!=MP_MAX)
            {
                houtui(2);
            }
            return;
        }
        mp[pl[1].wz]=3;
        pl[1].wz--;
        mp[pl[1].wz]=1;
    }
    else
    {
        if(pl[2].wz==MP_MAX)
        {
            if(pl[1].wz!=MP_MIN)
            {
                houtui(2);
            }
            return;
        }
        mp[pl[2].wz]=3;
        pl[2].wz++;
        mp[pl[2].wz]=2;
    }
}
void kill(int op,int killnum)
{
    if(op==1)
    {
        int nxt=pl[1].wz+1;
        if(mp[nxt]==2)
        {
            pl[2].hp-=killnum;
            cout<<"p2 hp:"<<pl[2].hp<<"\n";
        }
        else if(mp[nxt]==3)
        {
            if(killnum<=2)
            {
                mp[nxt]=4;
            }
            else
            {
                qianjin(op);
            }
        }
        else if(mp[nxt])
        {
            qianjin(op);
        }
    }
    else
    {
        int nxt=pl[2].wz-1;
        if(mp[nxt]==1)
        {
            pl[1].hp-=killnum;
            cout<<"p1 hp:"<<pl[1].hp<<"\n";
        }
        else if(mp[nxt]==3)
        {
            if(killnum<=2)
            {
                mp[nxt]=4;
            }
            else
            {
                qianjin(op);
            }
        }
        else if(mp[nxt])
        {
            qianjin(op);
        }
    }
}
void pop_kard(int op,int kid)
{
    swap(pl[op].kards[pl[op].knum],pl[op].kards[kid]);
    pl[op].kards[kid]=0;
    pl[op].knum--;
    sort(pl[op].kards+1,pl[op].kards+pl[op].knum+1);
}
void xipai(int op)
{
    int ornum=pl[op].knum;
    while(pl[op].knum)
    {
        pop_kard(op,rand(1,pl[op].knum));
    }
    give_kard(op,ornum);
}
void youxianbuji(int op)
{
    give_kard(op,min(2,max(0,10-pl[op].knum)));
}
void us_kard(int op,int kid)
{
    string nowname=kardsname[pl[op].kards[kid]];
    pl[op].kards[kid]=1e8;
    sort(pl[op].kards+1,pl[op].kards+pl[op].knum+1);
    pl[op].knum--;
    if(nowname=="前进")
    {
        qianjin(op);
    }
    else if(nowname=="后退")
    {
        houtui(op);
    }
    else if(nowname=="攻击")
    {
        kill(op,2);
    }
    else if(nowname=="洗牌")
    {
        xipai(op);
    }
    else if(nowname=="有限补给")
    {
        youxianbuji(op);
    }
}
void init()
{
    for(int i=1; i<=kardstot; i++)
    {
        for(int j=1; j<=aknum[i]; j++)
        {
            kardsname[++kardsnum]=orkards[i];
        }
    }
    pl[1].hp=pl[2].hp=10;
    give_kard(1,5),give_kard(2,5);
    pl[1].wz=1,pl[2].wz=5;
    mp[1]=1,mp[2]=mp[3]=mp[4]=3,mp[5]=2;
}
void out_map(int l,int r)
{
    cout<<"| ";
    for(int i=l; i<=r; i++)
    {
        cout<<mapname[mp[i]]<<" | ";
    }
    cout<<"\n";
}
void out_kard(int op)
{
    for(int i=1; i<=pl[op].knum; i++)
    {
        cout<<i<<":"<<kardsname[pl[op].kards[i]]<<" ";
    }
    cout<<"\n";
}
void cls()
{
    system("cls");
    for(int i=1; i<=5; i++)
    {
        cout<<"\n";
    }
}
int main()
{
    init();
    while(pl[1].hp>0 && pl[2].hp>0)
    {
        cout<<"p1 trun\n";
        out_map(mpl,mpr),out_kard(1);
        cin>>action;
        while(action!=-1)
        {
            if(action>pl[1].knum)
            {
                cout<<"wrong kard\n";
                cin>>action;
                continue;
            }
            us_kard(1,action);
            if(!find_winner())
            {
                return 0;
            }
            if(!pl[1].knum)
            {
                break;
            }
            out_map(mpl,mpr),out_kard(1);
            cin>>action;
        }
        cls();
        cout<<"p2 trun\n";
        out_map(mpl,mpr),out_kard(2);
        cin>>action;
        while(action!=-1)
        {
            if(action>pl[2].knum)
            {
                cout<<"wrong kard\n";
                cin>>action;
                continue;
            }
            us_kard(2,action);
            if(!find_winner())
            {
                return 0;
            }
            if(!pl[2].knum)
            {
                break;
            }
            out_map(mpl,mpr),out_kard(2);
            cin>>action;
        }
        cls();
        give_kard(1,min(2,max(0,10-pl[1].knum)));
        give_kard(2,min(2,max(0,10-pl[2].knum)));
    }
    return 0;
}

1.1版本,增加稀有度。新卡牌:洗牌。

#include<bits/stdc++.h>
#define IT set<Node>::iterator
#define mpl pl[1].wz
#define mpr pl[2].wz
using namespace std;
const int kardstot=4;
const int MP_MAX=100000,MP_MIN=1;
string orkards[]={"","前进","后退","攻击","洗牌"};
int aknum[]={0,4,4,3,2};
int kardsnum;
string kardsname[10000005]={""};
string mapname[]={"","p1","p2","空地","焦土"};
struct Player
{
    int hp,wz,knum;
    int kards[100005];
} pl[3];
int action;//用于判断行为
int mp[100005];
mt19937 rng(time(0));
int rand(int l,int r)
{
    return rng()%(r-l+1)+l;
}
bool find_winner()
{
    if(pl[1].hp<=0)
    {
        cout<<"p2 win!\n";
        return false;
    }
    if(pl[2].hp<=0)
    {
        cout<<"p1 win!\n";
        return false;
    }
    return true;
}
void give_kard(int op,int num)
{
    for(int i=1; i<=num; i++)
    {
        pl[op].kards[++pl[op].knum]=rand(1,kardsnum);
    }
    sort(pl[op].kards+1,pl[op].kards+pl[op].knum+1);
}
void qianjin(int op)
{
    if(pl[1].wz==pl[2].wz-1)
    {
        return;
    }
    if(op==1)
    {
        mp[pl[1].wz]=0;
        pl[1].wz++;
        mp[pl[1].wz]=1;
    }
    else
    {
        mp[pl[2].wz]=0;
        pl[2].wz--;
        mp[pl[2].wz]=2;
    }
}
void houtui(int op)
{
    if(op==1)
    {
        if(pl[1].wz==MP_MIN)
        {
            if(pl[2].wz!=MP_MAX)
            {
                houtui(2);
            }
            return;
        }
        mp[pl[1].wz]=3;
        pl[1].wz--;
        mp[pl[1].wz]=1;
    }
    else
    {
        if(pl[2].wz==MP_MAX)
        {
            if(pl[1].wz!=MP_MIN)
            {
                houtui(2);
            }
            return;
        }
        mp[pl[2].wz]=3;
        pl[2].wz++;
        mp[pl[2].wz]=2;
    }
}
void kill(int op,int killnum)
{
    if(op==1)
    {
        int nxt=pl[1].wz+1;
        if(mp[nxt]==2)
        {
            pl[2].hp-=killnum;
            cout<<"p2 hp:"<<pl[2].hp<<"\n";
        }
        else if(mp[nxt]==3)
        {
            if(killnum<=2)
            {
                mp[nxt]=4;
            }
            else
            {
                qianjin(op);
            }
        }
        else if(mp[nxt])
        {
            qianjin(op);
        }
    }
    else
    {
        int nxt=pl[2].wz-1;
        if(mp[nxt]==1)
        {
            pl[1].hp-=killnum;
            cout<<"p1 hp:"<<pl[1].hp<<"\n";
        }
        else if(mp[nxt]==3)
        {
            if(killnum<=2)
            {
                mp[nxt]=4;
            }
            else
            {
                qianjin(op);
            }
        }
        else if(mp[nxt])
        {
            qianjin(op);
        }
    }
}
void pop_kard(int op,int kid)
{
    swap(pl[op].kards[pl[op].knum],pl[op].kards[kid]);
    pl[op].kards[kid]=0;
    pl[op].knum--;
    sort(pl[op].kards+1,pl[op].kards+pl[op].knum+1);
}
void xipai(int op)
{
    int ornum=pl[op].knum;
    while(pl[op].knum)
    {
        pop_kard(op,rand(1,pl[op].knum));
    }
    give_kard(op,ornum);
}
void us_kard(int op,int kid)
{
    if(kardsname[pl[op].kards[kid]]=="前进")
    {
        qianjin(op);
    }
    else if(kardsname[pl[op].kards[kid]]=="后退")
    {
        houtui(op);
    }
    else if(kardsname[pl[op].kards[kid]]=="攻击")
    {
        kill(op,2);
    }
    else if(kardsname[pl[op].kards[kid]]=="洗牌")
    {
        xipai(op);
    }
    pl[op].kards[kid]=1e8;
    sort(pl[op].kards+1,pl[op].kards+pl[op].knum+1);
    pl[op].knum--;
}
void init()
{
    for(int i=1;i<=kardstot;i++)
    {
        for(int j=1;j<=aknum[i];j++)
        {
            kardsname[++kardsnum]=orkards[i];
        }
    }
    pl[1].hp=pl[2].hp=10;
    give_kard(1,5),give_kard(2,5);
    pl[1].wz=1,pl[2].wz=5;
    mp[1]=1,mp[2]=mp[3]=mp[4]=3,mp[5]=2;
}
void out_map(int l,int r)
{
    cout<<"| ";
    for(int i=l; i<=r; i++)
    {
        cout<<mapname[mp[i]]<<" | ";
    }
    cout<<"\n";
}
void out_kard(int op)
{
    for(int i=1; i<=pl[op].knum; i++)
    {
        cout<<i<<":"<<kardsname[pl[op].kards[i]]<<" ";
    }
    cout<<"\n";
}
int main()
{
    init();
    while(pl[1].hp>0 && pl[2].hp>0)
    {
        cout<<"p1 trun\n";
        out_map(mpl,mpr),out_kard(1);
        cin>>action;
        while(action!=-1)
        {
            if(action>pl[1].knum)
            {
                cout<<"wrong kard\n";
                cin>>action;
                continue;
            }
            us_kard(1,action);
            if(!find_winner())
            {
                return 0;
            }
            if(!pl[1].knum)
            {
                break;
            }
            out_map(mpl,mpr),out_kard(1);
            cin>>action;
        }
        cout<<"p2 trun\n";
        out_map(mpl,mpr),out_kard(2);
        cin>>action;
        while(action!=-1)
        {
            if(action>pl[2].knum)
            {
                cout<<"wrong kard\n";
                cin>>action;
                continue;
            }
            us_kard(2,action);
            if(!find_winner())
            {
                return 0;
            }
            if(!pl[2].knum)
            {
                break;
            }
            out_map(mpl,mpr),out_kard(2);
            cin>>action;
        }
        give_kard(1,2),give_kard(2,2);
    }
    return 0;
}

1.0版本,实现前进,后退,攻击。

#include<bits/stdc++.h>
#define IT set<Node>::iterator
#define mpl pl[1].wz
#define mpr pl[2].wz
using namespace std;
const int kardsnum=3;
const int MP_MAX=100000,MP_MIN=1;
string kardsname[]= {"","前进","后退","攻击"};
string mapname[]={"","p1","p2","空地","焦土"};
struct Player
{
    int hp,wz,knum;
    int kards[100005];
} pl[3];
int action;//用于判断行为
int mp[100005];
mt19937 rng(time(0));
int rand(int l,int r)
{
    return rng()%(r-l+1)+l;
}
bool find_winner()
{
    if(pl[1].hp<=0)
    {
        cout<<"p2 win!\n";
        return false;
    }
    if(pl[2].hp<=0)
    {
        cout<<"p1 win!\n";
        return false;
    }
    return true;
}
void give_kard(int op,int num)
{
    for(int i=1; i<=num; i++)
    {
        pl[op].kards[++pl[op].knum]=rand(1,kardsnum);
    }
    sort(pl[op].kards+1,pl[op].kards+pl[op].knum+1);
}
void qianjin(int op)
{
    if(pl[1].wz==pl[2].wz-1)
    {
        return;
    }
    if(op==1)
    {
        mp[pl[1].wz]=0;
        pl[1].wz++;
        mp[pl[1].wz]=1;
    }
    else
    {
        mp[pl[2].wz]=0;
        pl[2].wz--;
        mp[pl[2].wz]=2;
    }
}
void houtui(int op)
{
    if(op==1)
    {
        if(pl[1].wz==MP_MIN)
        {
            if(pl[2].wz!=MP_MAX)
            {
                houtui(2);
            }
            return;
        }
        mp[pl[1].wz]=3;
        pl[1].wz--;
        mp[pl[1].wz]=1;
    }
    else
    {
        if(pl[2].wz==MP_MAX)
        {
            if(pl[1].wz!=MP_MIN)
            {
                houtui(2);
            }
            return;
        }
        mp[pl[2].wz]=3;
        pl[2].wz++;
        mp[pl[2].wz]=2;
    }
}
void kill(int op,int killnum)
{
    if(op==1)
    {
        int nxt=pl[1].wz+1;
        if(mp[nxt]==2)
        {
            pl[2].hp-=killnum;
            cout<<"p2 hp:"<<pl[2].hp<<"\n";
        }
        else if(mp[nxt]==3)
        {
            if(killnum<=2)
            {
                mp[nxt]=4;
            }
            else
            {
                qianjin(op);
            }
        }
        else if(mp[nxt])
        {
            qianjin(op);
        }
    }
    else
    {
        int nxt=pl[2].wz-1;
        if(mp[nxt]==1)
        {
            pl[1].hp-=killnum;
            cout<<"p1 hp:"<<pl[1].hp<<"\n";
        }
        else if(mp[nxt]==3)
        {
            if(killnum<=2)
            {
                mp[nxt]=4;
            }
            else
            {
                qianjin(op);
            }
        }
        else if(mp[nxt])
        {
            qianjin(op);
        }
    }
}
void us_kard(int op,int kid)
{
    if(kardsname[pl[op].kards[kid]]=="前进")
    {
        qianjin(op);
    }
    else if(kardsname[pl[op].kards[kid]]=="后退")
    {
        houtui(op);
    }
    else if(kardsname[pl[op].kards[kid]]=="攻击")
    {
        kill(op,2);
    }
    pl[op].kards[kid]=1e8;
    sort(pl[op].kards+1,pl[op].kards+pl[op].knum+1);
    pl[op].knum--;
}
void init()
{
    pl[1].hp=pl[2].hp=10;
    give_kard(1,5),give_kard(2,5);
    pl[1].wz=1,pl[2].wz=5;
    mp[1]=1,mp[2]=mp[3]=mp[4]=3,mp[5]=2;
}
void out_map(int l,int r)
{
    cout<<"| ";
    for(int i=l; i<=r; i++)
    {
        cout<<mapname[mp[i]]<<" | ";
    }
    cout<<"\n";
}
void out_kard(int op)
{
    for(int i=1; i<=pl[op].knum; i++)
    {
        cout<<i<<":"<<kardsname[pl[op].kards[i]]<<" ";
    }
    cout<<"\n";
}
int main()
{
    init();
    while(pl[1].hp>0 && pl[2].hp>0)
    {
        cout<<"p1 trun\n";
        out_map(mpl,mpr),out_kard(1);
        cin>>action;
        while(action!=-1)
        {
            if(action>pl[1].knum)
            {
                cout<<"wrong kard\n";
                cin>>action;
                continue;
            }
            us_kard(1,action);
            if(!find_winner())
            {
                return 0;
            }
            if(!pl[1].knum)
            {
                break;
            }
            out_map(mpl,mpr),out_kard(1);
            cin>>action;
        }
        cout<<"p2 trun\n";
        out_map(mpl,mpr),out_kard(2);
        cin>>action;
        while(action!=-1)
        {
            if(action>pl[2].knum)
            {
                cout<<"wrong kard\n";
                cin>>action;
                continue;
            }
            us_kard(2,action);
            if(!find_winner())
            {
                return 0;
            }
            if(!pl[2].knum)
            {
                break;
            }
            out_map(mpl,mpr),out_kard(2);
            cin>>action;
        }
        give_kard(1,2),give_kard(2,2);
    }
    return 0;
}