简字节(Simblytes)6.3.3代码——章节赛(赛克尔だよ优化版3)

· · 休闲·娱乐

欢迎来玩!以前的版本与PVP版本看Wei_wei_的博客

/*=====Wei_wei_&赛克尔だよ=====*/
/*===========2023.10.4=========*/
/*=============6.3.3=============*/
/*=============test============*/ 
//修改了一窝Bug 
//稳定性能(仅人机版)
//子弹隐藏
#include<iostream>
#include<windows.h>
#include<time.h>
#include<conio.h>
#include <stdlib.h>
int main();//提前定义主函数 
int diffy;//难度 
using namespace std;
HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);
COORD coord;
void locate(int x,int y)//光标定位 
{
    coord.X=y;
    coord.Y=x;
    SetConsoleCursorPosition(hout,coord);
};
void hide()//光标隐藏 
{
    CONSOLE_CURSOR_INFO cursor_info={1,0};
    SetConsoleCursorInfo(hout, &cursor_info);
}
void show()//光标显现 
{
    CONSOLE_CURSOR_INFO cursor_info={1,1};
    SetConsoleCursorInfo(hout, &cursor_info);
}
int shuafen;//刷分(双倍经验) 
int fenx[10000000],feny[10000000],cntfen,fenlive[10000000];//分坐标(*) 
int direct[4][2]={{0,-1},{-1,0},{0,1},{1,0}};//行动方向(四向) 
int dir;//方向存储 
int x1=10,y1=100;//玩家坐标(@) 
int cnt1,cnt2;//cnt1:分数($),cnt2:血量(显示时是 %:A_life-cnt2) 
int map[1000][1000];//地图 
int uinwater;//气泡码 
bool onfire;//岩码 
time_t first,fir,second;//时间:first:开始时间(秒),fir:开始时间(毫秒),second:当前时间(秒/毫秒) 
int DIER[9][2]={{0,0},{-1,0},{1,0},{0,-1},{0,1},{-1,-1},{-1,1},{1,-1},{1,1}};//子弹方向(八向) 
int bltx[10000000],blty[10000000],blt[10000000],bltdier[10000000],liveblt[10000000],cntblt,bltnum;
/*(上排)
bltx[],blty[]:子弹坐标;blt[]:子弹行径时间(射程);bltdier[]:子弹方向;liveblt[]:子弹是否可用(0:no/1:yes);
cntblt:场上子弹数量;bltnum:可用子弹数量。
*/
int bltx_ene[10000000],blty_ene[10000000],blt_ene[10000000],bltdier_ene[10000000],liveblt_ene[10000000],cntblt_ene;
/*(上排)
bltx_ene[],blty_ene[]:子弹坐标;blt_ene[]:子弹行径时间(射程);bltdier_ene[]:子弹方向;liveblt_ene[]:子弹是否可用(0:no/1:yes);cntblt:场上子弹数量;
但是敌人() 
*/
int A_life=30;//血量上限 
int bossx=11,bossy=30;
void compleblt(int z,int i,int yy)//bullet_clean 
{
    while(--i>=yy)
    {
        switch(map[bltx[z]][blty[z]+i])
        {
            case 0:locate(bltx[z],blty[z]+i);cout<<' ';break;
            case 1:locate(bltx[z],blty[z]+i);cout<<'=';break;
            case 2:locate(bltx[z],blty[z]+i);cout<<'x';break;
            case 3:locate(bltx[z],blty[z]+i);cout<<char(1);break;
            case 4:locate(bltx[z],blty[z]+i);cout<<'~';break;
            case 5:locate(bltx[z],blty[z]+i);cout<<'!';break;
            case 6:locate(bltx[z],blty[z]+i);cout<<'N';break;
        }
        if(bltx[z]==bossx&&blty[z]+i==bossy)
        {
            locate(bltx[z],blty[z]+i);
            cout<<"A";
        }
        if(bltx[z]==bossx+1&&blty[z]+i==bossy)
        {
            locate(bltx[z],blty[z]+i);
            cout<<"#";
        }
        if(bltx[z]==bossx-1&&blty[z]+i==bossy)
        {
            locate(bltx[z],blty[z]+i);
            cout<<"V";
        }
        if(bltx[z]==bossx&&blty[z]+i==bossy-1)
        {
            locate(bltx[z],blty[z]+i);
            cout<<"/";
        }
        if(bltx[z]==bossx&&blty[z]+i==bossy+1)
        {
            locate(bltx[z],blty[z]+i);
            cout<<"\\";
        }
    }
}
void compleblt_ene(int z,int i,int yy)//bullet_clean 
{
    while(--i>=yy)
    {
        switch(map[bltx_ene[z]][blty_ene[z]+i])
        {
            case 0:locate(bltx_ene[z],blty_ene[z]+i);cout<<' ';break;
            case 1:locate(bltx_ene[z],blty_ene[z]+i);cout<<'=';break;
            case 2:locate(bltx_ene[z],blty_ene[z]+i);cout<<'x';break;
            case 3:locate(bltx_ene[z],blty_ene[z]+i);cout<<char(1);break;
            case 4:locate(bltx_ene[z],blty_ene[z]+i);cout<<'~';break;
            case 5:locate(bltx_ene[z],blty_ene[z]+i);cout<<'!';break;
            case 6:locate(bltx_ene[z],blty_ene[z]+i);cout<<'N';break;
        }
        if(bltx_ene[z]==bossx&&blty_ene[z]+i==bossy)
        {
            locate(bltx_ene[z],blty_ene[z]+i);
            cout<<"A";
        }
        if(bltx_ene[z]==bossx+1&&blty_ene[z]+i==bossy)
        {
            locate(bltx_ene[z],blty_ene[z]+i);
            cout<<"#";
        }
        if(bltx_ene[z]==bossx-1&&blty_ene[z]+i==bossy)
        {
            locate(bltx_ene[z],blty_ene[z]+i);
            cout<<"V";
        }
        if(bltx_ene[z]==bossx&&blty_ene[z]+i==bossy-1)
        {
            locate(bltx_ene[z],blty_ene[z]+i);
            cout<<"/";
        }
        if(bltx_ene[z]==bossx&&blty_ene[z]+i==bossy+1)
        {
            locate(bltx_ene[z],blty_ene[z]+i);
            cout<<"\\";
        }
    }
}
void comple1(int i,int y)//@_clean
{
    while(--i>=y)
    {
        switch(map[x1][y1+i])
        {
            case 0:locate(x1,y1+i);cout<<' ';break;
            case 1:locate(x1,y1+i);cout<<'=';break;
            case 2:locate(x1,y1+i);cout<<',';map[x1][y1+i]=0;break;
            case 3:locate(x1,y1+i);cout<<char(1);break;
            case 4:locate(x1,y1+i);cout<<'~';break;
            case 5:locate(x1,y1+i);cout<<'!';break;
            case 6:locate(x1,y1+i);cout<<'N';break;
        }
        if(x1==bossx&&y1+i==bossy)
        {
            locate(x1,y1+i);
            cout<<"A";
        }
        if(x1==bossx+1&&y1+i==bossy)
        {
            locate(x1,y1+i);
            cout<<"#";
        }
        if(x1==bossx-1&&y1+i==bossy)
        {
            locate(x1,y1+i);
            cout<<"V";
        }
        if(x1==bossx&&y1+i==bossy-1)
        {
            locate(x1,y1+i);
            cout<<"/";
        }
        if(x1==bossx&&y1+i==bossy+1)
        {
            locate(x1,y1+i);
            cout<<"\\";
        }
    }
}
int x[10000000],y[10000000],cnt=1,live[10000000];//#坐标,数量,是否存活(0:live/1:dead) 
int inwater[10000000];//#憋气(三字节) 
void comple(int z,int i,int yy)//#_clean 
{
    while(--i>=yy)
    {
        switch(map[x[z]][y[z]+i])
        {
            case 0:locate(x[z],y[z]+i);cout<<' ';break;
            case 1:locate(x[z],y[z]+i);cout<<'=';break;
            case 2:locate(x[z],y[z]+i);cout<<',';map[x[z]][y[z]+i]=0;break;
            case 3:locate(x[z],y[z]+i);cout<<char(1);break;
            case 4:locate(x[z],y[z]+i);cout<<'~';break;
            case 5:locate(x[z],y[z]+i);cout<<'!';break;
            case 6:locate(x[z],y[z]+i);cout<<'N';break;
        }
        if(x[z]==bossx&&y[z]+i==bossy)
        {
            locate(x[z],y[z]+i);
            cout<<"A";
        }
        if(x[z]==bossx+1&&y[z]+i==bossy)
        {
            locate(x[z],y[z]+i);
            cout<<"#";
        }
        if(x[z]==bossx-1&&y[z]+i==bossy)
        {
            locate(x[z],y[z]+i);
            cout<<"V";
        }
        if(x[z]==bossx&&y[z]+i==bossy-1)
        {
            locate(x[z],y[z]+i);
            cout<<"/";
        }
        if(x[z]==bossx&&y[z]+i==bossy+1)
        {
            locate(x[z],y[z]+i);
            cout<<"\\";
        }
    }
}
int kkk[10000000];//#行动方向(井路)/#是否变为$ 
void _jing_(int i)//#_move
{//%9999:防越界(其实没用) 
    if(i>cnt)return;
    if(live[i%9999])//#已经寄了:执行下一个 
    {
        _jing_((i+1)%9999);
        return;
    }
    if(kkk[i%9999]<=10||kkk[i%9999]>=30)//竖走 
    {
        if(x1>x[i%9999])
        {
            if(map[x[i%9999]+1][y[i%9999]]==3||map[x[i%9999]+1][y[i%9999]]==1)
            {
                int lshsh=rand()%5;
                if(lshsh)
                {
                    _jing_((i+1)%9999);
                    return;
                }
                else{
                    comple(i%9999,1,0);
                    kkk[i%9999]=20;
                    locate(x[i%9999],y[i%9999]);
                    if(kkk[i%9999]<20)
                    cout<<"#";
                    else cout<<"$";
                    _jing_((i+1)%9999);
                    return;
                }
            }
            comple(i%9999,1,0);
            x[i%9999]++;
            locate(x[i%9999],y[i%9999]);
            if(kkk[i%9999]<20)
            cout<<"#";
            else cout<<"$";
        }
        if(x1<x[i%9999])
        {
            if(x[i%9999]-1<0||map[x[i%9999]-1][y[i%9999]]==3||map[x[i%9999]-1][y[i%9999]]==1)
            {
                int lshsh=rand()%5;
                if(lshsh)
                {
                    _jing_((i+1)%9999);
                    return;
                }
                else{
                    comple(i%9999,1,0);
                    kkk[i%9999]=20;
                    locate(x[i%9999],y[i%9999]);
                    if(kkk[i%9999]<20)
                    cout<<"#";
                    else cout<<"$";
                    _jing_((i+1)%9999);
                    return;
                }
            }
            comple(i%9999,1,0);
            x[i%9999]--;
            locate(x[i%9999],y[i%9999]);
            if(kkk[i%9999]<20)
            cout<<"#";
            else cout<<"$";
        }
    }
    else//横走 
    {
        if(y1>y[i%9999])
        {
            if(map[x[i%9999]][y[i%9999]+1]==3||map[x[i%9999]][y[i%9999]+1]==1)
            {
                int lshsh=rand()%5;
                if(lshsh)
                {
                    _jing_((i+1)%9999);
                    return;
                }
                else{
                    comple(i%9999,1,0);
                    kkk[i%9999]=0;
                    locate(x[i%9999],y[i%9999]);
                    if(kkk[i%9999]<20)
                    cout<<"#";
                    else cout<<"$";
                    _jing_((i+1)%9999);
                    return;
                }
            }
            comple(i%9999,1,0);
            y[i%9999]++;
            locate(x[i%9999],y[i%9999]);
            if(kkk[i%9999]<20)
            cout<<"#";
            else cout<<"$";
        }
        if(y1<y[i%9999])
        {
            if(y[i%9999]-1<0||map[x[i%9999]][y[i%9999]-1]==3||map[x[i%9999]][y[i%9999]-1]==1)
            {
                int lshsh=rand()%5;
                if(lshsh)
                {
                    _jing_((i+1)%9999);
                    return;
                }
                else{
                    comple(i%9999,1,0);
                    kkk[i%9999]=0;
                    locate(x[i%9999],y[i%9999]);
                    if(kkk[i%9999]<20)
                    cout<<"#";
                    else cout<<"$";
                    _jing_((i+1)%9999);
                    return;
                }
            }
            comple(i%9999,1,0);
            y[i%9999]--;
            locate(x[i%9999],y[i%9999]);
            if(kkk[i%9999]<20)
            cout<<"#";
            else cout<<"$";
        }
    }
    kkk[i%9999]++;
    kkk[i%9999]%=40;
    _jing_((i+1)%9999);
}
void comple_boss(int i,int y)//_clean
{
    while(--i>=y)
    {
        switch(map[bossx][bossy+i])
        {
            case 0:
            locate(bossx,bossy+i);cout<<' ';
            break;
            case 1:locate(bossx,bossy+i);cout<<'=';
            break;
            case 2:locate(bossx,bossy+i);cout<<',';map[bossx][bossy+i]=0;
            break;
            case 3:locate(bossx,bossy+i);cout<<char(1);
            break;
            case 4:locate(bossx,bossy+i);cout<<'~';
            break;
            case 5:locate(bossx,bossy+i);cout<<'!';
            break;
            case 6:locate(bossx,bossy+i);cout<<'N';
            break;
        }
        switch(map[bossx+1][bossy+i])
        {
            case 0:
            locate(bossx+1,bossy+i);cout<<' ';
            break;
            case 1:locate(bossx+1,bossy+i);cout<<'=';
            break;
            case 2:locate(bossx+1,bossy+i);cout<<',';map[bossx][bossy+i]=0;
            break;
            case 3:locate(bossx+1,bossy+i);cout<<char(1);
            break;
            case 4:locate(bossx+1,bossy+i);cout<<'~';
            break;
            case 5:locate(bossx+1,bossy+i);cout<<'!';
            break;
            case 6:locate(bossx+1,bossy+i);cout<<'N';
            break;
        }
        switch(map[bossx-1][bossy+i])
        {
            case 0:
            locate(bossx-1,bossy+i);cout<<' ';
            break;
            case 1:locate(bossx-1,bossy+i);cout<<'=';
            break;
            case 2:locate(bossx-1,bossy+i);cout<<',';map[bossx][bossy+i]=0;
            break;
            case 3:locate(bossx-1,bossy+i);cout<<char(1);
            break;
            case 4:locate(bossx-1,bossy+i);cout<<'~';
            break;
            case 5:locate(bossx-1,bossy+i);cout<<'!';
            break;
            case 6:locate(bossx-1,bossy+i);cout<<'N';
            break;
        }
        switch(map[bossx][bossy+i-1])
        {
            case 0:
            locate(bossx,bossy+i-1);cout<<' ';
            break;
            case 1:locate(bossx,bossy+i-1);cout<<'=';
            break;
            case 2:locate(bossx,bossy+i-1);cout<<',';map[bossx][bossy+i]=0;
            break;
            case 3:locate(bossx,bossy+i-1);cout<<char(1);
            break;
            case 4:locate(bossx,bossy+i-1);cout<<'~';
            break;
            case 5:locate(bossx,bossy+i-1);cout<<'!';
            break;
            case 6:locate(bossx,bossy+i-1);cout<<'N';
            break;
        }
        switch(map[bossx][bossy+i+1])
        {
            case 0:
            locate(bossx,bossy+i+1);cout<<' ';
            break;
            case 1:locate(bossx,bossy+i+1);cout<<'=';
            break;
            case 2:locate(bossx,bossy+i+1);cout<<',';map[bossx][bossy+i]=0;
            break;
            case 3:locate(bossx,bossy+i+1);cout<<char(1);
            break;
            case 4:locate(bossx,bossy+i+1);cout<<'~';
            break;
            case 5:locate(bossx,bossy+i+1);cout<<'!';
            break;
            case 6:locate(bossx,bossy+i+1);cout<<'N';
            break;
        }
    }
}
int direboss;
bool ifBossMove;
void BOSS()//Boss_move
{
    if(direboss==1)
    {
        if(map[bossx+2][bossy]==3||map[bossx+2][bossy]==1)
        {
            direboss++;
            return;
        }
        comple_boss(1,0);
        bossx++;
        locate(bossx,bossy);
        locate(bossx,bossy);cout<<"A";
        locate(bossx-1,bossy);cout<<"V";
        locate(bossx+1,bossy);cout<<"#";
        locate(bossx,bossy-1);cout<<"/";
        locate(bossx,bossy+1);cout<<"\\";
    }
    if(direboss==3)
    {
        if(bossx-2<0||map[bossx-2][bossy]==3||map[bossx-2][bossy]==1)
        {
            direboss++;
            return;
        }
        comple_boss(1,0);
        bossx--;
        locate(bossx,bossy);
        locate(bossx,bossy);cout<<"A";
        locate(bossx-1,bossy);cout<<"V";
        locate(bossx+1,bossy);cout<<"#";
        locate(bossx,bossy-1);cout<<"/";
        locate(bossx,bossy+1);cout<<"\\";
    }
    if(direboss==2)
    {
        if(map[bossx][bossy+2]==3||map[bossx][bossy+2]==1)
        {
            direboss++;
            return;
        }
        comple_boss(1,0);
        bossy++;
        locate(bossx,bossy);
        locate(bossx,bossy);cout<<"A";
        locate(bossx-1,bossy);cout<<"V";
        locate(bossx+1,bossy);cout<<"#";
        locate(bossx,bossy-1);cout<<"/";
        locate(bossx,bossy+1);cout<<"\\";
    }
    if(direboss==4)
    {
        if(bossy-2<0||map[bossx][bossy-2]==3||map[bossx][bossy-2]==1)
        {
            direboss++;
            return;
        }
        comple_boss(1,0);
        bossy--;
        locate(bossx,bossy);
        locate(bossx,bossy);cout<<"A";
        locate(bossx-1,bossy);cout<<"V";
        locate(bossx+1,bossy);cout<<"#";
        locate(bossx,bossy-1);cout<<"/";
        locate(bossx,bossy+1);cout<<"\\";
    }
}
int xO[10000000],yO[10000000],cntO=1,liveO[10000000];//井母(O)(坐标、数量、存活(0:存活/1:不活)) 
int kkO[10000000];//O行动方向(母路)
int xo[40000000],yo[40000000],cnto=0,liveo[40000000],inwatero[10000000];//井母的追随者(坐标、数量、存活(0:存活/1:不活)) 
int kko[10000000];//追随者行动方向 
int xK[10000000],yK[10000000],cntK=1,liveK[10000000];//K坐标,数量,是否存活(0:live/1:dead) 
int kkK[10000000];
void compleO(int z,int i,int y)//O_clean 
{
    while(--i>=y)
    {
        switch(map[xO[z]][yO[z]+i])
        {
            case 0:locate(xO[z],yO[z]+i);cout<<'W';map[xO[z]][yO[z]+i]=2;break;
            case 1:locate(xO[z],yO[z]+i);cout<<'=';break;
            case 2:locate(xO[z],yO[z]+i);cout<<'W';break;
            case 3:locate(xO[z],yO[z]+i);cout<<char(1);break;
            case 4:locate(xO[z],yO[z]+i);cout<<'~';break;
            case 5:locate(xO[z],yO[z]+i);cout<<'!';break;
            case 6:locate(xO[z],yO[z]+i);cout<<'N';break;
        }
        if(xO[z]==bossx&&yO[z]+i==bossy)
        {
            locate(xO[z],yO[z]+i);
            cout<<"A";
        }
        if(xO[z]==bossx+1&&yO[z]+i==bossy)
        {
            locate(xO[z],yO[z]+i);
            cout<<"#";
        }
        if(xO[z]==bossx-1&&yO[z]+i==bossy)
        {
            locate(xO[z],yO[z]+i);
            cout<<"V";
        }
        if(xO[z]==bossx&&yO[z]+i==bossy-1)
        {
            locate(xO[z],yO[z]+i);
            cout<<"/";
        }
        if(xO[z]==bossx&&yO[z]+i==bossy+1)
        {
            locate(xO[z],yO[z]+i);
            cout<<"\\";
        }
    }
}
void compleo(int z,int i,int y)//#_clean(o)
{
    while(--i>=y)
    {
        switch(map[xo[z]][yo[z]+i])
        {
            case 0:locate(xo[z],yo[z]+i);cout<<' ';break;
            case 1:locate(xo[z],yo[z]+i);cout<<'=';break;
            case 2:locate(xo[z],yo[z]+i);cout<<',';map[xo[z]][yo[z]+i]=0;break;
            case 3:locate(xo[z],yo[z]+i);cout<<char(1);break;
            case 4:locate(xo[z],yo[z]+i);cout<<'~';break;
            case 5:locate(xo[z],yo[z]+i);cout<<'!';break;
            case 6:locate(xo[z],yo[z]+i);cout<<'N';break;
        }
        if(xo[z]==bossx&&yo[z]+i==bossy)
        {
            locate(xo[z],yo[z]+i);
            cout<<"A";
        }
        if(xo[z]==bossx+1&&yo[z]+i==bossy)
        {
            locate(xo[z],yo[z]+i);
            cout<<"#";
        }
        if(xo[z]==bossx-1&&yo[z]+i==bossy)
        {
            locate(xo[z],yo[z]+i);
            cout<<"V";
        }
        if(xo[z]==bossx&&yo[z]+i==bossy-1)
        {
            locate(xo[z],yo[z]+i);
            cout<<"/";
        }
        if(xo[z]==bossx&&yo[z]+i==bossy+1)
        {
            locate(xo[z],yo[z]+i);
            cout<<"\\";
        }
    }
}
void O(int i)//O_move
{
    if(i>cntO)return;
    if(liveO[i%9999])
    {
        O((i+1)%9999);
        return;
    }
    if(kkO[i%9999]<=10||kkO[i%9999]>=30)
    {
        if(x1>xO[i%9999])
        {
            if(map[xO[i%9999]+1][yO[i%9999]]==3||map[xO[i%9999]+1][yO[i%9999]]==1)
            {
                O((i+1)%9999);
                return;
            }
            compleO(i%9999,1,0);
            xO[i%9999]++;
            locate(xO[i%9999],yO[i%9999]);
            cout<<"O";
        }
        if(x1<xO[i%9999])
        {
            if(xO[i%9999]-1<0||map[xO[i%9999]-1][yO[i%9999]]==3||map[xO[i%9999]-1][yO[i%9999]]==1)
            {
                O((i+1)%9999);
                return;
            }
            compleO(i%9999,1,0);
            xO[i%9999]--;
            locate(xO[i%9999],yO[i%9999]);
            cout<<"O";
        }
    }
    else
    {
        if(y1>yO[i%9999])
        {
            if(map[xO[i%9999]][yO[i%9999]+1]==3||map[xO[i%9999]][yO[i%9999]+1]==1)
            {
                O((i+1)%9999);
                return;
            }
            compleO(i%9999,1,0);
            yO[i%9999]++;
            locate(xO[i%9999],yO[i%9999]);
            cout<<"O";
        }
        if(y1<yO[i%9999])
        {
            if(yO[i%9999]-1<0||map[xO[i%9999]][yO[i%9999]-1]==3||map[xO[i%9999]][yO[i%9999]-1]==1)
            {
                O((i+1)%9999);
                return;
            }
            compleO(i%9999,1,0);
            yO[i%9999]--;
            locate(xO[i%9999],yO[i%9999]);
            cout<<"O";
        }
    }
    kkO[i%9999]++;
    kkO[i%9999]%=40;
    O((i+1)%9999);
}
void compleK(int z,int i,int y)//O_clean 
{
    while(--i>=y)
    {
        switch(map[xK[z]][yK[z]+i])
        {
            case 0:locate(xK[z],yK[z]+i);cout<<'W';map[xK[z]][yK[z]+i]=2;break;
            case 1:locate(xK[z],yK[z]+i);cout<<'=';break;
            case 2:locate(xK[z],yK[z]+i);cout<<'W';break;
            case 3:locate(xK[z],yK[z]+i);cout<<char(1);break;
            case 4:locate(xK[z],yK[z]+i);cout<<'~';break;
            case 5:locate(xK[z],yK[z]+i);cout<<'!';break;
            case 6:locate(xK[z],yK[z]+i);cout<<'N';break;
        }
        if(xK[z]==bossx&&yK[z]+i==bossy)
        {
            locate(xK[z],yK[z]+i);
            cout<<"A";
        }
        if(xK[z]==bossx+1&&yK[z]+i==bossy)
        {
            locate(xK[z],yK[z]+i);
            cout<<"#";
        }
        if(xK[z]==bossx-1&&yK[z]+i==bossy)
        {
            locate(xK[z],yK[z]+i);
            cout<<"V";
        }
        if(xK[z]==bossx&&yK[z]+i==bossy-1)
        {
            locate(xK[z],yK[z]+i);
            cout<<"/";
        }
        if(xK[z]==bossx&&yK[z]+i==bossy+1)
        {
            locate(xK[z],yK[z]+i);
            cout<<"\\";
        }
    }
}
void K(int i)//K_move
{
    if(i>cntK)return;
    if(liveK[i%9999])
    {
        K((i+1)%9999);
        return;
    }
    if(kkK[i%9999]<=10||kkK[i%9999]>=30)
    {
        if(x1>xK[i%9999])
        {
            if(map[xK[i%9999]+1][yK[i%9999]]==3||map[xK[i%9999]+1][yK[i%9999]]==1)
            {
                cout<<"K";
                K((i+1)%9999);
                return;
            }
            compleK(i%9999,1,0);
            xK[i%9999]++;
            locate(xK[i%9999],yK[i%9999]);
            cout<<"K";
        }
        if(x1<xK[i%9999])
        {
            if(xK[i%9999]-1<0||map[xK[i%9999]-1][yK[i%9999]]==3||map[xK[i%9999]-1][yK[i%9999]]==1)
            {
                cout<<"K";
                K((i+1)%9999);
                return;
            }
            compleK(i%9999,1,0);
            xK[i%9999]--;
            locate(xK[i%9999],yK[i%9999]);
            cout<<"K";
        }
    }
    else
    {
        if(y1>yK[i%9999])
        {
            if(map[xK[i%9999]][yK[i%9999]+1]==3||map[xK[i%9999]][yK[i%9999]+1]==1)
            {
                cout<<"K";
                K((i+1)%9999);
                return;
            }
            compleK(i%9999,1,0);
            yK[i%9999]++;
            locate(xK[i%9999],yK[i%9999]);
            cout<<"K";
        }
        if(y1<yK[i%9999])
        {
            if(yK[i%9999]-1<0||map[xK[i%9999]][yK[i%9999]-1]==3||map[xK[i%9999]][yK[i%9999]-1]==1)
            {
                cout<<"K";
                K((i+1)%9999);
                return;
            }
            compleK(i%9999,1,0);
            yK[i%9999]--;
            locate(xK[i%9999],yK[i%9999]);
            cout<<"K";
        }
    }
    kkK[i%9999]++;
    kkK[i%9999]%=40;
    K((i+1)%9999);
}
void o(int i)//#_move(o)
{
    if(i>cnto)return;
    if(liveo[i%9999])
    {
        o((i+1)%9999);
        return;
    }
    if(kko[i%9999]<=10||kko[i%9999]>=30)
    {
        if(x1>xo[i%9999])
        {
            if(map[xo[i%9999]+1][yo[i%9999]]==3||map[xo[i%9999]+1][yo[i%9999]]==1)
            {
                o((i+1)%9999);
                return;
            }
            compleo(i%9999,1,0);
            xo[i%9999]++;
            locate(xo[i%9999],yo[i%9999]);
            if(kkk[i%9999]<20)
            cout<<"#";
            else cout<<"$";
        }
        if(x1<xo[i%9999])
        {
            if(xo[i%9999]-1<0||map[xo[i%9999]-1][yo[i%9999]]==3||map[xo[i%9999]-1][yo[i%9999]]==1)
            {
                o((i+1)%9999);
                return;
            }
            compleo(i%9999,1,0);
            xo[i%9999]--;
            locate(xo[i%9999],yo[i%9999]);
            if(kkk[i%9999]<20)
            cout<<"#";
            else cout<<"$";
        }
    }
    else
    {
        if(y1>yo[i%9999])
        {
            if(map[xo[i%9999]][yo[i%9999]+1]==3||map[xo[i%9999]][yo[i%9999]+1]==1)
            {
                o((i+1)%9999);
                return;
            }
            compleo(i%9999,1,0);
            yo[i%9999]++;
            locate(xo[i%9999],yo[i%9999]);
            if(kkk[i%9999]<20)
            cout<<"#";
            else cout<<"$";
        }
        if(y1<yo[i%9999])
        {
            if(yo[i%9999]-1<0||map[xo[i%9999]][yo[i%9999]-1]==3||map[xo[i%9999]][yo[i%9999]-1]==1)
            {
                o((i+1)%9999);
                return;
            }
            compleo(i%9999,1,0);
            yo[i%9999]--;
            locate(xo[i%9999],yo[i%9999]);
            if(kkk[i%9999]<20)
            cout<<"#";
            else cout<<"$";
        }
    }
    kko[i%9999]++;
    kko[i%9999]%=40;
    o((i+1)%9999);
}
int kkk03;//计数器左端点(diffy>=6基本就用不到了) 
bool luogu,luogu2;//确保#/O/.每次只走一字节 
void Bullet(int i)//子弹行动 
{
    if(map[bltx[i]+DIER[bltdier[i]][0]][blty[i]+DIER[bltdier[i]][1]]!=3&&bltx[i]+DIER[bltdier[i]][0]>=0&&blty[i]+DIER[bltdier[i]][1]>=0)
    {
        for(int j=0;j<=cnt;j++)
        {
            if(live[j%9999])continue;
            if(bltx[i]==x[j%9999]&&blty[i]==y[j%9999])
            {
                    cnt1++,live[j%9999]=1;//打到算分 
            }
        }
        for(int j=0;j<=cnto;j++)
        {
            if(liveo[j%9999])continue;
            if(bltx[i]==xo[j%9999]&&blty[i]==yo[j%9999])
            {
                    cnt1++,liveo[j%9999]=1;
            }
        }
        for(int j=0;j<=cntK;j++)
        {
            if(liveK[j%9999])continue;
            if(bltx[i]==xK[j%9999]&&blty[i]==yK[j%9999])
            {
                    cnt1++,liveK[j%9999]=1;
            }
        }
        locate(bltx[i],blty[i]);
        compleblt(i,1,0);
        bltx[i]+=DIER[bltdier[i]][0];
        blty[i]+=DIER[bltdier[i]][1];
        locate(bltx[i],blty[i]);
        cout<<'.';
    }
    else//子弹反弹 
    {
        switch(bltdier[i])
        {
            case 1:bltdier[i]=2;break;
            case 2:bltdier[i]=1;break;
            case 3:bltdier[i]=4;break;
            case 4:bltdier[i]=3;break;
            case 5:if(map[bltx[i]-1][blty[i]+1]!=3&&bltx[i]-1>=0&&blty[i]+1>=0)bltdier[i]=6;
            if(map[bltx[i]+1][blty[i]-1]!=3&&bltx[i]+1>=0&&blty[i]-1>=0)bltdier[i]=7;
            break;
            case 6:if(map[bltx[i]-1][blty[i]-1]!=3&&bltx[i]-1>=0&&blty[i]-1>=0)bltdier[i]=5;
            if(map[bltx[i]+1][blty[i]+1]!=3&&bltx[i]+1>=0&&blty[i]+1>=0)bltdier[i]=8;
            break;
            case 7:if(map[bltx[i]-1][blty[i]-1]!=3&&bltx[i]-1>=0&&blty[i]-1>=0)bltdier[i]=5;
            if(map[bltx[i]+1][blty[i]+1]!=3&&bltx[i]+1>=0&&blty[i]+1>=0)bltdier[i]=8;
            break;
            case 8:if(map[bltx[i]-1][blty[i]+1]!=3&&bltx[i]-1>=0&&blty[i]+1>=0)bltdier[i]=6;
            if(map[bltx[i]+1][blty[i]-1]!=3&&bltx[i]+1>=0&&blty[i]-1>=0)bltdier[i]=7;
            break;
        }
    }
}
void Bullet_ene(int i)//ene_子弹行动 
{
    if(map[bltx_ene[i]+DIER[bltdier_ene[i]][0]][blty_ene[i]+DIER[bltdier_ene[i]][1]]!=3&&bltx_ene[i]+DIER[bltdier_ene[i]][0]>=0&&blty_ene[i]+DIER[bltdier_ene[i]][1]>=0)
    {
        if(bltx_ene[i]==x1&&blty_ene[i]==y1)
        {
            cnt2+=5;
            liveblt_ene[i]=0;
        }
        locate(bltx_ene[i],blty_ene[i]);
        compleblt_ene(i,1,0);
        bltx_ene[i]+=DIER[bltdier_ene[i]][0];
        blty_ene[i]+=DIER[bltdier_ene[i]][1];
        locate(10,0);
        cout<<"shooted";
        locate(bltx_ene[i],blty_ene[i]);
        cout<<'o';
    }
    else//子弹反弹 
    {
        switch(bltdier_ene[i])
        {
            case 1:bltdier_ene[i]=2;break;
            case 2:bltdier_ene[i]=1;break;
            case 3:bltdier_ene[i]=4;break;
            case 4:bltdier_ene[i]=3;break;
            case 5:if(map[bltx_ene[i]-1][blty_ene[i]+1]!=3&&bltx_ene[i]-1>=0&&blty_ene[i]+1>=0)bltdier_ene[i]=6;
            if(map[bltx_ene[i]+1][blty_ene[i]-1]!=3&&bltx_ene[i]+1>=0&&blty_ene[i]-1>=0)bltdier_ene[i]=7;
            break;
            case 6:if(map[bltx_ene[i]-1][blty_ene[i]-1]!=3&&bltx_ene[i]-1>=0&&blty_ene[i]-1>=0)bltdier_ene[i]=5;
            if(map[bltx_ene[i]+1][blty_ene[i]+1]!=3&&bltx_ene[i]+1>=0&&blty_ene[i]+1>=0)bltdier_ene[i]=8;
            break;
            case 7:if(map[bltx_ene[i]-1][blty_ene[i]-1]!=3&&bltx_ene[i]-1>=0&&blty_ene[i]-1>=0)bltdier_ene[i]=5;
            if(map[bltx_ene[i]+1][blty_ene[i]+1]!=3&&bltx_ene[i]+1>=0&&blty_ene[i]+1>=0)bltdier_ene[i]=8;
            break;
            case 8:if(map[bltx_ene[i]-1][blty_ene[i]+1]!=3&&bltx_ene[i]-1>=0&&blty_ene[i]+1>=0)bltdier_ene[i]=6;
            if(map[bltx_ene[i]+1][blty_ene[i]-1]!=3&&bltx_ene[i]+1>=0&&blty_ene[i]-1>=0)bltdier_ene[i]=7;
            break;
        }
    }
}

void shopping_mall_painting()//顾名思义 
{
    locate(1,3);
    cout<<"<";
    locate(1,7);cout<<"    ";
    locate(1,5);
    cout<<"$:"<<cnt1;
    locate(1,13);cout<<"    ";
    locate(1,11);
    cout<<"%:"<<A_life;
    locate(1,19);cout<<"    ";
    locate(1,17);
    cout<<".:"<<bltnum;
    locate(5,10);
    cout<<"---------";
    locate(6,10);
    cout<<"|       |";
    locate(7,10);
    cout<<"|   .   |";
    locate(8,10);
    cout<<"|       |";
    locate(9,9);
    cout<<"子弹*10(25$)";
    locate(11,14);
    cout<<"B";
    locate(5,25);
    cout<<"---------";
    locate(6,25);
    cout<<"|       |";
    locate(7,25);
    cout<<"|   %   |";
    locate(8,25);
    cout<<"|       |";
    locate(9,23);
    cout<<"生命上线+10(500$)";
    locate(11,29);
    cout<<"B";
    locate(29,1);cout<<"选择/确定:空格键,推出:Esc键或将框移至<上点空格"; 
}
void shopping(int &money)//商铺 
{
    system("cls");
    int lshx,x_shop=10,y_shop=10;
    locate(x_shop-1,y_shop);cout<<"-";
    locate(x_shop+1,y_shop);cout<<"-";
    locate(x_shop,y_shop-1);cout<<"|";
    locate(x_shop,y_shop+1);cout<<"|";
    locate(x_shop-1,y_shop+1);cout<<"+";
    locate(x_shop+1,y_shop+1);cout<<"+";
    locate(x_shop-1,y_shop-1);cout<<"+";
    locate(x_shop+1,y_shop-1);cout<<"+";
    shopping_mall_painting(); 
    while(1)
    {
        shopping_mall_painting();
        lshx=getch();
        if(lshx==27){
            x1+=2;
            y1+=2;
            locate(0,0);
             for(int i=0;i<=30;i++)//map_printing
                {
                    for(int j=0;j<=118;j++)
                    {
                        if(map[i][j]==0)cout<<" ";
                        if(map[i][j]==1)cout<<'=';
                        if(map[i][j]==2)cout<<'W';
                        if(map[i][j]==3)cout<<char(1);
                        if(map[i][j]==4)cout<<'~';
                        if(map[i][j]==5)cout<<'!';
                        if(map[i][j]==6)cout<<'N';
                        if(map[i][j]==7)cout<<',';
                    }
                    cout<<endl;
                }
                return;//回到地图   
        }
        locate(x_shop-1,y_shop);cout<<" ";
        locate(x_shop+1,y_shop);cout<<" ";
        locate(x_shop,y_shop-1);cout<<" ";
        locate(x_shop,y_shop+1);cout<<" ";
        locate(x_shop-1,y_shop+1);cout<<" ";
        locate(x_shop+1,y_shop+1);cout<<" ";
        locate(x_shop-1,y_shop-1);cout<<" ";
        locate(x_shop+1,y_shop-1);cout<<" ";
        lshx=getch();
        if(lshx==27){
            x1+=2;
            y1+=2;
            locate(0,0);
             for(int i=0;i<=30;i++)//map_printing
                {
                    for(int j=0;j<=118;j++)
                    {
                        if(map[i][j]==0)cout<<" ";
                        if(map[i][j]==1)cout<<'=';
                        if(map[i][j]==2)cout<<'W';
                        if(map[i][j]==3)cout<<char(1);
                        if(map[i][j]==4)cout<<'~';
                        if(map[i][j]==5)cout<<'!';
                        if(map[i][j]==6)cout<<'N';
                        if(map[i][j]==7)cout<<',';
                    }
                    cout<<endl;
                }
                return;//回到地图   
        }
        switch(lshx)
        {
            case 72:if(x_shop>=2)x_shop--;break;
            case 75:if(y_shop>=2)y_shop--;break;
            case 80:if(x_shop<=28)x_shop++;break;
            case 77:if(y_shop<=116)y_shop++;break;
        }
        locate(x_shop-1,y_shop);cout<<"-";
        locate(x_shop+1,y_shop);cout<<"-";
        locate(x_shop,y_shop-1);cout<<"|";
        locate(x_shop,y_shop+1);cout<<"|";
        locate(x_shop-1,y_shop+1);cout<<"+";
        locate(x_shop+1,y_shop+1);cout<<"+";
        locate(x_shop-1,y_shop-1);cout<<"+";
        locate(x_shop+1,y_shop-1);cout<<"+";
        if(x_shop==11&&(y_shop==14||y_shop==29))
        {
            locate(x_shop,y_shop);
            cout<<"B";
        } 
        if(x_shop==1&&y_shop==3)
        {
            locate(x_shop,y_shop);
            cout<<"<";
            int lshy=getch();
            if(lshy==' ')
            {
                x1+=2;
                y1+=2;
                locate(0,0);
                for(int i=0;i<=30;i++)//map_printing
                {
                    for(int j=0;j<=118;j++)
                    {
                        if(map[i][j]==0)cout<<" ";
                        if(map[i][j]==1)cout<<'=';
                        if(map[i][j]==2)cout<<'W';
                        if(map[i][j]==3)cout<<char(1);
                        if(map[i][j]==4)cout<<'~';
                        if(map[i][j]==5)cout<<'!';
                        if(map[i][j]==6)cout<<'N';
                        if(map[i][j]==7)cout<<',';
                    }
                    cout<<endl;
                }
                return;//回到地图 
            }
            else
            {
                locate(x_shop-1,y_shop);cout<<" ";
                locate(x_shop+1,y_shop);cout<<" ";
                locate(x_shop,y_shop-1);cout<<" ";
                locate(x_shop,y_shop+1);cout<<" ";
                locate(x_shop-1,y_shop+1);cout<<" ";
                locate(x_shop+1,y_shop+1);cout<<" ";
                locate(x_shop-1,y_shop-1);cout<<" ";
                locate(x_shop+1,y_shop-1);cout<<" ";
                lshx=getch();
                switch(lshx)
                {
                    case 72:if(x_shop>=2)x_shop--;break;
                    case 75:if(y_shop>=2)y_shop--;break;
                    case 80:if(x_shop<=28)x_shop++;break;
                    case 77:if(y_shop<=116)y_shop++;break;
                }
                locate(x_shop-1,y_shop);cout<<"-";
                locate(x_shop+1,y_shop);cout<<"-";
                locate(x_shop,y_shop-1);cout<<"|";
                locate(x_shop,y_shop+1);cout<<"|";
                locate(x_shop-1,y_shop+1);cout<<"+";
                locate(x_shop+1,y_shop+1);cout<<"+";
                locate(x_shop-1,y_shop-1);cout<<"+";
                locate(x_shop+1,y_shop-1);cout<<"+";
            }
        }
        if(x_shop==11&&y_shop==14)//bullet_buy 
        {
            locate(x_shop,y_shop);
            cout<<"B";
            int lshy=getch();
            if(lshy==' ')
            {
                if(cnt1>=25)
                {
                    cnt1-=25;
                    bltnum+=10;
                }
                else{
                    locate(10,16);
                    cout<<"!";//没钱 
                    int lshz=getch();
                    locate(10,16);
                    cout<<' ';
                }
            }
            else
            {
                locate(x_shop-1,y_shop);cout<<" ";
                locate(x_shop+1,y_shop);cout<<" ";
                locate(x_shop,y_shop-1);cout<<" ";
                locate(x_shop,y_shop+1);cout<<" ";
                locate(x_shop-1,y_shop+1);cout<<" ";
                locate(x_shop+1,y_shop+1);cout<<" ";
                locate(x_shop-1,y_shop-1);cout<<" ";
                locate(x_shop+1,y_shop-1);cout<<" ";
                lshx=getch();
                switch(lshx)
                {
                    case 72:if(x_shop>=2)x_shop--;break;
                    case 75:if(y_shop>=2)y_shop--;break;
                    case 80:if(x_shop<=28)x_shop++;break;
                    case 77:if(y_shop<=116)y_shop++;break;
                }
                locate(x_shop-1,y_shop);cout<<"-";
                locate(x_shop+1,y_shop);cout<<"-";
                locate(x_shop,y_shop-1);cout<<"|";
                locate(x_shop,y_shop+1);cout<<"|";
                locate(x_shop-1,y_shop+1);cout<<"+";
                locate(x_shop+1,y_shop+1);cout<<"+";
                locate(x_shop-1,y_shop-1);cout<<"+";
                locate(x_shop+1,y_shop-1);cout<<"+";
            }
        }
        if(x_shop==11&&y_shop==29)//life_buy
        {
            locate(x_shop,y_shop);
            cout<<"B";
            int lshy=getch();
            if(lshy==' ')
            {
                if(cnt1>=500)
                {
                    cnt1-=500;
                    A_life+=10;
                }
                else{
                    locate(10,31);
                    cout<<"!";
                    int lshz=getch();
                    locate(10,31);
                    cout<<' ';
                }
            }
            else
            {
                lshx=getch();
                locate(x_shop-1,y_shop);cout<<" ";
                locate(x_shop+1,y_shop);cout<<" ";
                locate(x_shop,y_shop-1);cout<<" ";
                locate(x_shop,y_shop+1);cout<<" ";
                locate(x_shop-1,y_shop+1);cout<<" ";
                locate(x_shop+1,y_shop+1);cout<<" ";
                locate(x_shop-1,y_shop-1);cout<<" ";
                locate(x_shop+1,y_shop-1);cout<<" ";
                switch(lshx)
                {
                    case 72:if(x_shop>=2)x_shop--;break;
                    case 75:if(y_shop>=2)y_shop--;break;
                    case 80:if(x_shop<=28)x_shop++;break;
                    case 77:if(y_shop<=116)y_shop++;break;
                }
                locate(x_shop-1,y_shop);cout<<"-";
                locate(x_shop+1,y_shop);cout<<"-";
                locate(x_shop,y_shop-1);cout<<"|";
                locate(x_shop,y_shop+1);cout<<"|";
                locate(x_shop-1,y_shop+1);cout<<"+";
                locate(x_shop+1,y_shop+1);cout<<"+";
                locate(x_shop-1,y_shop-1);cout<<"+";
                locate(x_shop+1,y_shop-1);cout<<"+";
            }
        }
    }
}
bool if_blt_ene;
bool reporter;
void main1()
{
    while(1)
    {
        locate(0,0);cout<<"@";
        locate(0,20);cout<<second<<' '<<fir;
        second=clock();
        if((second-fir)>=300&&luogu==0)//一秒两次左右 
        {
            fir=clock();
            luogu=1;
            second=time(NULL);
            O(1),o(1);
            _jing_(1);
            K(1);
            if((int)difftime(second,first)%25==0&&cnt2>=1)//回血 
            {
                cnt2--;
            }
            if(map[x1][y1]==1&&cnt2>=1)//安全屋回血 
            {
                cnt2--;
            }
            if((int)difftime(second,first)%abs(11-diffy)==0&&cnt<=99*diffy)//#_number++ 
            {
                cnt++;
                live[cnt]=0;
            }
            else if(cnt>99*diffy)
            {
                for(int i=1;i<=cnt;i++)
                {
                    if(live[i]==1)continue;
                    locate(x[i],y[i]);
                    cout<<"H";
                }
                cnt=0;
            }
            if((int)difftime(second,first)%50==0&&cntO<=5*diffy){//O_number++
                cntO++;
                liveO[cntO]=0;
            }
            else if(cntO>=6*diffy)
            {
                for(int i=1;i<=cntO;i++)
                {
                    if(liveO[i]==1)continue;
                    locate(xO[i],yO[i]);
                    cout<<"H";
                }
                cntO=0;
            }
            if((int)difftime(second,first)%50==0&&cntK<=5*diffy){//K_number++
                cntK++;
                liveK[cntK]=0;
            }
            else if(cntK>=6*diffy)
            {
                for(int i=1;i<=cntK;i++)
                {
                    if(liveK[i]==1)continue;
                    locate(xK[i],yK[i]);
                    cout<<"H";
                }
                cntK=0;
            }
            if((int)difftime(second,first)%50==10)//#_number++(o) 
            {
                for(int i=0;i<=cntO;i++)
                {
                    if(liveO[i]==1)continue;//O已经寄了 
                    srand(time(0));
                    if(rand()%20==1)continue;
                    for(int j=0;j<4;j++)
                    {
                        if(xO[i]+2*direct[j][0]>0&&yO[i]+2*direct[j][1]>0&&map[xO[i]+2*direct[j][0]][yO[i]+2*direct[j][1]]!=3)
                        {
                            xo[++cnto]=xO[i]+2*direct[j][0];
                            yo[cnto]=yO[i]+2*direct[j][1];
                            liveo[cnto]=0;
                        }
                    }
                }
            }
            int rang=rand()%5;
            if(rang==1)
            {
                xo[++cnto]=bossx;
                yo[cnto]=bossy;
                liveo[cnto]=0;
            }
            if((int)difftime(second,first)%20==10&&if_blt_ene==0)//blt_number++(K) 
            {
                if_blt_ene=1;
                for(int i=0;i<=cntK;i++)
                {
                    if(liveK[i]==1)continue;//K已经寄了 
                    if(rand()%20==1)continue;
                    if(rand()%2==0)
                    {
                        for(int j=0;j<4;j++)
                        {
                            cntblt_ene++;
                            bltdier_ene[cntblt_ene]=j+5;
                            liveblt_ene[cntblt_ene]=1;
                            bltx_ene[cntblt_ene]=xK[i],blty_ene[cntblt_ene]=yK[i];
                        }
                    }
                    else{
                        for(int j=0;j<4;j++)
                        {
                            cntblt_ene++;
                            bltdier_ene[cntblt_ene]=j;
                            liveblt_ene[cntblt_ene]=1;
                            bltx_ene[cntblt_ene]=xK[i],blty_ene[cntblt_ene]=yK[i];
                        }
                    }
                }
            }
            else if_blt_ene=0;
            if((int)difftime(second,first)%10==5)//BOSS
            {
                ifBossMove=1;
                direboss++;
                int ranf=rand()%3;
                if(ranf==2)direboss++;
            }
            if((int)difftime(second,first)%10==10)//BOSS
            {
                ifBossMove=0;
            }
            if(ifBossMove==1)
            {
                direboss%=5;
                BOSS();
            }
            else{
                locate(bossx,bossy);cout<<"A";
                locate(bossx-1,bossy);cout<<"V";
                locate(bossx+1,bossy);cout<<"#";
                locate(bossx,bossy-1);cout<<"/";
                locate(bossx,bossy+1);cout<<"\\";
            }
            if(cnt2<0)cnt2=0;//防止血量越界 
            if(map[x1][y1]==5)//踩上岩浆 
            {
                onfire=true;//寄 
            }
            if(map[x1][y1]==4)//游泳 
            {
                onfire=false;//芜湖~ 
                uinwater++;
            }
            else
            {
                uinwater=0;
            }
            if(onfire==true&&(int)(difftime(first,second))%3==0)//闪屏警告 
            {
                cnt2++;
                locate(x1,y1);
                cout<<"!";
                Sleep(50);
                locate(x1,y1);
                cout<<"@";
                Sleep(50);
                locate(x1,y1);
                cout<<"!";
                Sleep(50);
                locate(x1,y1);
                cout<<"@";
                Sleep(50);
            }
            if(uinwater>=10)//闪屏警告 
            {
                cnt2++;
                uinwater-=3;
                locate(x1,y1);
                cout<<"~";
                Sleep(50);
                locate(x1,y1);
                cout<<"@";
                Sleep(50);
                locate(x1,y1);
                cout<<"~";
                Sleep(50);
                locate(x1,y1);
                cout<<"@";
                Sleep(50);
            }
            if(onfire==true)
            {
                locate(3,0);
                cout<<"!!!!";//信息码 
            }
            else 
            {
                locate(3,0);
                cout<<"safe     ";//信息码 
            }
            if(map[x1][y1]==4)//信息码 
            {
                locate(3,0);
                for(int i=1;i<=10-uinwater;i++)
                {
                    cout<<"o";
                }
                for(int i=1;i<=uinwater;i++)
                {
                    cout<<" ";
                }

            }
            if(cnt2>A_life)//寄 
            {
                first=time(NULL);
                cout<<"\n死亡  "<<endl;
                Sleep(3000);
                cout<<"得分:"<<cnt1<<endl;
                Sleep(5000);
                cnt2=0;
                cnt1=0;
                system("cls");
                first=time(NULL);
                main();
            }
            shuafen++;
            locate(x1,y1);
            cout<<"@";//防止卡帧 
            if(shuafen%500==10)
            {
                cntfen++; 
                srand(time(0));
                fenx[cntfen%10]=rand()%5+3;
                feny[cntfen%10]=rand()%5+5;
                fenlive[cntfen%10]=1;
                if(cntfen>=10)
                {
                    locate(fenx[cntfen%10],feny[cntfen%10]);
                    cout<<" ";
                }
            }
            for(int i=0;i<=cntfen;i++)
            {
                if(fenlive[i%10]==0)continue;
                locate(fenx[i%10],feny[i%10]);
                cout<<"*";//双倍经验! 
            }
            for(int i=0;i<=cntO;i++)//吃井母 
            {
                if(liveO[i%9999])continue;
                srand(time(0));
                if(rand()%250==1)continue;
                if(x1==xO[i%9999]&&y1==yO[i%9999])
                {
                    if(map[x1][y1]!=1)
                    {
                        locate(x1,y1);
                        cout<<"@",cnt1+=2,liveO[i%9999]=1;
                        bltnum+=5;
                        Sleep(10);
                    }
                }
                if(map[xO[i%9999]][yO[i%9999]]==5)//岩浆烧井母 
                {
                    liveO[i%9999]=1;
                    compleO(i%9999,1,0);
                }
            }
            for(int i=0;i<=cnt;i++)//#_meeting 
            {
                if(live[i%9999])continue;
                srand(time(0));
                if(rand()%250==1)continue;
                if(x1==x[i%9999]&&y1==y[i%9999])
                {
                    if(map[x1][y1]!=1)
                    {
                        locate(x1,y1);
                        if(kkk[i%9999]>=20)cout<<"@",cnt1++,live[i%9999]=1;//寄 
                        else //耶 
                        {
                            cout<<"#",cnt2++,kkk03++;
                        }
                        locate(0,2);cout<<"   ";//防卡帧+在线输出 
                        locate(0,0);cout<<"@:"<<cnt1<<endl;
                        locate(1,2);cout<<"  ";
                        locate(1,0);cout<<"%:"<<A_life-cnt2<<endl;
                        locate(2,2);cout<<"   ";
                        locate(2,0);cout<<".:"<<bltnum;
                    }
                }
                if(map[x[i%9999]][y[i%9999]]==5)//岩浆烧# 
                {
                    live[i%9999]=1;
                    comple(i%9999,1,0);
                }
                if(map[x[i%9999]][y[i%9999]]==4)//水淹# 
                {
                    inwater[i%9999]++;
                    if(inwater[i%9999]==5)comple(i%9999,1,0),live[i%9999]=1;
                }
            }
            for(int i=0;i<=cnto;i++)//#_meeting(o) 
            {
                if(liveo[i%9999])continue;
                srand(time(0));
                if(rand()%250==1)continue;
                if(x1==xo[i%9999]&&y1==yo[i%9999])
                {
                    if(map[x1][y1]!=1)
                    {
                        locate(x1,y1);
                        if(kko[i%9999]>=20)cout<<"@",cnt1++,liveo[i%9999]=1;
                        else 
                        {
                            cout<<"#",cnt2++,kkk03++;
                        }
                        locate(0,2);cout<<"   ";
                        locate(0,0);cout<<"@:"<<cnt1<<endl;
                        locate(1,2);cout<<"  ";
                        locate(1,0);cout<<"%:"<<A_life-cnt2<<endl;
                        locate(2,2);cout<<"   ";
                        locate(2,0);cout<<".:"<<bltnum;
                    }
                }
                if(map[xo[i%9999]][yo[i%9999]]==5)
                {
                    liveo[i%9999]=1;
                    compleo(i%9999,1,0);
                }
                if(map[xo[i%9999]][yo[i%9999]]==4)
                {
                    inwatero[i%9999]++;
                    if(inwatero[i%9999]==5)
                    compleo(i%9999,1,0),liveo[i%9999]=1;
                }
            }
            if(map[x1][y1]==6)shopping(cnt1);//go_shopping
        }
        else luogu=0;
        if((fir-second)%50==0&&luogu2==0)//让子弹飞 
        {
            luogu2=1;
            for(int i=0;i<=cntblt;i++)
            {
                if(liveblt[i]==1)Bullet(i),blt[i]++;
                if(blt[i]==50)blt[i]=0,liveblt[i]=0,compleblt(i,1,0);
                locate(x1,y1);
                cout<<"@";//防止被子弹淹没 
            }
            for(int i=0;i<=cntblt_ene;i++)
            {
                if(liveblt_ene[i]==1)Bullet_ene(i),blt_ene[i]++;
                if(blt_ene[i]==50)blt_ene[i]=0,liveblt_ene[i]=0,compleblt_ene(i,1,0);
            }
        }
        else luogu2=0;
//--------------------------------------------显著的分界线-------------------------------------------------
        bool lshbool=0;
        for(int i=0;i<=cntblt;i++)
        {
            if(liveblt[i]==1)
            {
                lshbool=1;
                break;
            } 
        }
        if(!lshbool)cntblt=0;
        lshbool=0;
        for(int i=0;i<=cntblt_ene;i++)
        {
            if(liveblt_ene[i]==1)
            {
                lshbool=1;
                break;
            } 
        }
        if(!lshbool)cntblt_ene=0;//可持续化发展 

        for(int i=0;i<=cnt;i++)//防止拿不到经验 
        {
            if(live[i%9999])continue;
            srand(time(0));
            if(rand()%250==1)continue;
            if(x1==x[i%9999]&&y1==y[i%9999])
            {
                if(map[x1][y1]!=1)
                {
                    locate(x1,y1);
                    if(kkk[i%9999]>=20)cout<<"@",cnt1++,live[i%9999]=1;
                }
            }
        }
        for(int i=0;i<=cnto;i++)
        {
            if(liveo[i%9999])continue;
            srand(time(0));
            if(rand()%250==1)continue;
            if(x1==xo[i%9999]&&y1==yo[i%9999])
            {
                if(map[x1][y1]!=1)
                {
                    locate(x1,y1);
                    if(kko[i%9999]>=20)cout<<"@",cnt1++,liveo[i%9999]=1;
                }
            }
        }
        for(int i=0;i<=cntfen;i++)//刷分 
        {
            if(fenlive[i%10]==0)continue;
            if(x1==fenx[i%10]&&y1==feny[i%10])
            {
                cnt1+=2;
                fenlive[i%10]=0;
            }
        }
        while(kbhit())//如果有输入 
        {
            locate(0,2);cout<<"   ";
            locate(0,0);cout<<"@:"<<cnt1<<endl;
            locate(1,2);cout<<"  ";
            locate(1,0);cout<<"%:"<<A_life-cnt2<<endl;
            locate(2,2);cout<<"   ";
            locate(2,0);cout<<".:"<<bltnum;
            int lshx;
            lshx=getch();
            if(lshx!='i'&&lshx!='j'&&lshx!='k'&&lshx!='l'&&lshx!='u'&&lshx!='o'&&lshx!='m'&&lshx!=',')
            {
                lshx=getch();
                switch(lshx)
                {
                    case 72:dir=0;break;
                    case 75:dir=1;break;
                    case 80:dir=2;break;
                    case 77:dir=3;break;
                    default:
                        main1();
                }
                if(x1+direct[dir][1]<0||y1+direct[dir][0]<0||map[x1+direct[dir][1]][y1+direct[dir][0]]==3)main1();
                comple1(1,0);
                x1+=direct[dir][1];
                y1+=direct[dir][0];
                locate(x1,y1);
                cout<<"@";
            }
            if(bltnum>0)//可以发射子弹 
            { 
                switch(lshx)
                {
                    case 'i':cntblt++;liveblt[cntblt]=1;bltx[cntblt]=x1,blty[cntblt]=y1;bltdier[cntblt]=1;bltnum--;break;
                    case 'k':cntblt++;liveblt[cntblt]=1;bltx[cntblt]=x1,blty[cntblt]=y1;bltdier[cntblt]=2;bltnum--;break;
                    case 'j':cntblt++;liveblt[cntblt]=1;bltx[cntblt]=x1,blty[cntblt]=y1;bltdier[cntblt]=3;bltnum--;break;
                    case 'l':cntblt++;liveblt[cntblt]=1;bltx[cntblt]=x1,blty[cntblt]=y1;bltdier[cntblt]=4;bltnum--;break;
                    case 'u':cntblt++;liveblt[cntblt]=1;bltx[cntblt]=x1,blty[cntblt]=y1;bltdier[cntblt]=5;bltnum--;break;
                    case 'o':cntblt++;liveblt[cntblt]=1;bltx[cntblt]=x1,blty[cntblt]=y1;bltdier[cntblt]=6;bltnum--;break;
                    case 'm':cntblt++;liveblt[cntblt]=1;bltx[cntblt]=x1,blty[cntblt]=y1;bltdier[cntblt]=7;bltnum--;break;
                    case ',':cntblt++;liveblt[cntblt]=1;bltx[cntblt]=x1,blty[cntblt]=y1;bltdier[cntblt]=8;bltnum--;break;
                }
            }
        }
    }
}
bool chenzhe;//是否可以出现终点 
int x_,y_;//终点坐标 
int CNT;//总分记录 
void comple_(int i,int y)//U_clean
{
    while(--i>=y)
    {
        switch(map[x_][y_+i])
        {
            case 0:locate(x_,y_+i);cout<<' ';break;
            case 1:locate(x_,y_+i);cout<<'=';break;
            case 2:locate(x_,y_+i);cout<<'W';break;
            case 3:locate(x_,y_+i);cout<<char(1);break;
            case 4:locate(x_,y_+i);cout<<'~';break;
            case 5:locate(x_,y_+i);cout<<'!';break;
            case 6:locate(x_,y_+i);cout<<'N';break;
        }
    }
}
void main2(int dif)
{
    while(1)
    {
        locate(0,0);cout<<"@";
        srand(time(0));
        second=clock();
        second%=100000;
        if(cnt1>=dif*10&&chenzhe==0)
        {
            chenzhe=1; 
            x_=10+rand()%20;
            y_=10+rand()%20;
            while(map[x_][y_]==3)
            {
                x_=10+rand()%20;
                y_=10+rand()%20;
            }
        }
        if(cnt1>=dif*10&&chenzhe==1)
        {
            locate(x_,y_);cout<<"U";//终点输出 
        }
        if(x_==x1&&y_==y1)
        {
            CNT+=cnt1;
            cnt1=cnt2=0;
            cout<<"通关!\n";
            Sleep(3*1000);
            comple_(10,0);
            x_=y_=-1;
            chenzhe=0;
            x1=10;y1=100;
            if(dif==10)
            {
                cout<<"恭喜你,勇士!"<<endl; 
                Sleep(5000);
                main();
            }
            main2(dif+1); 
        }
        if((fir-second)%250==0&&luogu==0)
        {
            luogu=1;
            second=time(NULL);
            srand(time(0));
            if(rand()%10!=0)
            O(1),o(1);
            srand(time(0));
            if(rand()%10!=1)
            _jing_(1);
            if((int)difftime(second,first)%25==0&&cnt2>=1)//回血 
            {
                cnt2--;
            }
            if(map[x1][y1]==1&&cnt2>=1)//安全屋回血 
            {
                cnt2--;
            }
            int lsh_cnt=cnt;
            if((int)difftime(second,first)%abs(11-dif)==0&&cnt<=99*dif)//#_number++ 
            {
                cnt++;
            }
            else if(cnt>-99*dif)
            {
                for(int i=1;i<=cnt;i++)
                {
                    if(live[i]==1)continue;
                    locate(x[i],y[i]);
                    cout<<"H";
                }
                cnt=0;
            }
            while(++lsh_cnt<=cnt)live[lsh_cnt]=0;
            if((int)difftime(second,first)%50==0){
                cntO++;liveO[cntO]=0;
            }
            if((int)difftime(second,first)%50==10)
            {
                for(int i=0;i<=cntO;i++)
                {
                    if(liveO[i]==1)continue; 
                    srand(time(0));
                    if(rand()%20==1)continue;
                    for(int j=0;j<4;j++)
                    {
                        if(xO[i]+2*direct[j][0]>0&&yO[i]+2*direct[j][1]>0&&map[xO[i]+2*direct[j][0]][yO[i]+2*direct[j][1]]!=3)
                        {
                            xo[++cnto]=xO[i]+2*direct[j][0];
                            yo[cnto]=yO[i]+2*direct[j][1];
                            liveo[cnto]=0;
                        }
                    }
                }
            }
            if(cnt2<0)cnt2=0;
            if(map[x1][y1]==5)
            {
                onfire=true;
            }
            if(map[x1][y1]==4)
            {
                onfire=false;
                uinwater++;
            }
            else
            {
                uinwater=0;
            }
            if(onfire==true&&(int)(difftime(first,second))%3==0)
            {
                cnt2++;
                locate(x1,y1);
                cout<<"!";
                Sleep(50);
                locate(x1,y1);
                cout<<"@";
                Sleep(50);
                locate(x1,y1);
                cout<<"!";
                Sleep(50);
                locate(x1,y1);
                cout<<"@";
                Sleep(50);
            }
            if(uinwater>=10)
            {
                cnt2++;
                uinwater-=3;
                locate(x1,y1);
                cout<<"~";
                Sleep(50);
                locate(x1,y1);
                cout<<"@";
                Sleep(50);
                locate(x1,y1);
                cout<<"~";
                Sleep(50);
                locate(x1,y1);
                cout<<"@";
                Sleep(50);
            }
            if(onfire==true)
            {
                locate(3,0);
                cout<<"!!!!";
            }
            else 
            {
                locate(3,0);
                cout<<"safe     ";
            }
            if(map[x1][y1]==4)
            {
                locate(3,0);
                for(int i=1;i<=10-uinwater;i++)
                {
                    cout<<"o";
                }
                for(int i=1;i<=uinwater;i++)
                {
                    cout<<" ";
                }

            }
            if(cnt2>A_life)
            {
                first=time(NULL);  
                cout<<"\n死亡  "<<endl;
                Sleep(3000);
                cout<<"得分:"<<cnt1<<endl;
                Sleep(5000);
                cnt2=0;
                cnt1=0;
                system("cls");
                first=time(NULL);
                main();
            }
            shuafen++;
            locate(x1,y1);
            cout<<"@";
            if(shuafen%500==10)
            {
                cntfen++; 
                srand(time(0));
                fenx[cntfen%10]=rand()%5+3;
                feny[cntfen%10]=rand()%5+5;
                fenlive[cntfen%10]=1;
                if(cntfen>=10)
                {
                    locate(fenx[cntfen%10],feny[cntfen%10]);
                    cout<<" ";
                }
            }
            for(int i=0;i<=cntfen;i++)
            {
                if(fenlive[i%10]==0)continue;
                locate(fenx[i%10],feny[i%10]);
                cout<<"*";
            }
            for(int i=0;i<=cntO;i++)
            {
                if(liveO[i%9999])continue;
                srand(time(0));
                if(rand()%250==1)continue;
                if(x1==xO[i%9999]&&y1==yO[i%9999])
                {
                    if(map[x1][y1]!=1)
                    {
                        locate(x1,y1);
                        cout<<"@",cnt1+=2,liveO[i%9999]=1;
                        bltnum+=5;
                        Sleep(10);
                    }
                }
                if(map[xO[i%9999]][yO[i%9999]]==5)
                {
                    liveO[i%9999]=1;
                    compleO(i%9999,1,0);
                }
            }
            for(int i=0;i<=cnt;i++)
            {
                if(live[i%9999])continue;
                srand(time(0));
                if(rand()%250==1)continue;
                if(x1==x[i%9999]&&y1==y[i%9999])
                {
                    if(map[x1][y1]!=1)
                    {
                        locate(x1,y1);
                        if(kkk[i%9999]>=20)cout<<"@",cnt1++,live[i%9999]=1;
                        else 
                        {
                            cout<<"#",cnt2++,kkk03++;
                        }
                        locate(0,2);cout<<"   ";
                        locate(0,0);cout<<"@:"<<cnt1<<endl;
                        locate(1,2);cout<<"  ";
                        locate(1,0);cout<<"%:"<<A_life-cnt2<<endl;
                        locate(2,2);cout<<"   ";
                        locate(2,0);cout<<".:"<<bltnum;
                    }
                }
                if(map[x[i%9999]][y[i%9999]]==5)
                {
                    live[i%9999]=1;
                    comple(i%9999,1,0);
                }
                if(map[x[i%9999]][y[i%9999]]==4)
                {
                    inwater[i%9999]++;
                    if(inwater[i%9999]==5)comple(i%9999,1,0),live[i%9999]=1;
                }
            }
            for(int i=0;i<=cnto;i++)
            {
                if(liveo[i%9999])continue;
                srand(time(0));
                if(rand()%250==1)continue;
                if(x1==xo[i%9999]&&y1==yo[i%9999])
                {
                    if(map[x1][y1]!=1)
                    {
                        locate(x1,y1);
                        if(kko[i%9999]>=20)cout<<"@",cnt1++,liveo[i%9999]=1;
                        else 
                        {
                            cout<<"#",cnt2++,kkk03++;
                        }
                        locate(0,2);cout<<"   ";
                        locate(0,0);cout<<"@:"<<cnt1<<endl;
                        locate(1,2);cout<<"  ";
                        locate(1,0);cout<<"%:"<<A_life-cnt2<<endl;
                        locate(2,2);cout<<"   ";
                        locate(2,0);cout<<".:"<<bltnum;
                    }
                }
                if(map[xo[i%9999]][yo[i%9999]]==5)
                {
                    liveo[i%9999]=1;
                    compleo(i%9999,1,0);
                }
                if(map[xo[i%9999]][yo[i%9999]]==4)
                {
                    inwatero[i%9999]++;
                    if(inwatero[i%9999]==5)
                    compleo(i%9999,1,0),liveo[i%9999]=1;
                }
            }
            if(map[x1][y1]==6)shopping(cnt1);//go_shopping
        }
//--------------------------------------------显著的分界线-------------------------------------------------
        else luogu=0;
        if((fir-second)%50==0&&luogu2==0)
        {
            luogu2=1;
            for(int i=0;i<=cntblt;i++)
            {
                if(liveblt[i]==1)Bullet(i),blt[i]++;
                else if(liveblt[i]==0)locate(bltx[i],blty[i]),compleblt(i,0,0),liveblt[i]=2;
                if(blt[i]==50)blt[i]=0,liveblt[i]=0;
                locate(x1,y1);
                cout<<"@";
            }
        }
        else luogu2=0;
        for(int i=0;i<=cnt;i++)
        {
            if(live[i%9999])continue;
            srand(time(0));
            if(rand()%250==1)continue;
            if(x1==x[i%9999]&&y1==y[i%9999])
            {
                if(map[x1][y1]!=1)
                {
                    locate(x1,y1);
                    if(kkk[i%9999]>=20)cout<<"@",cnt1++,live[i%9999]=1;
                }
            }
        }
        for(int i=0;i<=cnto;i++)
        {
            if(liveo[i%9999])continue;
            srand(time(0));
            if(rand()%250==1)continue;
            if(x1==xo[i%9999]&&y1==yo[i%9999])
            {
                if(map[x1][y1]!=1)
                {
                    locate(x1,y1);
                    if(kko[i%9999]>=20)cout<<"@",cnt1++,liveo[i%9999]=1;
                }
            }
        }
        for(int i=0;i<=cntfen;i++)
        {
            if(fenlive[i%10]==0)continue;
            if(x1==fenx[i%10]&&y1==feny[i%10])
            {
                cnt1+=2;
                fenlive[i%10]=0;
            }
        }
        while(kbhit())
        {
            locate(0,2);cout<<"   ";
            locate(0,0);cout<<"@:"<<cnt1<<endl;
            locate(1,2);cout<<"  ";
            locate(1,0);cout<<"%:"<<A_life-cnt2<<endl;
            locate(2,2);cout<<"   ";
            locate(2,0);cout<<".:"<<bltnum;
            int lshx;
            lshx=getch();
            if(lshx!='i'&&lshx!='j'&&lshx!='k'&&lshx!='l'&&lshx!='u'&&lshx!='o'&&lshx!='m'&&lshx!=',')
            {
                lshx=getch();
                switch(lshx)
                {
                    case 72:dir=0;break;
                    case 75:dir=1;break;
                    case 80:dir=2;break;
                    case 77:dir=3;break;
                    default:
                        main2(dif);
                }
                if(x1+direct[dir][1]<0||y1+direct[dir][0]<0||map[x1+direct[dir][1]][y1+direct[dir][0]]==3)main2(dif);
                comple1(1,0);
                x1+=direct[dir][1];
                y1+=direct[dir][0];
                locate(x1,y1);
                cout<<"@";
            }
            if(bltnum>0)
            switch(lshx)
            {
                case 'i':cntblt++;liveblt[cntblt]=1;bltx[cntblt]=x1,blty[cntblt]=y1;bltdier[cntblt]=1;bltnum--;break;
                case 'k':cntblt++;liveblt[cntblt]=1;bltx[cntblt]=x1,blty[cntblt]=y1;bltdier[cntblt]=2;bltnum--;break;
                case 'j':cntblt++;liveblt[cntblt]=1;bltx[cntblt]=x1,blty[cntblt]=y1;bltdier[cntblt]=3;bltnum--;break;
                case 'l':cntblt++;liveblt[cntblt]=1;bltx[cntblt]=x1,blty[cntblt]=y1;bltdier[cntblt]=4;bltnum--;break;
                case 'u':cntblt++;liveblt[cntblt]=1;bltx[cntblt]=x1,blty[cntblt]=y1;bltdier[cntblt]=5;bltnum--;break;
                case 'o':cntblt++;liveblt[cntblt]=1;bltx[cntblt]=x1,blty[cntblt]=y1;bltdier[cntblt]=6;bltnum--;break;
                case 'm':cntblt++;liveblt[cntblt]=1;bltx[cntblt]=x1,blty[cntblt]=y1;bltdier[cntblt]=7;bltnum--;break;
                case ',':cntblt++;liveblt[cntblt]=1;bltx[cntblt]=x1,blty[cntblt]=y1;bltdier[cntblt]=8;bltnum--;break;
                default:
                    main2(dif);
            }
        }
    }
}
int main()
{
    show();//init 
    A_life=30;
    bltnum=0;
    CNT=0;
    x1=10,y1=100;
    cnt1=0,cnt2=0;
    diffy=-1;
    chenzhe=kkk03=0;
    memset(kkk,0,sizeof kkk);
    memset(blt,0,sizeof blt);
    memset(bltdier,0,sizeof bltdier);
    memset(liveblt,0,sizeof liveblt);
    memset(bltx,0,sizeof bltx);
    memset(blty,0,sizeof blty);
    for(int i=0;i<1000000;i++)live[i]=1,liveO[i]=liveo[i]=1;
    x1=10,y1=100;

    for(int i=0;i<=30;i++)//grass_planting
    {
        for(int j=0;j<=118;j++)
        {
            int randd=rand()%10;
            if(randd==2)map[i][j]=2;
        }
    }
    for(int i=0;i<118;i++)map[29][i]=3;//Wall_building
    for(int i=0;i<30;i++)map[i][117]=3;
    for(int i=19;i<30;i++)map[i][25]=3;
    for(int i=0;i<25;i++)map[i][75]=3;
    for(int i=8;i<=25;i++)map[24][i]=3;
    for(int i=0;i<=12;i++)map[i][12]=3;
    for(int i=0;i<=16;i++)map[i][55]=3;
    for(int i=13;i<=55;i++)
    {
        if(i>25&&i<34)continue;
        map[9][i]=3;
    }
    for(int i=44;i<=65;i++)map[23][i]=3;
    for(int i=9;i<30;i++)map[i][65]=3;
    for(int i=13;i<=18;i++)map[17][i]=map[18][i]=5;//magma_making
    for(int i=17;i<=19;i++)map[18][i]=map[19][i]=map[20][i]=5;
    for(int i=16;i<=24;i++)map[i][34]=map[i][35]=map[i][36]=map[i][37]=5;
    map[20][33]=map[21][33]=map[22][33]=map[23][33]=5;
    map[16][38]=5;
    for(int i=12;i<=15;i++)
    for(int j=17;j<=20;j++)map[j][i+26]=5;
    for(int i=70;i<=74;i++)map[0][i]=map[1][i]=5;
    for(int i=71;i<=74;i++)map[2][i]=map[3][i]=5;
    for(int i=72;i<=74;i++)map[4][i]=map[5][i]=5;
    map[6][74]=5;
    for(int i=56;i<=59;i++)for(int j=0;j<5;j++)map[j][i]=4;//hydor_making
    map[5][56]=map[5][58]=map[5][60]=map[1][60]=map[3][60]=4;
    for(int i=24;i<29;i++)for(int j=59;j<=64;j++)map[i][j]=4;
    map[24][58]=map[26][58]=map[28][58]=4;
    for(int i=11;i<=15;i++)//Habitate_building
    for(int j=81;j<=96;j++)map[i][j]=1;
    for(int i=9;i<=19;i++)for(int j=87;j<=95;j++)map[i][j]=1;
    map[7][91]=map[8][91]=map[7][92]=map[8][92]=map[20][91]=map[21][91]=map[20][92]=map[21][92]=map[20][93]=map[21][93]=1;
    map[14][91]=map[13][91]=map[14][92]=map[13][92]=6;//Mall_building

    cout<<"请选择:\n1.人机(子弹有限)\n2.通关\n";
    char lsh;
    while(lsh!='1'&&lsh!='2')
    lsh=getch();
    cout<<"子弹:'u' 'i' 'o' 'j' 'k' 'l' 'm' ',' 控制\n ";
    cout<<"@:\n   上\n左 下 右\n";
    cout<<"=:安全屋:免去一切伤害\n";
    cout<<"W:草丛:降低可见度\n";
    cout<<char(1)<<":墙:不可通过\n";
    cout<<"!:岩浆:触碰着火!\n";
    cout<<"~:水:小心溺亡!\n";
    getch();
    system("cls");
    for(int i=0;i<=30;i++)//map_printing
    {
        for(int j=0;j<=118;j++)
        {
            if(map[i][j]==0)cout<<" ";
            if(map[i][j]==1)cout<<'=';
            if(map[i][j]==2)
            {
                int randd=rand()%5;
                if(randd==1)cout<<"W";
                else cout<<" ",map[i][j]=0;
            }
            if(map[i][j]==3)cout<<char(1);
            if(map[i][j]==4)cout<<'~';
            if(map[i][j]==5)cout<<'!';
            if(map[i][j]==6)cout<<'N';
        }
        cout<<endl;
    }
    if(lsh=='1')//PvE
    {
        srand(time(0));
        for(int i=0;i<1000;i++)x[i]=rand()%30,y[i]=rand()%75,xO[i]=rand()%28,yO[i]=rand()%75,xK[i]=rand()%28,yK[i]=rand()%75;
        locate(0,0);
        cout<<"难度:(0~10)";
        while(diffy<0||diffy>10)
        locate(0,11),cout<<"         ",locate(0,11),cin>>diffy;
        hide();
        locate(0,0);
        cout<<"             ";
        locate(0,0);
        cout<<"#:攻击\n$:休眠\nO:井母\n*:经验\n";
        Sleep(3*1000);
        locate(0,0);
        cout<<"      \n      \n      \n     \n";
        first=time(NULL);
        fir=clock();
        locate(0,0);cout<<"@:"<<cnt1<<endl;
        locate(1,2);cout<<"  ";
        locate(1,0);cout<<"%:"<<30-cnt2<<endl;
        locate(2,0);cout<<".:"<<bltnum;
        main1();
    }
    if(lsh=='2')//rated
    {
        srand(time(0));
        for(int i=0;i<=1000;i++)x[i]=rand()%30,y[i]=rand()%75,xO[i]=rand()%28,yO[i]=rand()%75;
        hide();
        locate(0,0);
        cout<<"             ";
        locate(0,0);
        cout<<"#:攻击\n$:休眠\nO:井母\n*:经验\nU:终点\n";
        Sleep(3*1000);
        locate(0,0);
        cout<<"      \n      \n      \n      \n      \n";
        first=time(NULL);
        fir=clock();
        locate(0,0);cout<<"@:"<<cnt1<<endl;
        locate(1,2);cout<<"  ";
        locate(1,0);cout<<"%:"<<30-cnt2<<endl;
        locate(2,0);cout<<".:"<<bltnum;
        main2(1);
    }
    return 0;//我甚至 
}