此次更新更新了许多关卡,且以后不会再更新飞机大战系列。

/*
red:normal
blue:ice
light red:fire
blue and yellow:autodun
orange:rocket
*/
#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
using namespace std;
struct asdfg{
    int x=10;
    int y=17;
    int h=100;
    int sp;    
    int par=1;
    bool dead=1;
    bool v;
    int coin=1000;
    int ammo=100;
    vector<int> bag;
    int bagnum=0;
    int enegy;
    int buff=0,bufft=0;
}play;
struct PlayerData {
    string name;
    string password;
    int coins = 1000;
    int highScore = 0;
    int p;
    bool ci[20]; 
}playtext;
struct hjkl{
    int x;
    int y;
    int par;
    bool use;
    int dev;
    bool team;
}ammo[1001];
struct zxcv{
    int x;
    int y;
    int par;
    int h;
    int sp;
    int m=0,shot=0;
    bool dead=0;
    bool v;
    bool v2;
    bool v3;
    int buff=0,bufft=0;
}enemy[1001];
struct bnm{
    int x;
    int y;
    int par;
    int use;
}gift[100]; 
struct qwe{
    int x,y,par,h;
    bool u=0;
}boss;
struct iop{
    int x,y,par,h,t;
    bool u=0;
}bigboss; 
struct cnm{
    int x,y,h;
    int sx=0;
    int s[100];
    bool u=0;
}bplane[10];
struct zxc{
    int x1,x2,y;
    int h;
    int p;
    bool u=0;
}dun[100];
char thing[10][3][3]{
{{' ',' ','L'},
{' ','/',' '},
{'/',' ',' '}},
{{' ','O',' '},
{' ','*',' '},
{' ',' ',' '}},
{{'^','^','^'},
{'#','#','#'},
{'#','#','#'}},
{{' ','|',' '},
{' ','|',' '},
{' ','#',' '}},
{{' ','!',' '},
{'#','^','#'},
{'#','+','#'}},
{{'~','~','~'},
{'~','O','~'},
{'~','*','~'}},
};
char bigBoss[5][5][5] = {{
    { '[', 'O', 'O', 'O', ']' },
    { '|', ' ', 'X', ' ', '|' },
    { '=', '=', 'H', '=', '=' },
    { '>', '>', '|', '<', '<' },
    { ' ', ' ', '|', ' ', ' ' },
},{
    { '#', '^', '#', '^', '#' },
    { '[', '*', '*', '*', ']' },
    { '>', '>', '0', '<', '<' },
    { '|', '~', '|', '~', '|' },
    { ' ', ' ', '|', ' ', ' ' }
},{
    { '#', '#', '#', '#', '#' },  // 重型装甲外壳
    { '|', 'O', 'O', 'O', '|' },  // 能量核心阵列
    { '[', '=', 'X', '=', ']' },  // 主炮基座(X为控制中心)
    { '>', '>', '|', '>', '>' },  // 不对称多炮管设计
    { ' ', '\\', '!', '/', ' ' }   // 底部辅助武器
},{
    { '|', ' ', '|', ' ', '|' },
    { '\\', '*', '|', '*', '/' },
    { '-', '|', 'H', '|', '-' },
    { ' ', '\\', '#', '/', ' ' },
    { ' ', ' ', '|', ' ', ' ' }
}};
void autodun(int y,int x1,int x2,int p);
void clear();
void xray(int x,int y,bool p,int dev,bool io,int h);
int ri;
int price[10]{200,400,100,300,1000,600},cs[20]{3000,2500,5000,4000};
int mapx[60][20],firex[60][20],am=0,randx[1000],ra=0,en=0,gi=0,tx=0,tx1,boss1n=0,firet=0,bp=0,zt=0,mis=1,ci[20],du=0,speed=1,tshot=0,t1=0;
bool speedb=0;
bool boom=0,tell=0,zp=0,xrayx=0;
int color(int x){
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x);
}
// 保存存档
void savePlayerData(const PlayerData& data) {
    for(int i = 0; i < 20; i++) {
        playtext.ci[i] = ci[i];
    }
    std::ofstream outFile("player_data.dat", std::ios::binary);
    if (!outFile) {
        std::cerr << "无法打开文件保存数据" << std::endl;
        return;
    } 
    // 写入字符串长度和内容 
    //size_t nameLength = data.name.size();
    int nameLength=data.name.size();
    outFile.write(reinterpret_cast<const char*>(&nameLength), sizeof(nameLength));
    outFile.write(data.name.c_str(), nameLength);
    

    size_t passLength = data.password.size();
    outFile.write(reinterpret_cast<const char*>(&passLength), sizeof(passLength));
    outFile.write(data.password.c_str(), passLength);

    // 写入其他数据
    outFile.write(reinterpret_cast<const char*>(&data.coins), sizeof(data.coins));
    outFile.write(reinterpret_cast<const char*>(&data.highScore), sizeof(data.highScore));
    outFile.write(reinterpret_cast<const char*>(&data.p), sizeof(data.p));
    
    // 写入词条数据
    for(int i = 0; i < 20; i++) {
        outFile.write(reinterpret_cast<const char*>(&data.ci[i]), sizeof(bool));
    }

    outFile.close();
}

// 从文件加载玩家数据
bool loadPlayerData(PlayerData& data) {
    std::ifstream inFile("player_data.dat", std::ios::binary);
    if (!inFile) {
        std::cerr << "无法打开文件加载数据" << std::endl;
        return false;
    }

    // 读取名称
    size_t nameLength;
    inFile.read(reinterpret_cast<char*>(&nameLength), sizeof(nameLength));
    data.name.resize(nameLength);
    inFile.read(&data.name[0], nameLength);

    // 读取密码
    size_t passLength;
    inFile.read(reinterpret_cast<char*>(&passLength), sizeof(passLength));
    data.password.resize(passLength);
    inFile.read(&data.password[0], passLength);

    // 读取其他数据
    inFile.read(reinterpret_cast<char*>(&data.coins), sizeof(data.coins));
    inFile.read(reinterpret_cast<char*>(&data.highScore), sizeof(data.highScore));
    inFile.read(reinterpret_cast<char*>(&data.p), sizeof(data.p));
    
    // 读取词条数据
    for(int i = 0; i < 20; i++) {
        inFile.read(reinterpret_cast<char*>(&data.ci[i]), sizeof(bool));
    }

    inFile.close();
    return true;
}
int dfp(int a1){
    if(a1==3){
        a1=13;
    }else if(a1==0){
        a1=10;
    }else if(a1==2){
        a1=12;
    }
    switch(a1){
        case(4):return '~';
        case(10):return ' ';break;
        case(13):return '*';break;
        case(101):return ' ';break;
        case(102):return '!';break;
        case(103):return ' ';break;
        case(104):return '/';break;
        case(105):return 'A';break;
        case(106):return '\\';break;
        case(107):return '|';break;
        case(108):return '+';break;
        case(109):return '|';break;
        case(111):return ' ';
        case(112):return '!';
        case(113):return ' ';
        case(114):return '#';
        case(115):return '^';
        case(116):return '#';
        case(117):return '#';
        case(118):return '+';
        case(119):return '#';
        case(120):return 'O';
        case(121):return '|';
        case(122):return '-';
        case(123):return 'V';
        case(124):return '[';
        case(125):return ']';
        case(200):return '.';break;
        case(201):return 'O';break;
        case(202):return '*';
        case(203):return '#';
        case(204):return '*';
        case(205):return '|';
        case(206):return '-';
        case(208):return 'o';
        case(300):return 'A'; 
        case(301):return 'T';
        case(302):return 'A'; 
        case(303):return 'T';
        case(304):return 'A'; 
        case(305):return 'T';
        case(306):return 'A'; 
        case(307):return 'T';
        case(308):return 'A'; 
        case(309):return 'T';
        case(310):return 'A'; 
        case(311):return 'T';
        case(312):return 'A'; 
        case(313):return 'T';
        case(314):return 'A'; 
        case(315):return 'T';
        case(316):return 'A'; 
        case(317):return 'T';
        case(318):return 'A'; 
        case(319):return 'T';
        case(400):return 'o';break;
        case(401):return 'o';break;
        case(402):return 'o';break;
        case(403):return 'o';break;
        case(404):return 'o';break;
        case(405):return 'o';break;
        case(410):return '=';
        case(12):return '#';break;
    }
}
void textcolor(int y, int x) {
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    WORD colorAttr = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE; // 默认白色
    
    // 获取当前单元格的字符值
    int cellValue = mapx[y][x];
    static DWORD lastTick = GetTickCount();
    DWORD currentTick = GetTickCount();
    bool blinkPhase = (currentTick % 400) < 200; // 闪烁周期
    
    // 根据不同的地图值设置颜色
    switch(cellValue) {
        // 玩家飞船 (多色设计)
        case 100: case 101: case 102: case 103: case 104: case 105: case 106: case 107: case 108: case 109:
        case 110: case 111: case 112: case 113: case 114: case 115: case 116: case 117: case 118: case 119:
            // 飞船主体 - 根据部位不同设置不同颜色
            if (cellValue == 105 || cellValue == 106) { // 机翼
                colorAttr = FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY; // 青色
            } else if (cellValue == 107 || cellValue == 109) { // 引擎/推进器
                colorAttr = FOREGROUND_RED | FOREGROUND_INTENSITY; // 亮红色
            } else { // 机身
                colorAttr = FOREGROUND_BLUE | FOREGROUND_INTENSITY; // 亮蓝色
            }
            break;
            
        // 普通子弹 (白色带闪烁尾迹)
        case 200:
            colorAttr = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | 
                       (blinkPhase ? FOREGROUND_INTENSITY : 0);
            break;
            
        // 火箭子弹 (多色动态效果)
        case 201: {
            int colorShift = (currentTick / 100) % 3;
            switch(colorShift) {
                case 0: colorAttr = FOREGROUND_RED | FOREGROUND_INTENSITY; break;
                case 1: colorAttr = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY; break;
                case 2: colorAttr = FOREGROUND_GREEN | FOREGROUND_INTENSITY; break;
            }
            break;
        }
            
        // 火箭尾焰 (动态红色/橙色)
        case 202:
            colorAttr = FOREGROUND_RED | ((currentTick % 200 < 100) ? FOREGROUND_GREEN : 0) | FOREGROUND_INTENSITY;
            break;
            
        // 背景/太空 (黑色)
        case 0:
            colorAttr = 0;
            break;
            
        // 爆炸效果 (闪烁红色,无背景色)
        case 3:
            if (blinkPhase) {
                colorAttr = FOREGROUND_RED | FOREGROUND_INTENSITY;
            } else {
                colorAttr = FOREGROUND_RED | FOREGROUND_GREEN; // 橙色
            }
            break;
            
        case 4:{
            int texture = (x + y + currentTick/300) % 2;
            if(texture){
                colorAttr = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY;
            }else{
                colorAttr = FOREGROUND_RED | FOREGROUND_INTENSITY;
            }
            break;
        }
        // 岩石 (灰色带纹理效果)
        case 2: {
            int texture = (x + y + currentTick/300) % 3;
            switch(texture) {
                case 0: colorAttr = FOREGROUND_INTENSITY; break; // 亮灰
                case 1: colorAttr = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE; break; // 白色
                case 2: colorAttr = FOREGROUND_RED | FOREGROUND_GREEN; break; // 黄色(模拟矿物反光)
            }
            break;
        }
            
        // 敌人 (动态红色系)
        case 300: case 301:{
            colorAttr = FOREGROUND_RED; break;
            break;
        }
        case 302: case 303:{
            colorAttr = FOREGROUND_RED | FOREGROUND_GREEN; break;
            break;
        }
        case 304: case 305:{
            colorAttr = FOREGROUND_RED;break;
            break;
        }
        case 306: case 307:{
            colorAttr = FOREGROUND_RED;break;
            break;
        }
        case 308: case 309:{
            colorAttr = FOREGROUND_RED | FOREGROUND_BLUE;break;
            break;
        }
        case 310: case 311:{
            colorAttr = FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY;
            break;
        }
        case 312: case 313:{
            colorAttr = FOREGROUND_BLUE | FOREGROUND_INTENSITY;
            break;
        }
        case 314: case 315:{
            colorAttr = FOREGROUND_RED | FOREGROUND_INTENSITY;
            break;
        }
        // 道具 (闪烁绿色系)
        case 400: case 401: case 402: case 403: case 404: case 405:
            if (blinkPhase) {
                colorAttr = FOREGROUND_GREEN | FOREGROUND_INTENSITY;
            } else {
                colorAttr = FOREGROUND_GREEN | ((cellValue % 2) ? FOREGROUND_BLUE : 0);
            }
            break;
            
        // 特殊物品 (动态紫色)
        case 12: {
            int pulse = (currentTick / 50) % 8;
            if (pulse < 4) {
                colorAttr = FOREGROUND_RED | FOREGROUND_BLUE | (pulse % 2 ? FOREGROUND_INTENSITY : 0);
            } else {
                colorAttr = FOREGROUND_BLUE | ((pulse % 2) ? FOREGROUND_INTENSITY : 0);
            }
            break;
        }
    }
    
    // BOSS飞船多色渲染
    if (boss1n && (y == boss.y || y == boss.y+1) && (x >= boss.x-1 && x <= boss.x+1)) {
        if (boss.par == 0) { // 第一种BOSS形态
            if (y == boss.y && x == boss.x) { // 核心
                colorAttr = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY; // 黄色
            } else if (y == boss.y+1 && x == boss.x) { // 引擎
                colorAttr = FOREGROUND_RED | FOREGROUND_INTENSITY; // 亮红色
            } else { // 武器
                colorAttr = FOREGROUND_BLUE | FOREGROUND_INTENSITY; // 亮蓝色
            }
        } else { // 第二种BOSS形态
            int partColor = (x - boss.x + 1) + (y - boss.y) * 3;
            switch(partColor) {
                case 0: case 2: case 6: case 8: // 角落
                    colorAttr = FOREGROUND_RED | FOREGROUND_INTENSITY; break;
                case 1: case 3: case 5: case 7: // 边缘
                    colorAttr = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY; break;
                case 4: // 中心
                    colorAttr = FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY; break;
            }
        }
    }
    
    // BIGBOSS多部位多色渲染
    if (bigboss.u && (y >= bigboss.y-2 && y <= bigboss.y+2) && (x >= bigboss.x-2 && x <= bigboss.x+2)) {
        char bossChar = bigBoss[bigboss.par][y - (bigboss.y-2)][x - (bigboss.x-2)];
        switch(bossChar) {
            case 'O': // 核心部件 - 脉冲红色
                colorAttr = FOREGROUND_RED | ((currentTick % 200 < 100) ? FOREGROUND_INTENSITY : 0);
                break;
            case 'X': // 驾驶舱 - 闪烁青色
                colorAttr = FOREGROUND_GREEN | FOREGROUND_BLUE | 
                           (blinkPhase ? FOREGROUND_INTENSITY : 0);
                break;
            case 'H': // 武器基座 - 交替红黄
                colorAttr = (currentTick % 300 < 150) ? 
                    (FOREGROUND_RED | FOREGROUND_INTENSITY) : 
                    (FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
                break;
            case '|': // 主炮 - 强白色
                colorAttr = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY;
                break;
            case '>': case '<': // 副炮 - 橙色
                colorAttr = FOREGROUND_RED | FOREGROUND_GREEN | 
                          ((currentTick % 150 < 75) ? FOREGROUND_INTENSITY : 0);
                break;
            case '[': case ']': // 外壳框架 - 暗红色
                colorAttr = FOREGROUND_RED;
                break;
            case '=': // 装甲板 - 金属灰
                colorAttr = FOREGROUND_INTENSITY;
                break;
            default: // 其他部分
                colorAttr = FOREGROUND_RED | FOREGROUND_BLUE; // 紫色
                break;
        }
    }
    
    // 应用颜色
    COORD coord = {static_cast<SHORT>(x), static_cast<SHORT>(y)};
    DWORD written;
    WriteConsoleOutputAttribute(hConsole, &colorAttr, 1, coord, &written);
}

void fastcls() {
    static HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    static CONSOLE_CURSOR_INFO oldCursor;
    static bool firstRun = true;
    if(firstRun) {
        CONSOLE_CURSOR_INFO cursor = {100, FALSE};
        GetConsoleCursorInfo(hOut, &oldCursor);
        SetConsoleCursorInfo(hOut, &cursor);
        firstRun = false;
    }
    SetConsoleCursorPosition(hOut, COORD{0,0});
    for(int i=0; i<3; i++) { 
        WriteConsoleA(hOut, " \b", 2, NULL, NULL); 
    }
}
void screen(){
    fastcls();
    //clear();
    if(boss1n){
        if(boss.par==0){
            mapx[boss.y][boss.x]=108;
            mapx[boss.y][boss.x+1]=108;
            mapx[boss.y][boss.x-1]=108;
            mapx[boss.y+1][boss.x]=109;
        }
    }
    for(int i=0;i<27;i++){
        cout<<"#";
        for(int ii=0;ii<20;ii++){
            cout<<char(dfp(mapx[i][ii]));
            
        }
        cout<<"#";
        cout<<endl;
    }
    cout<<endl<<endl; 
     for(int i=0;i<20;i++){
         cout<<"--";
     }cout<<endl<<endl;
    for(int i=0;i<20;i++){
         cout<<"--";
     }cout<<endl;
}
void clear(){
    DWORD written;
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    for(int i=0;i<90;i++){
        COORD startPos = {0, i};
        SetConsoleCursorPosition(hConsole, startPos);
        FillConsoleOutputCharacter(hConsole, ' ', 100, startPos, &written);
    }
    COORD startPos = {0, 0};
    SetConsoleCursorPosition(hConsole, startPos);
}
void ClearScreen() {
    
    if(bigboss.u){
        int xn=0,yn=0;
        for(int i=bigboss.y-2;i<=bigboss.y+1;i++){
            xn=0;
            for(int ii=bigboss.x-2;ii<=bigboss.x+2;ii++){
                mapx[i][ii]=bigBoss[bigboss.par][yn][xn];
                xn++;
            }
            yn++;
        }
        mapx[bigboss.y+2][bigboss.x]='|';
    }
    if(boss1n){
        if(boss.par==0){
            mapx[boss.y][boss.x]=108;
            mapx[boss.y][boss.x+1]=108;
            mapx[boss.y][boss.x-1]=108;
            mapx[boss.y+1][boss.x]=109;
        }else if(boss.par==1){
            mapx[boss.y][boss.x]=105;
            mapx[boss.y][boss.x+1]=106;
            mapx[boss.y][boss.x-1]=104;
            mapx[boss.y+1][boss.x]=109;
        }
        else if(boss.par==2){
            mapx[boss.y][boss.x]=120;
            mapx[boss.y][boss.x+1]=121;
            mapx[boss.y][boss.x-1]=121;
            mapx[boss.y+1][boss.x]=121;
        }
        else if(boss.par==3){
            mapx[boss.y][boss.x]=120;
            mapx[boss.y][boss.x+1]=122;
            mapx[boss.y][boss.x-1]=122;
            mapx[boss.y+1][boss.x]=121;
        }else if(boss.par==4){
            mapx[boss.y][boss.x]=120;
            mapx[boss.y][boss.x+1]=124;
            mapx[boss.y][boss.x-1]=125;
            mapx[boss.y+1][boss.x]=123;
        }
        
    }
    int a1=0;
    for(int i=0;i<100;i++){
        if(a1==du){
            break;
        }
        if(dun[i].u){
            a1++;
            for(int ii=dun[i].x1;ii<=dun[i].x2;ii++){
                if(ii<0){
                    continue;
                }
                mapx[dun[i].y][ii]=410;
            }
        }
    }
    if(bp>0){
        for(int i=0;i<30;i++){
            if(bplane[i].u){
                mapx[bplane[i].y][bplane[i].x]=301;
            }
        }
    }
    int a2=0;if(play.dead==1){
    for(int i=play.y-1;i<=play.y+1;i++){
        for(int ii=play.x-1;ii<=play.x+1;ii++){
               if((i==play.y-1&&ii==play.x-1)||(i==play.y-1&&ii==play.x+1)){
                a2++;
                continue;
            }
            a2++;
            if(play.par==0){
                mapx[i][ii]=100+a2;
            }else if(play.par==1){
                mapx[i][ii]=110+a2;
            }
                    
        }
    }
    }else{
        for(int i=play.y-1;i<=play.y+1;i++){
        for(int ii=play.x-1;ii<=play.x+1;ii++){
            mapx[i][ii]=3;
        }
    }
    }
    for(int i=0;i<27;i++){
        for(int ii=0;ii<20;ii++){
            if(firex[i][ii]>0&&mapx[i][ii]==0){
                mapx[i][ii]=4;
            }
        }
    }
    if(gi>=0){
        for(int i=0;i<100;i++){
            if(gift[i].use==1){
                mapx[gift[i].y][gift[i].x]=gift[i].par+400;
            }
        }
    }
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    if (hConsole == INVALID_HANDLE_VALUE) {
        std::cerr << "无法获取控制台句柄" << std::endl;
        exit(0);
    }
    int ax;
    for(int i=0;i<26;i++){
        for(int ii=1;ii<=20;ii++){
                  SHORT y = i;  // 行号(从0开始)
                SHORT x = ii;  // 列号(从0开始)
                COORD coord = {x, y};
                 char buffer;
                 DWORD charsRead;
                BOOL success = ReadConsoleOutputCharacterA(hConsole, &buffer, 1, coord, &charsRead);  
                 if (!success || charsRead != 1) {
                   std::cerr << "读取失败,错误代码: " << GetLastError() << std::endl;
                    return ;
                 }
                 if(static_cast<int>(buffer)!=dfp(mapx[i][ii])){
                     HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
                    COORD startPos = {ii, i}; // 
                  DWORD written;
                  if(dfp(mapx[i][ii])>30&&dfp(mapx[i][ii])<128){
                      FillConsoleOutputCharacter(hConsole, dfp(mapx[i][ii]), 1, startPos, &written);
                      textcolor(i,ii);
                  }
                  if((bigboss.u&&bigboss.y-2<=i&&bigboss.y+1>=i&&bigboss.x-2<=ii&&bigboss.x+2>=ii)||(i==bigboss.y+2&ii==bigboss.x)){
                      FillConsoleOutputCharacter(hConsole, mapx[i][ii], 1, startPos, &written);
                      textcolor(i,ii);
                  }
                }
                
                 
        }
    }
    //HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
      COORD startPos = {24, 0}; // 
    DWORD written;
    SetConsoleCursorPosition(hConsole, startPos);
    FillConsoleOutputCharacter(hConsole, ' ', 20, startPos, &written);
    cout<<"炮向:"; 
    if(play.v){
        cout<<"前";
    }else{
        cout<<"后";
    }
    cout<<"         level ";
    if(mis==0)cout<<"!";
    else cout<<mis; 
    startPos = {24, 1};
    SetConsoleCursorPosition(hConsole, startPos);
    FillConsoleOutputCharacter(hConsole, ' ', 20, startPos, &written);
    cout<<"heart:"<<play.h;
    startPos = {24, 2};
    SetConsoleCursorPosition(hConsole, startPos);
    FillConsoleOutputCharacter(hConsole, ' ', 20, startPos, &written);
    cout<<"ammo:"<<play.ammo;
    startPos = {24, 6};
    SetConsoleCursorPosition(hConsole, startPos);
    FillConsoleOutputCharacter(hConsole, ' ', 20, startPos, &written);
    startPos = {24, 3};
    SetConsoleCursorPosition(hConsole, startPos);
    FillConsoleOutputCharacter(hConsole, ' ', 20, startPos, &written);
    cout<<"time:"<<tx1;
    startPos = {24, 4};
    SetConsoleCursorPosition(hConsole, startPos);
    FillConsoleOutputCharacter(hConsole, ' ', 20, startPos, &written);
    cout<<"coin:"<<play.coin;
    startPos = {24, 5};
    SetConsoleCursorPosition(hConsole, startPos);
    FillConsoleOutputCharacter(hConsole, ' ', 20, startPos, &written);
    if(boss1n){
    cout<<"boss:"<<boss.h;
    }
    if(bigboss.u==1){
        cout<<"bigboss:"<<bigboss.h;
    }
    startPos = {24, 6};
    SetConsoleCursorPosition(hConsole, startPos);
    FillConsoleOutputCharacter(hConsole, ' ', 20, startPos, &written);
    if(bigboss.u==1){
        cout<<"warning:"<<bigboss.t;
    }
    startPos = {24, 7};
    SetConsoleCursorPosition(hConsole, startPos);
    FillConsoleOutputCharacter(hConsole, ' ', 20, startPos, &written);
    if(mis==2){
        cout<<"energy:"<<play.enegy;
    }
    startPos = {24, 8};
    SetConsoleCursorPosition(hConsole, startPos);
    FillConsoleOutputCharacter(hConsole, ' ', 20, startPos, &written);
    if(play.buff==0){
        cout<<"No buff";
    }else if(play.buff==1){
        cout<<"ice";
    }
    else if(play.buff==2){
        cout<<"fire";
    }
    startPos = {24, 9};
    SetConsoleCursorPosition(hConsole, startPos);
    FillConsoleOutputCharacter(hConsole, ' ', 20, startPos, &written);
    cout<<"Buff time:"<<play.bufft<<"ms";
    for(int i=0;i<3;i++){
        startPos = {24, i+12};
        SetConsoleCursorPosition(hConsole, startPos);
        FillConsoleOutputCharacter(hConsole, ' ', 20, startPos, &written);
        cout<<i+1<<".";
        if(play.bag.size()<i+1){
            cout<<"nothing";
            continue;
        }
        if(play.bag[i]==1){
            cout<<"fix+";
        }
        else if(play.bag[i]==2){
            cout<<"rocket";
        }
        else if(play.bag[i]==3){
            cout<<"ammo+";
        }
        else if(play.bag[i]==4){
            cout<<"X-ray";
        }
        else if(play.bag[i]==5){
            cout<<"rush-Z";
        }
        else if(play.bag[i]==5){
            cout<<"fire";
        }
        else if(play.bag[i]==0||play.bag.begin()+i>play.bag.end()){
            cout<<"nothing";
        }
    }
    startPos = {0, 29};
    SetConsoleCursorPosition(hConsole, startPos);
}
void speak(bool a1,int a2){
    DWORD written;
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD startPos = {0, 27};
    SetConsoleCursorPosition(hConsole, startPos);
    FillConsoleOutputCharacter(hConsole, ' ', 100, startPos, &written);
    tell=1;
    if(a1==0){
        if(a2==-1){
            cout<<"Game over";
        }
        if(a2==0){
        cout<<"coin!";
        return;
        }
        if(a2==1){
        cout<<"fix!";
        return;
        }
        if(a2==2){
        cout<<"ammo!";
        return;
        }
        if(a2==3){
        cout<<"rocket help!";
        return;
        }
        if(a2==4){
            cout<<"bang!";
            return;
        }
        if(a2==5){
        cout<<"enemies are comming!";
        return;
        }
        if(a2==6){
        cout<<"be careful of rocks!";
        return;
        }
        if(a2==7){
            cout<<"use the key of 'a' 'd' to move";
            return;
        }
        if(a2==8){
            cout<<"here we go!";
            return;
        }
        if(a2==9){
            cout<<"use the key of space to shoot";
            return;
        }
        if(a2==10){
            cout<<"use the key of 'w' 'd' to change the orientation of your space ship";
            return ;
        }
        if(a2==11){
            cout<<"use the key of '1' '2' '3' to use the things you buy";
            return;
        }
        if(a2==12){
            cout<<"use the key 'a' 'd' to change the thing you choose in the shop";
            return;
        }
        if(a2==13){
            cout<<"pick up the 'o' in the space to get some good things";
            return;
        }
        if(a2==14){
            cout<<"you can shoot the stone and enemy";
            return;
        }
        if(a2==15){
            cout<<"oh guys , today we don't have enough energy ";
            return;
        }
        if(a2==16){
            cout<<"we can get energy by shooting someing...";
            return;
        }
        if(a2==17){
            cout<<"are you ready ? time is becoming faster...";
            return;
        }
        if(a2==18){
            cout<<"ola ";
            return;
        }
        if(a2==19){
            cout<<"ola ola";
            return;
        }
        if(a2==19){
            cout<<"ola ola ola";
            return;
        }
        if(a2==100){
            cout<<"oh guy,you're great that you come";
            return;
        }
        if(a2==101){
            cout<<"but...";
            return;
        }
        if(a2==102){
            cout<<"there is a dart team ''Marzh'',you'll face marzh's attack";
            return;
        }
        if(a2==103){
            cout<<"good luck";
            return;
        }
        if(a2==104){
            cout<<"Marzh:Insects... you dare trespass into my domain?";
            return;
        }
        if(a2==105){
            cout<<"I used to be a horse wrangler,";
            return;
        }
        if(a2==106){
            cout<<"but now,I can kill you easily";
        }
        if(a2==107){
            cout<<"Do you even know who you're facing?";
            return;
        }
        if(a2==108){
            cout<<"PREPARE TO DIE!";
            return;
        }
        if(a2==109){
            cout<<"attack!";
            return;
        }
        if(a2==110){
            cout<<"oh! you come";
            return;
        }
        if(a2==111){
            cout<<"but there is a boss wait for you...";
            return;
        }
        if(a2==112){
            cout<<"but we have enough energy now";
            return;
        }
        if(a2==113){
            cout<<"good luck";
            return;
        }if(a2==201){
            cout<<"Though I am about to die, my followers will continue to fight, for they are the embodiment of my will.";
            return;
        }
    }
}
void adicent(int x,int y,int p){
    if(boss1n){
        if((x==boss.x-1||x==boss.x+1||x==boss.x)&&y==boss.y&&boss.y>5){
            boss.h-=10;
            if(boss.h<=0){
                boss.u=0;
                boss1n=0;
                for(int i=boss.x-1;i<=boss.x+1;i++){
                    for(int ii=boss.y-1;ii<=boss.y+1;ii++){
                        mapx[ii][i]=3;
                    }
                }
                boom=1;
            }
            return ;
        }
    }
    if(bigboss.u){
        for(int i=bigboss.y;i<=bigboss.y+1;i++){
            for(int ii=bigboss.x-2;ii<=bigboss.x+2;ii++){
                if(i==y&&ii==x){
                    bigboss.h-=10;
                    if(bigboss.h<=0){
                        for(int k=bigboss.y-2;k<=bigboss.y+2;k++){
                            for(int kk=bigboss.x-2;kk<=bigboss.x+2;kk++){
                                mapx[k][kk]=3;
                            }
                        }
                        boom=1;
                        play.coin+=1000;
                        bigboss.u=0; 
                    }
                    return;
                }
            }
        }
    }
int a1=0;
    for(int i=0;i<501;i++){
        if(a1>=en){
           return ;
        }
        if(enemy[i].dead==1){        
            a1++;
            if(enemy[i].x==x&&enemy[i].y==y){
                if(p!=0){
                    enemy[i].buff=p;
                    enemy[i].bufft=10;
                    return;
                }              
                enemy[i].h-=10;
                if(enemy[i].h>0) return;
            enemy[i].dead=0;
            for(int i=y-1;i<=y+1;i++){
                for(int ii=x-1;ii<=x+1;ii++){
                    mapx[i][ii]=3;
                }
                }           
                boom=1;
                play.enegy+=10;            
                return ;
            }
        }
        
    }
    /*}else{
        int a1=0;
        for(int i=0;i<1000;i++){
            if(ammo[i].use==1){
                a1++;
                if(ammo[i].x==x&&ammo[i].y==y){
                    ammo[i].use=0;
                    return 1;
                }
            }
        }
    }*/
    
}
bool adicent2(int x,int y,int p){
    //cout<<"xxxxxxxxxxxxxxxxxx";
    for(int i=0;i<100;i++){
        if(x>=min(dun[i].x1,dun[i].x2)&&x<=max(dun[i].x1,dun[i].x2)&&y==dun[i].y&&dun[i].u){
            if(p==dun[i].p){
                dun[i].h-=10;
            if(dun[i].h<=0){
                dun[i].u=0;
                du--;
                for(int ii=dun[i].x1;ii<=dun[i].x2;ii++){
                    mapx[y][ii]=3;
                    boom=1;
                }                
            }
            return 1;
            }           
        }
    }
    return 0;
}
void fire(int y1,int y2,int x1,int x2,int t){
    int mx=ra-1,k=0;
    for(int i=y1;i<=y2;i++){
        for(int ii=x1;ii<=x2;ii++){
            if(randx[k]%5==0){
                firex[i][ii]=t;                
            }
            k++;
            if(k>=mx){
                k=0;
            }
        }
    }
    ra=9;
    firet=max(firet,t);
}
void ammox(){
    int a1=0;
    for(int i=0;i<1001;i++){
        if(ammo[i].use==1){
            a1++;
            if(ammo[i].par==1||ammo[i].par==2||ammo[i].par==9||ammo[i].par==11){
                if(ammo[i].dev==0){
                mapx[ammo[i].y+1][ammo[i].x]=0;
            }else if(ammo[i].dev==1){
                mapx[ammo[i].y][ammo[i].x-1]=0;
            }else if(ammo[i].dev==2){
                mapx[ammo[i].y-1][ammo[i].x]=0;
            }else if(ammo[i].dev==3){
                mapx[ammo[i].y][ammo[i].x+1]=0;
            }else if(ammo[i].dev==4){
                mapx[ammo[i].y+1][ammo[i].x-1]=0;
            }else if(ammo[i].dev==5){
                mapx[ammo[i].y-1][ammo[i].x-1]=0;
            }else if(ammo[i].dev==6){
                mapx[ammo[i].y-1][ammo[i].x+1]=0;
            }else if(ammo[i].dev==7){
                mapx[ammo[i].y+1][ammo[i].x+1]=0;
            }
            }
            mapx[ammo[i].y][ammo[i].x]=0;
            if(ammo[i].par==9){
                if(ammo[i].x>play.x){ammo[i].dev=4;}
                else if(ammo[i].x==play.x){ammo[i].dev=2;}
                else{ammo[i].dev=7;}
            }
            if(ammo[i].dev==0){
                ammo[i].y--;
            }else if(ammo[i].dev==1){
                ammo[i].x++;
            }else if(ammo[i].dev==2){
                ammo[i].y++;
            }else if(ammo[i].dev==3){
                ammo[i].x--;
            }else if(ammo[i].dev==4){
                ammo[i].x--;
                ammo[i].y++;
            }else if(ammo[i].dev==5){
                ammo[i].x--;
                ammo[i].y--;
            }else if(ammo[i].dev==6){
                ammo[i].x++;
                ammo[i].y--;
            }else if(ammo[i].dev==7){
                ammo[i].x++;
                ammo[i].y++;
            }
            if(ammo[i].par==2){
                int a1=0;
                am+=2;
                for(int ii=0;ii<1000;ii++){
                    if(ammo[ii].use==0){
                        ammo[ii].use=1;
                        ammo[ii].x=ammo[i].x;
                        if(ammo[i].dev==0){
                            ammo[ii].y=ammo[i].y+1;
                        }else if(ammo[i].dev==2){
                            ammo[ii].y=ammo[i].y-1;
                        }
                        ammo[ii].par=0;
                        ammo[ii].dev=1;
                        ammo[ii].team=ammo[i].team;
                        break;
                    }
                    a1++;
                }
                for(int ii=a1;ii<1000;ii++){
                    if(ammo[ii].use==0){
                        ammo[ii].use=1;
                        ammo[ii].par=0;
                        ammo[ii].x=ammo[i].x;
                        if(ammo[i].dev==0){
                            ammo[ii].y=ammo[i].y+1;
                        }else if(ammo[i].dev==2){
                            ammo[ii].y=ammo[i].y-1;
                        }
                        ammo[ii].dev=3;
                        ammo[ii].team=ammo[i].team;
                        break;
                    }
                }
            }
            if(ammo[i].par==10){
                fire(ammo[i].y-1,ammo[i].y+1,ammo[i].x-1,ammo[i].x+1,5);
                for(int k=ammo[i].y-1;k<=ammo[i].y+1;k++){
                    for(int ii=ammo[i].x-1;ii<=ammo[i].x+1;ii++){
                        mapx[k][ii]=3;
                        adicent(ammo[i].x,ammo[i].y,2);
                        adicent2(ammo[i].x,ammo[i].y,ammo[i].team);                                
                    }
                }
                boom=1;
            }
            if(mapx[ammo[i].y][ammo[i].x]!=0&&(mapx[ammo[i].y][ammo[i].x]<200||mapx[ammo[i].y][ammo[i].x]>250)&&mapx[ammo[i].y][ammo[i].x]!=3&&mapx[ammo[i].y][ammo[i].x]!=4){
                if(ammo[i].par==0||ammo[i].par==6||ammo[i].par==7||ammo[i].par==8){            
                if(((ammo[i].y==play.y-1&&ammo[i].x==play.x)||(ammo[i].y==play.y&&ammo[i].x==play.x-1)||(ammo[i].y==play.y+1&&ammo[i].x==play.x)||(ammo[i].y==play.y&&ammo[i].x==play.x+1))&&ammo[i].team==0){
                    if(ammo[i].par==6){                     
                        if(play.buff==1){
                            play.bufft+=100;
                        }else{
                            play.buff=1;
                            play.bufft=100;
                        }
                    }else if(ammo[i].par==7){
                        if(play.buff==2){
                            play.bufft+=100;
                        }else{
                            play.buff=2;
                            play.bufft=100;
                        }                      
                    }
                    if(ammo[i].par==8){
                        am+=8;
                        int a91=0;
                        for(int k=0;k<8;k++){
                            for(int z=a91;z<1000;z++){
                                if(!ammo[z].use){
                                    ammo[z].use=1;
                                    ammo[z].y=ammo[i].y;
                                    ammo[z].x=ammo[i].x;
                                    ammo[z].team=ammo[i].team;
                                    ammo[z].par=0;
                                    ammo[z].dev=k;
                                    break;
                                }
                                a91++;
                            }
                        }
                    }
                    play.h-=10;
                    ammo[i].use=0;
                    am--;
                }else if(mapx[ammo[i].y][ammo[i].x]==2){
                    if(ammo[i].par==8){
                        am+=8;
                        int a91=0;
                        for(int k=0;k<8;k++){
                            for(int z=a91;z<1000;z++){
                                if(!ammo[z].use){
                                    ammo[z].use=1;
                                    ammo[z].y=ammo[i].y;
                                    ammo[z].x=ammo[i].x;
                                    ammo[z].team=ammo[i].team;
                                    ammo[z].par=0;
                                    ammo[z].dev=k;
                                    break;
                                }
                                a91++;
                            }
                        }
                    }
                    ammo[i].use=0;
                    play.enegy++;
                    mapx[ammo[i].y][ammo[i].x]=3;
                    am--;
                    boom=1;                    
                }else if(mapx[ammo[i].y][ammo[i].x]==410&&adicent2(ammo[i].x,ammo[i].y,ammo[i].team)){
                    if(ammo[i].par==8){
                        am+=8;
                        int a91=0;
                        for(int k=0;k<8;k++){
                            for(int z=a91;z<1000;z++){
                                if(!ammo[z].use){
                                    ammo[z].use=1;
                                    ammo[z].y=ammo[i].y;
                                    ammo[z].x=ammo[i].x;
                                    ammo[z].team=ammo[i].team;
                                    ammo[z].par=0;
                                    ammo[z].dev=k;
                                    break;
                                }
                                a91++;
                            }
                        }
                    }                   
                    ammo[i].use=0;am--;
                }else if(ammo[i].team==1){                  
                    if(ammo[i].par==8){
                        am+=8;
                        int a91=0;
                        for(int k=0;k<8;k++){
                            for(int z=a91;z<1000;z++){
                                if(!ammo[z].use){
                                    ammo[z].use=1;
                                    ammo[z].y=ammo[i].y;
                                    ammo[z].x=ammo[i].x;
                                    ammo[z].team=ammo[i].team;
                                    ammo[z].par=0;
                                    ammo[z].dev=k;
                                    break;
                                }
                                a91++;
                            }
                        }
                    }
                    ammo[i].use=0;
                    adicent(ammo[i].x,ammo[i].y,0);
                    //adicent2(ammo[i].x,ammo[i].y,ammo[i].team);
                    am--;
                }}else if(ammo[i].par==1||ammo[i].par==2||ammo[i].par==8||ammo[i].par==9||ammo[i].par==10||ammo[i].par==11){
                    if(ammo[i].par==11){
                        ammo[i].use=0;am--;
                        fire(ammo[i].y-2,ammo[i].y+2,ammo[i].x-2,ammo[i].x+2,8);
                    }
                    for(int k=ammo[i].y-1;k<=ammo[i].y+1;k++){
                        for(int ii=ammo[i].x-1;ii<=ammo[i].x+1;ii++){
                            mapx[k][ii]=3;
                            if(((k==play.y-1&&ii==play.x)||(k==play.y&&ii==play.x-1)||(k==play.y+1&&ii==play.x)||(k==play.y&&ii==play.x+1))&&ammo[i].team==0){
                                play.h-=10;
                            }
                            adicent(ammo[i].x,ammo[i].y,0);
                            adicent2(ammo[i].x,ammo[i].y,ammo[i].team);                                
                        }
                    }
                    boom=1;
                    ammo[i].use=0;am--;
                }
                
                continue;
            }
            if(ammo[i].y<0||ammo[i].y>26){
                ammo[i].use=0;
                am--;
                continue;
            }
            if(ammo[i].x<0||ammo[i].x>20){
                ammo[i].use=0;
                am--;
                continue;
            }    
            if(ammo[i].use==1)
            if(ammo[i].par==0||ammo[i].par==6||ammo[i].par==7){
                mapx[ammo[i].y][ammo[i].x]=200;
            }else if(ammo[i].par==1||ammo[i].par==9||ammo[i].par==11){
                mapx[ammo[i].y][ammo[i].x]=201;
                if(ammo[i].dev==0){
                    mapx[ammo[i].y+1][ammo[i].x]=202;
                }else if(ammo[i].dev==1){
                    mapx[ammo[i].y][ammo[i].x-1]=202;
                }else if(ammo[i].dev==2){
                    mapx[ammo[i].y-1][ammo[i].x]=202;
                }else if(ammo[i].dev==3){
                    mapx[ammo[i].y][ammo[i].x+1]=202;
                }
                
            }else if(ammo[i].par==10){
                mapx[ammo[i].y][ammo[i].x]=3;
            }
            else if(ammo[i].par==2){
                mapx[ammo[i].y][ammo[i].x]=203;
                if(ammo[i].dev==0){
                    mapx[ammo[i].y+1][ammo[i].x]=204;
                }else if(ammo[i].dev==1){
                    mapx[ammo[i].y][ammo[i].x+1]=204;
                }else if(ammo[i].dev==2){
                    mapx[ammo[i].y-1][ammo[i].x]=204;
                }else if(ammo[i].dev==3){
                    mapx[ammo[i].y][ammo[i].x-1]=204;
                }
                
            }else if(ammo[i].par==8){
                mapx[ammo[i].y][ammo[i].x]=208;
            }
            }
        }
    }

void rock(int a1){
    for(int i=26;i>=0;i--){
        for(int ii=19;ii>=0;ii--){
            if(mapx[i][ii]==2){
                if((i+1==play.y&&ii==play.x+1)||(i+1==play.y&&ii==play.x-1)||(i+1==play.y-1&&ii==play.x)){
                    mapx[i+1][ii]=3;
                    boom=1;
                    play.dead=0;
                    continue;
                }
                mapx[i][ii]=0;
                mapx[i+1][ii]=2;
                continue;
            }
            if(mapx[i][ii]==3&&mapx[i+1][ii]==0){
                mapx[i][ii]=0;
                mapx[i+1][ii]=3; 
            }
        }
    }
    for(int i=1;i<=randx[0]%(a1+1);i++){
        mapx[0][randx[i]]=2;
    }
    ra=0;
}
void rands(){
    int a=0;
    struct timeb timeSeed;
    ftime(&timeSeed);
       srand(timeSeed.time * 1000 + timeSeed.millitm); // milli time
    unsigned int range = a - 20 + 1;
    unsigned int crand = rand() % range + 20;
    randx[ra]=crand%20;
    ra++;
}
void enemyx(int a1,int p,bool v){
    int a2=0;
    en+=a1;
    if(v==1){
        for(int i=20;i<27;i++){
            for(int ii=0;ii<20;ii++){
                mapx[i][ii]=3;
                boom=1;
            }
        }
    }
    for(int i=0;i<=500;i++){
        if(a2==a1){
            return ;
        }
        if(enemy[i].dead==0){
            enemy[i].dead=1;
            enemy[i].par=p;
            if(p==0||p==1){
                enemy[i].h=10;
                enemy[i].sp=1;
            }else if(p==4){
                enemy[i].h=10;
                enemy[i].sp=3;
            }else if(p==5){
                enemy[i].h=20;
                enemy[i].sp=5;
            }
            enemy[i].v=v;
            enemy[i].v3=v;
            if(enemy[i].v){
                enemy[i].y=26;
            }else{
                enemy[i].y=0;
            }
            enemy[i].x=20/a1*a2;
            //enemy[i].x=10;
            enemy[i].v2=randx[a2]%2;
            a2++;
        }
    }
    ra=0;
}
void enemy2(){
    int a1=0;
    for(int i=0;i<=500;i++){
        if(a1==en){
            return;
        }
        if(enemy[i].dead==1){
            if(enemy[i].bufft>0){
                enemy[i].bufft--;
                if(enemy[i].buff==1){
                    enemy[i].m--;
                }else if(enemy[i].buff==2){
                    enemy[i].h--;
                    if(enemy[i].h<=0){
                        adicent(enemy[i].x,enemy[i].y,0);
                    }
                }
            }
            if(firex[enemy[i].y][enemy[i].x]>0){
                enemy[i].buff=2;
                enemy[i].bufft=10;
            }
            enemy[i].m++;
            a1++;
            if(enemy[i].m<enemy[i].sp) continue;
            enemy[i].m=0;
            mapx[enemy[i].y][enemy[i].x]=0;
            if(enemy[i].v2){
                enemy[i].x++;
            }else{
                enemy[i].x--;
            }
            if(enemy[i].x>=19){
                enemy[i].v2=0;
            }else if(enemy[i].x<=1){
                enemy[i].v2=1;
            }
            if(enemy[i].v3){
                if(mapx[enemy[i].y-1][enemy[i].x]==2){
                    mapx[enemy[i].y-1][enemy[i].x]=3;
                    enemy[i].dead=0;
                    continue;
                }
                enemy[i].y--;
            }else{
                if(mapx[enemy[i].y+1][enemy[i].x]==2){
                    mapx[enemy[i].y+1][enemy[i].x]=3;
                    enemy[i].dead=0;
                        continue;
                }
                enemy[i].y++;
            }
        if(enemy[i].y==22||enemy[i].y==6||enemy[i].y==0||enemy[i].y==26){
            if(enemy[i].v3){
                enemy[i].v3=0;
            }else{
                enemy[i].v3=1;
            }
        }
        if(enemy[i].v){
            mapx[enemy[i].y][enemy[i].x]=300+2*enemy[i].par;
        }else{
            mapx[enemy[i].y][enemy[i].x]=301+2*enemy[i].par;
        }           
        }      
}   
}
void bplane2(){
    int a1=0;
    for(int i=0;i<9;i++){
        if(a1>bp){
            return;
        }
        if(bplane[i].u==1){
            a1++;
            mapx[bplane[i].y][bplane[i].x]=0;
            if(bplane[i].s[bplane[i].sx]==0){
                bplane[i].y++;
                bplane[i].x--;
            }else if(bplane[i].s[bplane[i].sx]==1){
                bplane[i].y++;
            }else if(bplane[i].s[bplane[i].sx]==2){
                bplane[i].y++;
                bplane[i].x++;
            }
            bplane[i].sx++;
            //mapx[bplane[i].y][bplane[i].x]=301;
            if(bplane[i].sx==17){
                bplane[i].u=0;
                for(int ii=bplane[i].y-1;ii<=bplane[i].y+1;ii++){
                    for(int iii=bplane[i].x-1;iii<bplane[i].x+1;iii++){
                        mapx[ii][iii]=3;
                        if(((ii==play.y-1&&iii==play.x)||(ii==play.y&&iii==play.x-1)||(ii==play.y+1&&iii==play.x)||(ii==play.y&&iii==play.x+1))) play.h-=50;
                    }
                }
                boom=1;
            }
        }
    }
}
void attack(){
    for(int k=0;k<=500;k++){
    if(enemy[k].dead==1){
        enemy[k].shot++;
        if(enemy[k].shot<enemy[k].sp){
            continue;
        }
        enemy[k].shot=0;
        if(enemy[k].par==4){
            if(enemy[k].v){
                xray(enemy[k].x,enemy[k].y,1,2,1,50);
            }else{
                xray(enemy[k].x,enemy[k].y,1,0,1,50);
            }
            
            xrayx=1;
            continue;
        }
        if(enemy[k].par==5){
            autodun(enemy[k].y,enemy[k].x-2,enemy[k].x+2,1);
        }
    for(int i=0;i<1001;i++){
        if(ammo[i].use==0){
            ammo[i].use=1;
            ammo[i].x=enemy[k].x;
            if(enemy[i].v){
                ammo[i].y=enemy[k].y-1;
            }else{
                ammo[i].y=enemy[k].y+1;
            }
            
            ammo[i].par=enemy[k].par;
            
            if(enemy[k].v){
                ammo[i].dev=0;
            }else{
                ammo[i].dev=2;
            }
            ammo[i].team=0;
            am++;
            break;
        }    
    }
        
    }}
        
}
void giftx(){
    int a1=0,a2=0;gi++;
    for(int i=0;i<abs(randx[0]+randx[1]+1)%(randx[0]+1)+1;i++){
        if(mapx[0][a1]==2){
            continue;
        }
        if(a1==20){
            a1=0;
        }
        a1++;
        a2++;
        if(a2>=25){
            break;
        }
    }
    for(int i=0;i<100;i++){
        if(gift[i].use==0){
            gift[i].use=1;
            gift[i].y=0;
            gift[i].x=a1;
            gift[i].par=randx[4]%5;
            break;
        }
    }
    ra=0;
}
void gift2(){
    for(int i=0;i<100;i++){
        if(gift[i].use==1){
            mapx[gift[i].y][gift[i].x]=0;
            gift[i].y++;
            if(((gift[i].x==play.x&&gift[i].y==play.y)||(gift[i].x==play.x-1&&gift[i].y==play.y)||(gift[i].x==play.x+1&&gift[i].y==play.y)||(gift[i].x==play.x&&gift[i].y==play.y+1)||(gift[i].x==play.x-1&&gift[i].y==play.y+1)||(gift[i].x==play.x+1&&gift[i].y==play.y+1))&&gift[i].use){
            gift[i].use=0;
            if(gift[i].par==0){
                play.h+=50;
                speak(0,1);
            }else if(gift[i].par==1){
                play.coin+=100;
                speak(0,0);
            }else if(gift[i].par==2){
                play.ammo+=100;
                speak(0,2);
            }
        }
        if(gift[i].y>=27){
            gift[i].use=0;
        }
        }
        
    }
}
void bossx(){
    mapx[boss.y][boss.x]=0;
    mapx[boss.y][boss.x+1]=0;
    mapx[boss.y][boss.x-1]=0;
    mapx[boss.y+1][boss.x]=0;
    if(boss.y<7){
        boss.y++;
        return;
    }
    if(boss.x>play.x){
        boss.x--;
    }else if(boss.x<play.x){
        boss.x++;
    }
    if(abs(boss.x-play.x)<3){
    if(boss.par==0){
        for(int k=-1;k<=1;k++){
            for(int i=0;i<1001;i++){
                if(ammo[i].use==0){
                    ammo[i].use=1;
                    ammo[i].x=boss.x+k;
                    if(k==0){
                        ammo[i].y=boss.y;
                    }else{
                        ammo[i].y=boss.y-1;    
                    }                                    
                    ammo[i].par=0;
                    ammo[i].dev=2;    
                    ammo[i].team=0;
                        am++;
                        break;
                }    
            }
        }    
    }else if(boss.par==1){
            for(int i=0;i<1001;i++){
                if(ammo[i].use==0){
                    ammo[i].use=1;
                    ammo[i].x=boss.x;
                    ammo[i].y=boss.y+1;                                    
                    ammo[i].par=1;
                    ammo[i].dev=2;    
                    ammo[i].team=0;
                    am++;
                    break;
                    }    
                }
    }else if(boss.par==2&&abs(boss.x-play.x)<2){       
        for(int i=0;i<1001;i++){
            if(ammo[i].use==0){
                ammo[i].use=1;
                ammo[i].x=boss.x;
                ammo[i].y=boss.y+1;                                    
                ammo[i].par=2;
                ammo[i].dev=2;    
                ammo[i].team=0;
                am++;
                break;  
            }
        }    
    }else if(boss.par==3){
        int a1=0;
        for(int k=-1;k<=1;k++){
            for(int i=a1;i<1001;i++){
                if(ammo[i].use==0){
                    ammo[i].use=1;
                    ammo[i].x=boss.x+k;
                    ammo[i].y=boss.y+1;                                   
                    ammo[i].par=1;
                    ammo[i].dev=2;    
                    ammo[i].team=0;
                    am++;
                    break;
                } 
                a1++;   
            }
        }
    }else if(boss.par==4&&boss.x==play.x){
        xray(boss.x,boss.y,1,0,1,5);
        xrayx=1;
    }
    }
    
}
bool dfs(int s,int par,int x,int y){
    if((y==play.y&&x==play.x)||(y==play.y&&x==play.x-1)||(y==play.y&&x==play.x+1)){
        return 1;
    }
    if(y>20||x<0||x>=20){
        return 0;
    }
    for(int i=0;i<3;i++){
        if(i==1){
            if(mapx[y+1][x]!=3){
                bplane[par].s[s]=i;
                if(dfs(s+1,par,x,y+1)){
                    return 1;
                }
            }
        }
        if(i==0){
            if(mapx[y+1][x-1]!=3){
                bplane[par].s[s]=i;
                if(dfs(s+1,par,x-1,y+1)){
                    return 1;
                }
            }
        }
        if(i==2){
            if(mapx[y+1][x+1]!=3){
                bplane[par].s[s]=i;
                if(dfs(s+1,par,x+1,y+1)){
                    return 1;
                }
            }
        }
    }
}
void bplanex(int a1){
    bool ok=0;
    for(int i=0;i<a1;i++){
        ok=0;
        for(int k=0;k<30;k++){
            if(bplane[k].u){
                continue;
            }
            for(int ii=0;ii<20;ii++){
                if(dfs(0,k,ii,0)){
                    bplane[k].h=50;
                    bplane[k].y=0;
                    bplane[k].x=ii;
                    bplane[k].u=1;
                    bplane[k].sx=0;
                    bp++;
                    ok=1;
                    break;
                }else{
                    memset(bplane[k].s,0,sizeof(bplane[k].s));
                }
            }    
            if(ok){
                break;
            }
        }
        
        
    }
}
int xa[3];
void clearshop(int a1,int a2,int a3,int ax){
    xa[0]=a1;
    xa[1]=a2;
    xa[2]=a3;
    clear();
    DWORD written;
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD startPos = {0, 0};
    SetConsoleCursorPosition(hConsole, startPos);
    cout<<"      small shop"<<endl;
    cout<<"#                     #"<<endl;
    cout<<"#                     #"<<endl;
    cout<<"#                     #"<<endl;
    cout<<"#                     #"<<endl;
    cout<<"#                     #"<<endl;
    cout<<"#                     #"<<endl;
    cout<<"#                     #"<<endl;
    cout<<"#                     #"<<endl;
    cout<<"#                     #"<<endl;
    cout<<"#                     #"<<endl;
    cout<<"code "<<xa[0]<<" "<<xa[1]<<" "<<xa[2];
    startPos = {3, 5};
    SetConsoleCursorPosition(hConsole, startPos);
    
    for(int i=0;i<3;i++){
        for(int ii=0;ii<3;ii++){
            startPos = {3+7*i, 5+ii};
            SetConsoleCursorPosition(hConsole, startPos);
            for(int iii=0;iii<3;iii++){
                cout<<thing[xa[i]-1][ii][iii];
            }
        }
        startPos = {2+i*7, 8};
        SetConsoleCursorPosition(hConsole, startPos);
        if(xa[i]==1){
            cout<<"fix+";
        }else if(xa[i]==2){
            cout<<"rocket";
        }else if(xa[i]==3){
            cout<<"ammo+";
        }else if(xa[i]==4){
            cout<<"X-ray";
        }else if(xa[i]==5){
            cout<<"rush-Z";
        }else if(xa[i]==6){
            cout<<"fire";
        }
        startPos = {2+i*7, 9};
        SetConsoleCursorPosition(hConsole, startPos);
        cout<<price[xa[i]-1]<<"$"; 
    }
    if(ax==1){
        COORD startPos = {4, 10};
        SetConsoleCursorPosition(hConsole, startPos);
    }else if(ax==2){
        COORD startPos = {10, 10};
        SetConsoleCursorPosition(hConsole, startPos);
    }else if(ax==3){
        COORD startPos = {16, 10};
        SetConsoleCursorPosition(hConsole, startPos);
    }
    cout<<"^";
    startPos = {1, 12};
    SetConsoleCursorPosition(hConsole, startPos);
    cout<<"coin:"<<play.coin;
    startPos = {1, 13};
    SetConsoleCursorPosition(hConsole, startPos);
    cout<<"use 'a' 'd' to change the thing you choose , use 'esc' to quit";
}
void xray(int x,int y,bool p,int dev,bool io,int h){
    if(io){
        if(dev==1){
            if((play.y==y||play.y-1==y||play.y+1==y)&&p==1){
                play.h-=h;    
            }
            for(int i=x;i<20;i++){
                if(!p)adicent(i,y,0);                
                mapx[y][i]=206;
            }
        }else if(dev==0){
            if((play.x==x||play.x-1==x||play.x+1==x)&&p==1){
                play.h-=h;    
            }
            for(int i=y;i<26;i++){
                if(!p)adicent(i,x,0);
                mapx[i][x]=205;
            }
        }else if(dev==3){
            if((play.y==y||play.y-1==y||play.y+1==y)&&p==1){
                play.h-=h;    
            }
            for(int i=x;i>=0;i--){
                if(!p)adicent(i,y,0);                
                mapx[y][i]=206;
            }
        }else if(dev==2){
            if((play.x==x||play.x-1==x||play.x+1==x)&&p==1){
                play.h-=h;    
            }
            for(int i=y;i>=0;i--){
                if(!p)adicent(i,x,0);
                mapx[i][x]=205;
            }
        }
    }else{
        for(int i=0;i<27;i++){
            for(int ii=0;ii<20;ii++){
                if(mapx[i][ii]==205||mapx[i][ii]==206){
                    mapx[i][ii]=3;
                }
                boom=1;
            }
        }
    }
}
int xa2[3];
int buy(int a2,int a3,int a4,int a1){
    a1--;
    xa2[0]=a2;
    xa2[1]=a3;
    xa2[2]=a4;
    if(xa2[a1]==1){
        if(play.coin>=200&&play.bagnum<3){
        play.coin-=200;    
        play.bag.push_back(xa2[a1]);
        play.bagnum++;
        return 1;    
    }else{
        return 0;
    } 
    }
    if(xa2[a1]==2){
        if(play.coin>=400&&play.bagnum<3){
        play.coin-=400;
        play.bag.push_back(xa2[a1]);
        play.bagnum++;
            return 1;
    }else return 0;
    }
    if(xa2[a1]==3){
        if(play.coin>=100&&play.bagnum<3){
        play.coin-=100;
        play.bag.push_back(xa2[a1]);
        play.bagnum++;                        
    }else return 0;
    }
    if(xa2[a1]==4){
        if(play.coin>=300&&play.bagnum<3){
        play.coin-=300;
        play.bag.push_back(xa2[a1]);
        play.bagnum++;                        
    }else return 0;
    }
    if(xa2[a1]==5){
        if(play.coin>=1000&&play.bagnum<3){
        play.coin-=1000;
        play.bag.push_back(xa2[a1]);
        play.bagnum++;                        
    }else return 0;
    }
    if(xa2[a1]==6){
        if(play.coin>=600&&play.bagnum<3){
        play.coin-=600;
        play.bag.push_back(xa2[a1]);
        play.bagnum++;                        
    }else return 0;
}
}
void shop(){
    clear();
    int a1,a2=1,a3=randx[4]%6+1,a4=randx[5]%6+1,a5=randx[6]%6+1;
    clearshop(a3,a4,a5,a2);
    while(1){
        if(_kbhit()){
            a1=getch();
            if(a1=='a'&&a2-1>0){
                a2--;
            }
            if(a1=='d'&&a2+1<4){
                a2++;
            }
            if(a1==27){
                break;
            }
            if(a1==32){
                buy(a3,a4,a5,a2);
            }
            clearshop(a3,a4,a5,a2);
        }    
    }
    
    clear();
    screen();
    }
void baguse(int a1){
    a1--;
    if(play.bag.begin()+a1>play.bag.end()){
        return;
    }
    if(play.bag[a1]==1){
        play.h+=100;
    }else if(play.bag[a1]==2){
        am+=3;
        for(int i=play.x-1;i<=play.x+1;i++){
            for(int ii=0;ii<500;ii++){
                if(ammo[ii].use==0){
                    ammo[ii].use=1;
                    ammo[ii].y=27;
                    ammo[ii].x=i;
                    ammo[ii].dev=0;
                    ammo[ii].team=0;
                    ammo[ii].par=1;
                    break;
                }
            }            
        }
    }else if(play.bag[a1]==3){
        play.ammo+=100;
    }else if(play.bag[a1]==4){
        for(int i=play.x-1;i<=play.x+1;i++){
            for(int ii=play.y;ii>=0;ii--){
                if(mapx[ii][i]==2){
                    mapx[ii][i]=3;
                    
                }
            }
        }
        boom=1;
    }else if(play.bag[a1]==5){
        zp=1;
        play.h=1000;
        zt=3000;
    }else if(play.bag[a1]==6){
        am+=3;
        for(int i=play.x-1;i<=play.x+1;i++){
            for(int ii=0;ii<500;ii++){
                if(ammo[ii].use==0){
                    ammo[ii].use=1;
                    ammo[ii].y=play.y-3;
                    ammo[ii].x=i;
                    ammo[ii].dev=2;
                    ammo[ii].team=0;
                    ammo[ii].par=11;
                    break;
                }
            }            
        }
    }
    play.bag[a1]=0;
}
void bigbossx(){
    for(int i=bigboss.y-2;i<=bigboss.y+2;i++){
        for(int ii=bigboss.x-2;ii<=bigboss.x+2;ii++){
            mapx[i][ii]=0;
        }
    }
    if(bigboss.x==0&&bigboss.y==0){
        for(int i=0;i<10;i++){
            for(int ii=0;ii<20;ii++){
                if(mapx[i][ii]==2){
                    mapx[i][ii]=3;
                }
            }
        }
        bigboss.x=10;
        bigboss.y=7;
        return ;
    }
    if(bigboss.x>play.x&&bigboss.x-4>=0){
        bigboss.x--;
    }else if(bigboss.x<play.x&&bigboss.y+4<20){
        bigboss.x++; 
    }
    if(bigboss.t<=0){
        bigboss.t=5; 
        int a1=randx[0]%3;
        if(a1==0){
            if(bigboss.par==0){
                enemyx(5,0,0);
            }else if(bigboss.par==1){
                enemyx(3,5,0);
            }else if(bigboss.par==2){
                enemyx(5,6+randx[4]%2,0);
            }else if(bigboss.par==3){
                enemyx(1,8,0);
            }     
        }
        else if(a1==1){
            if(bigboss.par==0){            
            int a2=0;
            am+=3;
            for(int k=-2;k<=2;k++){
                for(int i=a2;i<1000;i++){
                    if(ammo[i].use==0){
                        ammo[i].use=1;
                        ammo[i].par=1;
                        ammo[i].dev=2;
                        ammo[i].team=0;
                        ammo[i].x=bigboss.x+k;
                        ammo[i].y=bigboss.y+3;
                        break;
                    }
                    a2++;
                }
            }
            }else if(bigboss.par==1){
                autodun(bigboss.y+3,bigboss.x-2,bigboss.x+2,1);
            }else if(bigboss.par==2){
                play.buff=1;
                play.bufft=5000;
            }else if(bigboss.par==3){
                int a2=0;
                for(int k=0;k<=1;k++){
                for(int i=a2;i<1000;i++){
                    if(ammo[i].use==0){
                        ammo[i].use=1;
                        ammo[i].par=9;
                        ammo[i].dev=2;
                        ammo[i].team=0;
                        if(k)ammo[i].x=bigboss.x-2;
                        else ammo[i].x=bigboss.x+2;
                        ammo[i].y=bigboss.y+3;
                        break;
                    }
                    a2++;
                }
            }
            }
        }else if(a1==2){
            if(bigboss.par==1){
                enemyx(3,4,0);
            }else if(bigboss.par==3){
                play.buff=2;
                play.bufft=1000;
            }
        }
    }else{
        bigboss.t--;
    }
    if(abs(bigboss.x-play.x)<=3){
        if(bigboss.par==0||bigboss.par==3){        
        am+=5;
        int a2=0;
        for(int k=-1;k<=1;k++){        
        for(int i=a2;i<1000;i++){
            if(ammo[i].use==0){
                ammo[i].use=1;
                if(k==0){
                    ammo[i].par=1;
                    ammo[i].y=bigboss.y+3;
                }else{
                    ammo[i].par=0;
                    ammo[i].y=bigboss.y+2;
                }        
                ammo[i].dev=2;
                ammo[i].team=0;
                ammo[i].x=bigboss.x+k;
                
                break;
            }
            a2++;
        }}}else if(bigboss.par==1){
            for(int i=bigboss.x-2;i<=bigboss.x+2;i+=2){
                xray(i,bigboss.y+1,1,0,1,15);
            }
            xrayx=1;
        }else if(bigboss.par==2){
            if(bigboss.h<500){
                if(play.buff==1){
                    play.bufft+=2000;
                }else{
                    play.buff=1;
                    play.bufft=2000;
                }
                bigboss.u=0;
                bigboss.h=0;
                boom=1;
                for(int i=bigboss.y-2;i<=bigboss.y+2;i++){
                    for(int ii=bigboss.x-2;ii<=bigboss.x+2;ii++){
                        mapx[i][ii]=3;
                    }
                }
                boss.u=1;
                boss1n=1;
                boss.par=3;
                boss.y=bigboss.y;
                boss.x=bigboss.x;
                boss.h=500;
                return ;
            }
            am+=5;
            int a2=0;
            for(int k=-2;k<=2;k++){        
            for(int i=a2;i<1000;i++){
                if(bigboss.x+k<0||bigboss.x+k>=20){
                    continue;
                }
                if(ammo[i].use==0){
                    ammo[i].use=1;
                    ammo[i].par=6+randx[4]%2;
                    ammo[i].y=bigboss.y+3;     
                    ammo[i].dev=2;
                    ammo[i].team=0;
                    ammo[i].x=bigboss.x+k;              
                    break;
                }
            a2++;
        }}
        }
    }
    
}
void autodun(int y,int x1,int x2,int p){
    for(int i=0;i<100;i++){
        if(!dun[i].u){
            dun[i].u=1;
            dun[i].x1=x1;
            dun[i].x2=x2;
            dun[i].y=y;
            dun[i].p=p;
            dun[i].h=250;
            du++;
            return;
        }
    }
}
void gameloop3(){
    cout<<"choose level"<<endl;
    cout<<"level 1"<<endl;
    cout<<"level 2"<<endl;
    cout<<"level 3"<<endl;
    cout<<"level 4(test)"<<endl;
    cout<<"level 5"<<endl;
    cout<<"level 6"<<endl;
    cout<<"level 7"<<endl;
    cout<<"level 8"<<endl;

cout<<"level 9<<endl; 

  cout<<"use number key to choose"<<endl;
    while(1){
        if(_kbhit()){
            int a1=getch();
            if(a1>='0'&&a1<='9'){
                mis=a1-'0';
                if(a1=='2'){
                    play.enegy=100;
                }
                clear();
                screen();
                return;
            }
        }
    }
}
void gameloop2(){
    clear();
    color(2);
    cout<<"       ********************************"<<endl;
    cout<<"         ###   #    ##   #    #  ####"<<endl;
    cout<<"         #  #  #   #  #  ##   #  #"<<endl;
    cout<<"         ###   #   ####  # #  #  #"<<endl;
    cout<<"         #     #   #  #  #  # #  ####"<<endl;
    cout<<"         #     #   #  #  #   ##  #"<<endl;
    cout<<"         #     ##  #  #  #    #  ####"<<endl;
    cout<<"       ********************************"<<endl;
    color(14);
    cout<<"               &    battle    &"<<endl;    
    cout<<"           & made by chonggg2 gang &    "<<endl;
    color(4);
    cout<<"     welcome "<<playtext.name<<endl;
    color(1);
    cout<<"     coin:"<<playtext.coins<<endl;
    color(5);
    cout<<"     highscore:"<<playtext.highScore<<endl;
    color(15);
    cout<<"     use '1' '2' '3' to choose "<<endl;
    cout<<"     1.start game"<<endl;
    cout<<"     2.change your password"<<endl;
    cout<<"     3.save/load game"<<endl;
    cout<<"     4.trait"<<endl;
    cout<<"     5.set"<<endl;

        cout<<">>想要上信息课打游戏无忧?登录csdn官网,搜索chonggg2,"<<endl;
    cout<<"获取免费脱控软件。" <<endl<<"www.csdn.net";
}
void gameloop() {
    gameloop2();
    while(1) {
        if(_kbhit()) {
            int a1 = getch();
            if(a1 == '1') {
                clear();
                gameloop3();
                return;
            }
            if(a1 == '2') {
                clear();
                string x1;
                cout << "Please input your old password" << endl;
                cin >> x1;
                if(x1 == playtext.password) {
                    cout << "Please input your new password" << endl;
                    cin >> x1;
                    playtext.password = x1;
                    savePlayerData(playtext); // 保存修改后的密码
                }
            }
            if(a1 == '3') {
                clear();
                cout << "1. Save game" << endl;
                cout << "2. Load game" << endl;
                cout << "3. Back to menu" << endl;
                
                while(true) {
                    if(_kbhit()) {
                        int choice = getch();
                        if(choice == '1') {
                            savePlayerData(playtext);
                            cout << "Game saved successfully!" << endl;
                            Sleep(1000);
                            break;
                        }
                        else if(choice == '2') {
                            if(loadPlayerData(playtext)) {
                                cout << "Game loaded successfully!" << endl;
                                Sleep(1000);
                            } else {
                                cout << "No save file found!" << endl;
                                Sleep(1000);
                            }
                            break;
                        }
                        else if(choice == '3') {
                            break;
                        }
                    }
                }
            }
            if(a1=='4'){
                bool a78=0;
                cout<<"1. My trait"<<endl;
                cout<<"2. Shop"<<endl;
                cout<<"3. Back to menu"<<endl;
                while(true) {
                    if(_kbhit()) {
                        int choice = getch();
                        if(choice == '1') {
                            clear();
                            for(int i=0;i<20;i++){
                                if(ci[i]){
                                    cout<<"        ";
                                    if(i==0){
                                        cout<<i+1<<" . 量子飞翼 : 散射子弹"<<endl;
                                    }else if(i==1){
                                        cout<<i+1<<" . 两肋插刀 : 向前后发射子弹"<<endl;
                                    }else if(i==2){
                                        cout<<i+1<<" . 盆满钵满 : 收集金币速度加快"<<endl;
                                    }else if(i==3){
                                        cout<<i+1<<" . 坚如磐石 : 初始血量为800"<<endl;
                                    } 
                                }
                                
                            }cout<<"按任意键退出";
                            while(1){
                                if(_kbhit()){
                                    a78=1;
                                    break;
                                }
                            }
                        }
                        else if(choice == '2') {
                            clear();
                            for(int i=0;i<20;i++){
                                if(i==0){
                                    cout<<i+1<<" . 量子飞翼 : 散射子弹";
                                }else if(i==1){
                                    cout<<i+1<<" . 两肋插刀 : 向前后发射子弹";
                                }else if(i==2){
                                       cout<<i+1<<" . 盆满钵满 : 收集金币速度加快";
                                }else if(i==3){
                                    cout<<i+1<<" . 坚如磐石 : 初始血量为800";
                                }
                                if(cs[i]!=0){
                                    cout<<"     "<<cs[i]<<"$"<<endl;
                                }
                                
                            }
                            cout<<"输入要购买的商品(输入-1返回) ";
                            int a78;
                            cin>>a78;
                            if(a78==-1||a78<0||a78>20){
                                break;
                            }
                            a78--;
                            if(play.coin>=cs[a78]){
                                ci[a78]=1;
                                play.coin-=cs[a78];
                                cout<<"已购买";
                                savePlayerData(playtext);
                            }else{
                                cout<<"金币不足  还需要"<<cs[a78]-play.coin<<"$";
                                cout<<play.coin;
                            }
                            Sleep(1000);
                            break;
                        }
                        else if(choice == '3') {
                            break;
                        }
                    }
                    if(a78){
                        break;
                    }
                }
            }//
            if(a1=='5'){
                   cout<<"1.change speed"<<endl;
                   cout<<"2.back to menu"<<endl;
                   while(1){
                    if(_kbhit()){
                        int a91=getch();
                        if(a91=='1'){
                            clear();
                            cout<<"speed:";
                            if(speed==1){
                                cout<<"slow";
                            }else{
                                cout<<"fast";
                            }
                            cout<<endl<<"use space to change speed , press esc to exit";
                            while(1){
                                if(_kbhit()){
                                    int a13=getch();
                                    if(a13==' '){
                                        if(speedb==1){
                                            speedb=0;
                                        }else{
                                            speedb++;
                                        }
                                        clear();
                                        cout<<"speed:";
                                        if(speed==1){
                                            cout<<"slow";
                                        }else{
                                            cout<<"fast";
                                        }
                                        cout<<endl<<"use space to change speed , press esc to exit";
                                    }
                                    if(a13==27){
                                        break;
                                    }
                                }    
                            }
                            break;
                        }else if(a91=='2'){
                            break;
                        }
                        break;                            
                    }
                    
                }
            }
            gameloop2();
        }
    }
}
bool isFirstTimePlayer() {
    std::ifstream inFile("player_data.dat", std::ios::binary);
    return !inFile.good(); // 文件不存在返回true
}

// 初始化新玩家存档
void initializeNewPlayer() {
    PlayerData newPlayer;
    
    clear();
    color(14);
    cout << "====================================" << endl;
    cout << "       Welcome New Pilot!" << endl;
    cout << "====================================" << endl;
    color(15);
    
    // 获取玩家名称
    cout << "Enter your callsign (max 15 chars): ";
    getline(cin, newPlayer.name);
    if(newPlayer.name.empty()) {
        newPlayer.name = "UnknownPilot";
    } else if(newPlayer.name.size() > 15) {
        newPlayer.name = newPlayer.name.substr(0, 15);
    }
    
    // 设置初始密码
    color(11);
    cout << "\nSet your security code (max 12 chars): ";
    getline(cin, newPlayer.password);
    if(newPlayer.password.empty()) {
        newPlayer.password = "123456";
    } else if(newPlayer.password.size() > 12) {
        newPlayer.password = newPlayer.password.substr(0, 12);
    }
    
    // 初始化游戏数据
    newPlayer.coins = 1000;
    newPlayer.highScore = 0;
    newPlayer.p = 0;
    
    // 保存初始数据
    savePlayerData(newPlayer);
    
    // 显示欢迎信息
    color(10);
    cout << "\nWelcome aboard, " << newPlayer.name << "!" << endl;
    cout << "Your starting credits: 1000" << endl;
    color(15);
    Sleep(2000);
    
    // 将新玩家数据赋给当前游戏
    playtext = newPlayer;
}
void startgame(){
    speed=speedb+1;
    play.x=10;
    play.y=17;
    play.h=100;
    play.sp;    
    play.par=0;
    play.dead=1;
    play.v;
    play.coin=1000;
    play.ammo=100;
    play.enegy=100;
    play.bag.clear();
    play.bagnum=0;
    play.bufft=0;
    memset(ammo,0,sizeof(ammo));
    memset(enemy,0,sizeof(enemy));
    memset(gift,0,sizeof(gift));
    memset(bplane,0,sizeof(bplane));
    memset(dun,0,sizeof(dun));
    boss.x=0;
    boss.y=0;
    boss.par=0;
    boss.u=0;
    boss.h=0;
    bigboss.u=0;
    am=0;
    boom=0;
    boss1n=0;
    bp=0;
    en=0;
    gi=0;
    memset(mapx,0,sizeof(mapx));
    ra=0;
    memset(randx,0,sizeof(randx));
    tell=0;
    tx=10;
    tx1=0;
    zp=0;
    zt=0;
    play.coin=playtext.coins;
    for(int i = 0; i < 20; i++) {
        ci[i] = playtext.ci[i];
    }
    
    if(ci[3]) {
        play.h = 800;
    }
}
void misson(){
    if(mis==1){
        if(tx==100){
            shop();
            bplanex(1);
            ri=5;
        }
        if(tx==1000){
            ri=0;
        }
        if(tx==2500){
            ri=5;
        }
        if(tx==3700){
            ri=0;
        }
        if(tx==5000){
            ri=3;
        }
        if(tx==1700){
            speak(0,5);
            enemyx(2,0,0);
        }
            if(tx==2500){
                speak(0,8);
            }
            if(tx==4000){
                speak(0,5);
                enemyx(5,0,0);
            }
            if(tx==5000){
                speak(0,5);
                enemyx(8,0,1);
            }
            if(tx==7500){
                shop();
            }
            if(tx==7000){               
                ri=0;
                enemyx(5,0,0);
                boss.u=1;
                boss1n=1;
                boss.par=0;
                boss.y=0;
                boss.x=10;
                boss.h=100;
            }
            if(tx==9000){
                ri=2;
            }
            if(tx==10000){
                ri=5;
            }
            if(tx==10700){
                ri=0;
            }
            if(tx==11500){
                shop();
            }
            if(tx==11000){               
                bplanex(1);
                speak(0,5);
                enemyx(12,0,1);
                boss.u=1;
                boss1n=1;
                boss.par=1;
                boss.y=0;
                boss.x=10;
                boss.h=150;
            }
            if(tx==13000){
                ri=3;
            }
            if(tx==14000){
                ri=5;
            }
            if(tx==15000){
                ri=0;
            }
            if(tx==15500){
                speak(0,5);
                enemyx(8,0,1);
            }
            if(tx==16500){
                speak(0,5);
                enemyx(8,0,0);
            }
            if(tx==17000){
                ri=3;
            }
            if(tx==17600){
                bplanex(1);
            }
            if(tx==17700){
                bplanex(1);
            }
            if(tx==18000){
                ri=0;
            }
            if(tx==18500){
                shop();
                enemyx(10,0,0);
                boss.u=1;
                boss1n=1;
                boss.par=0;
                boss.y=0;
                boss.x=10;
                boss.h=250;
            }
            if(tx==19000){
                speak(0,5);
                enemyx(5,0,1);
            }
            if(tx==20000){
                ri=5;
            }
            if(tx==22000){
                bplanex(1);
                speak(0,5);
                enemyx(10,0,1);
            }
            if(tx==24000){
                ri=0;
            }
            if(tx==25000){
                shop();
                enemyx(8,0,1);
                boss.u=1;
                boss1n=1;
                boss.par=1;
                boss.y=0;
                boss.x=10;
                boss.h=300;
            }
            if(tx==27000){
                ri=1;
            }
            if(tx>=28000&&tx<29800&&tx%200==0){
                speak(0,(tx-28000)/200+100);
            }
            if(tx==30000){
                bigboss.u=1;
                bigboss.h=1000;
                bigboss.x=0;
                bigboss.y=0;
                bigboss.par=0;
                bigboss.t=0;
            } 
            if(t1>=50){
                t1=0;
                rock(ri);
            }
            if(tx>=30000&&bigboss.h<=0){
                Sleep(5000);
                clear();
                cout<<"YOU WIN"<<endl;
                Sleep(3000);
                playtext.coins=play.coin;
                savePlayerData(playtext);
                startgame();
                gameloop();                
            }
        }else if(mis==2){
            if((tx==100)){
                enemyx(5,7,1);
            }
            if(tx==200){
                shop();
                ri=15;
            }
            if(tx==200){
                speak(0,15);
            }
            if(tx==400){
                speak(0,16);
            }
            if(tx==1000){
                speak(0,5);
                enemyx(5,0,1);
            }
            if(tx==2000){
                speak(0,5);
                enemyx(1,1,1);
            }
            if(tx==3000){
                speak(0,5);
                enemyx(5,1,1);
            }
            if(tx==4000){
                speak(0,5);
                enemyx(5,1,1);
            }
            if(tx==5000){
                ri=10;
                speak(0,5);
                enemyx(5,1,1);
            }
            if(tx==6000){
                ri=5;
                speak(0,5);
                enemyx(5,1,1);
            }
            if(tx==6500){
                ri=0;
            }
            if(tx==7000){
                shop();
                enemyx(2,1,1);
                boss.u=1;
                boss1n=1;
                boss.par=2;
                boss.y=0;
                boss.x=10;
                boss.h=100;
            }
            if(tx==7500){
                speak(0,5);
                enemyx(5,1,1);
            }
            if(tx==8000){
                speak(0,5);
                enemyx(2,5,1);
                enemyx(5,0,1);
            }
            if(tx==8500){
                speak(0,5);
                enemyx(5,1,1);
            }
            if(tx==9000){
                ri=2;
            }
            if(tx==10000){
                ri=0;
                shop();
                enemyx(2,1,0);
                enemyx(3,5,0);
                boss.u=1;
                boss1n=1;
                boss.par=2;
                boss.y=0;
                boss.x=10;
                boss.h=300;
            }
            if(tx==11000){
                ri=5;
            }
            if(tx==12000){
                ri=15;
            }
            if(tx==13000){
                ri=5;
            }
            if(tx==13500){
                speak(0,5);
                enemyx(10,1,1);
            }
            if(tx==14000){
                speak(0,5);
                enemyx(10,0,1);
                enemyx(3,5,1);
            }
            if(tx==15000){
                speak(0,5);
                enemyx(10,0,0);
                enemyx(3,5,0);
            }
            if(tx==16000){
                speak(0,5);
                enemyx(3,4,1);
            }
            if(tx==17000){
                ri=15;
            }
            if(tx==18000){
                ri=5;
            }
            if(tx==19000){
                ri=10;
                shop();
                boss.u=1;
                boss1n=1;
                boss.par=4;
                boss.y=0;
                boss.x=10;
                boss.h=250;
            }
            if(tx==20000){
                speak(0,5);
                enemyx(3,4,1);
                enemyx(3,5,1);
            }
            if(tx==21000){
                ri=15;
            }
            if(tx==22000){
                ri=5;
            }
            if(tx==23000){
                ri=0;
            }
            if(tx==23500){
                speak(0,5);
                enemyx(10,0,1);
                enemyx(3,5,1);
                enemyx(10,0,0);
                enemyx(3,5,0);
            }
            if(tx==24500){
                ri=5;
                shop();
                boss.u=1;
                boss1n=1;
                boss.par=3;
                boss.y=0;
                boss.x=10;
                boss.h=700;
            }
            if(tx==26000){
                ri=15;
            }
            if(tx==28000){
                play.enegy=1e9;
                ri=0;
            }
            if(tx>=28000&&tx<=30000){
                speak(0,110+(tx-28000)/500);
            }
            if(tx==30000){                
                bigboss.u=1;
                bigboss.h=1500;
                bigboss.x=0;
                bigboss.y=0;
                bigboss.par=1;
                bigboss.t=0;
            }
            if(tx>30000&&bigboss.h<=500&&(boss.h<=5)){
                Sleep(5000);
                clear();
                cout<<"YOU WIN"<<endl;
                Sleep(3000);
                playtext.coins=play.coin;
                savePlayerData(playtext);
                startgame();
                gameloop();                
            }
            if(t1>=50){
                play.ammo=1e5;
                play.enegy-=1;
                t1=0;
                rock(ri);
            }
        }
        else if(mis==3){
            if(tx==200){
                play.ammo=10000;
                play.h=1000;
                shop();
                ri=0;
            }
            if(tx==400){
                speak(0,5);
                enemyx(10,0,1);
                enemyx(1,5,1);
            }
            if(tx==1500){
                speak(0,5);
                enemyx(10,0,0);
                enemyx(1,5,0);
            }
            if(tx==3500){
                speak(0,5);
                enemyx(7,0,1);
                enemyx(1,5,1);
                enemyx(3,6,1);
            }
            if(tx==5500){
                speak(0,5);
                enemyx(6,4,0);
                enemyx(1,5,0);
                enemyx(5,6,0);
            }
            if(tx==7000){
                speak(0,5);
                enemyx(6,4,0);
                enemyx(5,5,0);
                enemyx(5,6,0);
                shop();
                boss.u=1;
                boss1n=1;
                boss.par=0;
                boss.y=0;
                boss.x=10;
                boss.h=700;
            }
            if(tx==9000){
                speak(0,5);
                enemyx(10,0,1);
                enemyx(4,5,1);
                enemyx(10,6,1);
            }
            if(tx==11000){
                speak(0,5);
                enemyx(4,4,1);
                enemyx(5,6,1);
                enemyx(5,7,1);
            }
            if(tx==13000){
                speak(0,5);
                enemyx(1,5,0);
                enemyx(10,6,0);
                shop();
                boss.u=1;
                boss1n=1;
                boss.par=2;
                boss.y=0;
                boss.x=10;
                boss.h=900;
            }
            if(tx==16000){
                speak(0,5);
                enemyx(5,6,1);
                enemyx(6,7,1);
            }
            if(tx==18000){
                speak(0,5);
                enemyx(4,5,1);
                enemyx(6,7,1);
            }
            if(tx==21000){
                speak(0,5);
                enemyx(7,6,0);
                shop();
                boss.u=1;
                boss1n=1;
                boss.par=3;
                boss.y=0;
                boss.x=10;
                boss.h=900;
            }
            if(tx==24000){
                speak(0,5);
                enemyx(10,6,1);
                enemyx(6,7,1);
            }
            if(tx==26000){
                ri=5;
            }
            if(tx==27000){
                speak(0,5);
                enemyx(15,1,1);
            }
            if(tx==30000){
                bigboss.u=1;
                bigboss.h=2000;
                bigboss.x=0;
                bigboss.y=0;
                bigboss.par=2;
                bigboss.t=0;
            }
            if(tx>30000&&bigboss.h==0&&(!boss.u)){
                Sleep(5000);
                clear();
                cout<<"YOU WIN"<<endl;
                Sleep(3000);
                playtext.coins=play.coin;
                savePlayerData(playtext);
                startgame();
                gameloop();                
            }
            if(t1>=50){
                t1=0;
                rock(ri);
            }
        }else if(mis==4){
            if(tx==100){
                shop();
                bigboss.u=1;
                bigboss.h=2500;
                bigboss.x=0;
                bigboss.y=0;
                bigboss.par=3;
                bigboss.t=0;
            }
            if(t1>=50){
                t1=0;
                rock(ri);
            }
        }else if(mis==5){
            if(tx==100) shop();
            if(tx%2500==0) ri = rand()%4 + 2;
            if(tx==1000) ri=0;
            if(tx==2000){ speak(0,5); enemyx(2,0,1); enemyx(2,6,1); }
            if(tx==4000) ri=0;
            if(tx==5000){ ri=0;speak(0,5); enemyx(2,0,0); enemyx(3,6,0); }
            if(tx==7500) ri=0;
            if(tx==8000){
                shop(); speak(0,5); enemyx(3,0,1); enemyx(4,7,1);
                speak(0,5);
                boss.u=1;
                boss1n=1;
                boss.par=1;
                boss.y=0;
                boss.x=10;
                boss.h=1000;
            }
            if(tx==11000) ri=0;
            if(tx==12000){ speak(0,5); enemyx(3,0,0); enemyx(3,6,1); enemyx(2,7,0); }
            if(tx==17500) ri=0;
            if(tx==18000){
                shop();
                    speak(0,104); speak(0,107); enemyx(7,7,0);
                boss.u=1; boss1n=1; boss.par=5; boss.y=0; boss.x=10; boss.h=1200;
            }
            if(tx==21000) ri=0;
            if(tx==22000){
                speak(0,5); enemyx(4,0,1); enemyx(3,7,1); //bplanex(1);
            }
            if(tx>=15000 && tx%3000==0){
                autodun((rand()+1)%5 + 8, (rand()+1)%8 + 4, (rand()+1)%8 + 10, 1);
            }
            if(tx==21000) ri=0;
            if(tx==22000) {speak(0,5); enemyx(5,7,0); enemyx(3,8,1); enemyx(5,0,0);}
            if(tx==25000) ri=0;
            if(tx==26000) {speak(0,5); enemyx(5,6,0); enemyx(3,8,1);}
            if(tx==30000){
                bigboss.u=1;
                bigboss.h=2500;
                bigboss.x=0;
                bigboss.y=0;
                bigboss.par=0;
                bigboss.t=0;
            }
            if(bigboss.h<=0 && tx>=30000){
                Sleep(2000);
                clear();
                color(10);
                   cout<<"YOU WIN"<<endl<<"PRIZE 800 coins"<<endl;
                   cout<<"---------------------"<<endl;
                   cout<<"    UNLOCK trait"<<endl;
                   cout<<"     $量子飞翼$"<<endl;
                   cout<<"---------------------"<<endl;
                   ci[0]=1;
                color(15);
                play.coin += 800;
                playtext.coins=play.coin;
                playtext.highScore=max(playtext.highScore, tx);
                savePlayerData(playtext);
                Sleep(3000);
                startgame();
                gameloop();
            }
            if(t1>=50){
                t1=0;
                rock(ri);
            }
}

else if(mis==6){
    if(tx>=10000 && du<3){
        autodun(5, 2, 5, 1);
        autodun(20, 5, 15, 1);
    }
    if(tx==100) {ri=15; shop();}
    if(tx==500) ri=0;
    if(tx==1000){ speak(0,5); enemyx(3,0,1); enemyx(1,4,1); }
    if(tx==2200) ri = randx[0]%5 + 3;
    if(tx==2300) ri=0;
    if(tx==2500){ speak(0,5); enemyx(3,0,0); enemyx(2,4,0); enemyx(1,7,1); }
    if(tx==3800) ri = randx[0]%5 + 3;
    if(tx==7500) ri=0;
    if(tx==8000){ shop(); speak(0,5); enemyx(3,0,1); enemyx(1,6,1); enemyx(2,7,0); }
    if(tx==9000){
        speak(0,104); speak(0,106);
        shop();boss.u=1; boss1n=1; boss.par=4; boss.y=0; boss.x=10; boss.h=800;
    }
    if(tx==10000) ri=5;
    if(tx==14000) ri=0;
    if(tx==15000){
        speak(0,104); speak(0,106);
        shop();boss.u=1; boss1n=1; boss.par=4; boss.y=0; boss.x=10; boss.h=600;
    }
    if(tx==15200) ri = randx[0]%5 + 3;
    if(tx==17000) ri=0;
    if(tx==18000){
        speak(0,108); speak(0,109);
        enemyx(2,6,1);
        shop();boss.u=1; boss1n=1; boss.par=1; boss.y=0; boss.x=10; boss.h=800;
    }
    if(tx==20000) ri = randx[0]%5 + 3;
    if(tx==24000) ri=0;
    if(tx==25000){
        bigboss.u=1;
        bigboss.h=1500;
        bigboss.x=0;
        bigboss.y=0;
        bigboss.par=1;
        bigboss.t=0;
    }
    if(tx>=25000&&bigboss.h<=500&&bigboss.h>=400){
        speak(0,201);
    }
    if(bigboss.h<=0&&tx%200==0&&tx>=25000){
        enemyx(2,4,1);
    } 
    if(tx==500) speak(0,7);
    if(tx==2500) speak(0,14);
    if(tx==24000) speak(0,108);

    if(tx>=32000&&bigboss.h<=0 && play.enegy>=50){
        Sleep(3000);
        clear();
        color(10);
        cout<<"YOU WIN"<<endl;
        cout<<"PRIZE 1500 coins";
        color(15);
        play.coin += 1500;
        playtext.coins=play.coin;
        playtext.highScore=max(playtext.highScore, tx);
        savePlayerData(playtext);
        Sleep(4000);
        startgame();
        gameloop();
    }

    if(t1>=50){
        t1=0;
        rock(ri);
    }
}
else if(mis==7){
    if(tx==100){shop();}
    if(tx==500){speak(0,5); enemyx(3,0,0);}
    if(tx==1500){speak(0,5); enemyx(3,0,0);}
    if(tx==2500){speak(0,5); enemyx(2,6,0);}
    if(tx==3000){speak(0,5); enemyx(2,8,0);}
    if(tx>=5000&&tx%3000==0){
        speak(0,5); enemyx(1,8,0);
    }
    if(tx>=5000&&tx%5000==0&&tx!=20000){
        ri=0;        
        shop();boss.u=1; boss1n=1; boss.par=1; boss.y=0; boss.x=10; boss.h=800;
    }
    if(tx==20000){
        bigboss.u=1;
        bigboss.h=1500;
        bigboss.x=0;
        bigboss.y=0;
        bigboss.par=0;
        bigboss.t=0;
    }
    if(tx>=20000&&!bigboss.u&&!boss.u){
        ri=0;speak(0,17);
        speed=3;
        Sleep(3000);
        clear();
        color(10);
        cout<<"YOU WIN"<<endl;
        cout<<"PRIZE 1500 coins";
        color(15);
        play.coin += 1500;
        playtext.coins=play.coin;
        playtext.highScore=max(playtext.highScore, tx);
        savePlayerData(playtext);
        Sleep(4000);
        startgame();
        gameloop();
    }
    if(tx%500==0){
        autodun(19,2,18,0);
    }
    if(t1>=50){
        t1=0;
        rock(ri);
    }
}
else if(mis==8){
    if(tx==50){
        play.ammo=1000;
        play.h=350;
    }
    if(tx%1000==0){
        speak(0,5); enemyx(2,0,0);
    }
    if(tx%2000==0){
        speak(0,5); enemyx(2,6,0);
    }
    if(tx%2500==0){
        speak(0,5); enemyx(1,5,0);enemyx(2,4,0);
    }
    if(tx%3000==0){
        speak(0,5); enemyx(2,7,0);
    }
    if(tx%5000==0||(tx%200==0&&tx>=20000)){
        enemyx(1,9,0);
    }
    if(tx%7000==0){
        ri=0;        
        shop();boss.u=1; boss1n=1; boss.par=0; boss.y=0; boss.x=10; boss.h=800;
    }
    if(t1>=50){
        t1=0;
        rock(ri);
    }
    if(tx==20000){
        zp=1;
        play.h=2000;
        zt=3000;
        bigboss.u=1;
        bigboss.h=7000;
        bigboss.x=0;
        bigboss.y=0;
        bigboss.par=0;
        bigboss.t=0;
    }
    if(tx>=20000&&!bigboss.u&&!boss.u){
        ri=0;
        Sleep(3000);
        clear();
        color(10);
        cout<<"YOU WIN"<<endl;
        cout<<"PRIZE 1500 coins";
        color(15);
        play.coin += 1500;
        playtext.coins=play.coin;
        playtext.highScore=max(playtext.highScore, tx);
        savePlayerData(playtext);
        Sleep(4000);
        startgame();
        gameloop();
    }
}
else if(mis==9){
    if(tx==100){
        zp=1;
        play.h=8000;
        play.ammo=100000;
        zt=30000;
    }
    if(tx%100==0){
        speak(0,5); enemyx(1,0,0);
    }
    if(tx%500==0){
        speak(0,5); enemyx(1,4,0);
    }
    if(tx%1000==0){
        speak(0,5); enemyx(1,5,0);
    }
    if(tx%300==0){
        speak(0,5); enemyx(1,6,0);
    }
    if(tx%800==0){
        speak(0,5); enemyx(1,8,0);
    }
    if(tx%1200==0){
        speak(0,5); enemyx(1,9,0);
    }
    if(tx%7000==0){
        ri=0;        
        shop();boss.u=1; boss1n=1; boss.par=tx/7000; boss.y=0; boss.x=10; boss.h=800;
    }
    if(t1>=50){
        t1=0;
        rock(ri);
    }
    if(tx==20000){
        bigboss.u=1;
        bigboss.h=3000;
        bigboss.x=0;
        bigboss.y=0;
        bigboss.par=3;
        bigboss.t=0;
    }
    if(tx>=20000&&!bigboss.u&&!boss.u){
        ri=0;
        Sleep(3000);
        clear();
        color(10);
        cout<<"YOU WIN"<<endl;
        cout<<"PRIZE 1500 coins";
        color(15);
        play.coin += 1500;
        playtext.coins=play.coin;
        playtext.highScore=max(playtext.highScore, tx);
        savePlayerData(playtext);
        Sleep(4000);
        startgame();
        gameloop();
    }
}
else if(mis==0){
    if(tx==100){
        bigboss.par=-1;
    }
    if(tx%200==0&&bigboss.u==0){
        play.ammo=2000;
        play.h=500;
        bigboss.u=1;
        bigboss.h=1000;
        bigboss.x=0;
        bigboss.y=0;
        bigboss.par++;
        bigboss.t=0;       
    }
    if(bigboss.par==4){
        ri=0;
        Sleep(3000);
        clear();
        color(10);
        cout<<"YOU WIN"<<endl;
        cout<<"PRIZE 1500 coins";
        color(15);
        play.coin += 1500;
        playtext.coins=play.coin;
        playtext.highScore=max(playtext.highScore, tx);
        savePlayerData(playtext);
        Sleep(4000);
        startgame();
        gameloop();
    }
}
}
int main(){
    int t2=0,t3=0,t4=0,t5=0,t6=0,t7=0,t8=0,ts=1,t9=0;
    
    if(isFirstTimePlayer()) {
        initializeNewPlayer();
        savePlayerData(playtext);
    } else {
        // 加载已有存档
        if(!loadPlayerData(playtext)) {
            // 如果加载失败(如文件损坏),初始化新玩家
            cout << "存档损坏,将创建新存档..." << endl;
            Sleep(1500);
            // 删除损坏的文件
            remove("player_data.dat"); 
            clear();
            initializeNewPlayer();
            savePlayerData(playtext);
        }else{
            string x2;
            cout<<"input your password:";
            cin>>x2;
            if(x2==playtext.password){
                cout<<"welcome"<<endl;
                Sleep(1000);
                clear();
            }else{
                cout<<"wrong password!";
                exit(0);
            }
        }
    }
    gameloop();
    startgame();
    screen();
    speak(0,7);
    play.coin=1e9;
    while(1){        
        if(_kbhit()){
            for(int i=play.y-1;i<=play.y+1;i++){
                for(int ii=play.x-1;ii<=play.x+1;ii++){
                    if((i==play.y-1&&ii==play.x-1)||(ii==play.x+1&&i==play.y-1)){
                        continue;
                    }
                    mapx[i][ii]=0;
                }
            }
            int a1=getch();
            if((a1=='a'||a1=='A')&&play.x-2>=1&&!(play.buff==1&&play.bufft>0)){
                if(mapx[play.y][play.x-2]==2||mapx[play.y+1][play.x-2]==2){
                    play.dead=0; 
                }
                play.x--;
            }
            if((a1=='d'||a1=='D')&&!(play.buff==1&&play.bufft>0)&&play.x+2<=20){
                if(mapx[play.y][play.x+2]==2||mapx[play.y+1][play.x+2]==2){
                    play.dead=0; 
                }
                play.x++;
            }
            if(a1=='w'||a1=='W'){
                play.v=1;
            }
            if(a1=='s'||a1=='S'){
                play.v=0;
            }
            if(a1=='P'||a1=='p'){
                int a11=0;
                while(a11!='p'||a11!='P'){
                    if(_kbhit()){
                        a11=getch();
                        if(a11=='p'||a11=='P'){
                            break;
                        }
                    }
                }
            }
            if(a1>='1'&&a1<='3'){
                baguse(a1-'0');
            }
            if(a1=='t'||a1=='T'){
                string a2;
                bool p=playtext.p;
                speak(0,-2);
                HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
                COORD startPos = {0, 28};
                SetConsoleCursorPosition(hConsole, startPos);
                cin>>a2;
                if(a2=="time"&&p){
                    speak(0,-2);
                    int a3;
                    cin>>a3;
                    tx=abs(a3);
                }else if(a2=="bang"&&p){
                    memset(mapx,0,sizeof(mapx));
                }else if(a2=="enemy"&&p){
                    speak(0,-2);
                    int a3,a4;
                    cin>>a3>>a4;
                    enemyx(a3,0,a4);
                }else if(a2=="fill"&&p){
                    speak(0,-2);
                    int a3,a4,a5,a6,a7;
                    cin>>a3>>a4>>a6>>a7>>a5;
                    for(int i=min(a3,a6);i<max(a3,a6);i++){
                        for(int ii=min(a4,a7);ii<max(a4,a7);ii++){
                            mapx[i][ii]=a5;
                        }
                    }
                }else if(a2=="rock"&&p){
                    speak(0,-2);
                    int a3;
                    cin>>a3;
                    ri=a3;
                }else if(a2=="find"&&p){
                    speak(0,-2);
                    int a3,a4;
                    cin>>a3>>a4;
                    speak(0,-2);
                    cout<<mapx[a3][a4];
                    Sleep(2000);
                }
                else if(a2=="bigboss"&&p){
                    speak(0,-2);
                    int a3;
                    cin>>a3;
                    speak(0,-2);
                    bigboss.h=a3;
                    Sleep(2000);
                }
                else if(a2=="boss"&&p){
                    speak(0,-2);
                    int a3;
                    cin>>a3;
                    speak(0,-2);
                    boss.h=a3;
                    Sleep(2000);
                }
                else if(a2=="hp"&&p){
                    speak(0,-2);
                    int a3;
                    cin>>a3;
                    play.h=a3;
                    Sleep(2000);
                }
                else if(a2=="gamemode"){
                    speak(0,-2);
                    string a3;
                    cin>>a3;
                    if(a3=="create"){
                        bool a4;
                        for(int i=0;i<20;i++) ci[i]=1;
                        cin>>a4;
                        playtext.p=a4;
                        savePlayerData(playtext);
                    }
                    Sleep(2000);
                }
                speak(0,-2);
            }
            if(a1==32&&tshot>=10&&!(play.buff==1&&play.bufft>0)){
                tshot=0;
                if(play.ammo>0){
                    play.ammo--;
                    int x1;
                    for(int i=0;i<1001;i++){
                        if(ammo[i].use==0){
                            ammo[i].use=1;
                            ammo[i].x=play.x;
                            if(play.v){
                                ammo[i].y=play.y-2;
                                ammo[i].dev=0;
                            }else{
                                ammo[i].y=play.y+1;
                                ammo[i].dev=2;
                            }                    
                            ammo[i].par=play.par;      
//                            ammo[i].par=11;                
                            ammo[i].team=1;
                            x1=i;
                            break;
                        }
                    }
                    if(ci[1]){
                        for(int i=x1+1;i<1001;i++){
                        if(ammo[i].use==0){
                            ammo[i].use=1;
                            ammo[i].x=play.x;
                            ammo[i].y=play.y+1;
                            ammo[i].dev=2;                    
                            ammo[i].par=0;                
                            ammo[i].team=1;
                            x1=i;
                            am++;
                            break;
                        }}
                    }
                    if(play.par==1||ci[0]){
                        for(int i=x1+1;i<1001;i++){
                        if(ammo[i].use==0){
                            ammo[i].use=1;
                            ammo[i].x=play.x-1;
                            if(play.v){
                                ammo[i].y=play.y-1;
                                ammo[i].dev=0;
                            }else{
                                ammo[i].y=play.y+1;
                                ammo[i].dev=2;
                            }                    
                            ammo[i].par=0;                
                            ammo[i].team=1;
                            x1=i;
                            am++;
                            break;
                        }
                        }
                        for(int i=x1+1;i<1001;i++){
                        if(ammo[i].use==0){
                            ammo[i].use=1;
                            ammo[i].x=play.x+1;
                            if(play.v){
                                ammo[i].y=play.y-1;
                                ammo[i].dev=0;
                            }else{
                                ammo[i].y=play.y+1;
                                ammo[i].dev=2;
                            }                    
                            ammo[i].par=0;                
                            ammo[i].team=1;
                            am++;
                            break;
                        }
                        }
                    }            
                am++;
                t3=500;
                }else{
                    
                }
                
            }            
            
        }
        
        tx1=tx/100;
        t1+=speed;
        if(boom){
            t2+=speed;
        }
        if(tell){
            t7+=1;
        }
        if(t7>=200){
            t7=0;
            tell=0;
            speak(0,-2);
        }
        if(t1>=50&&gi>0){
            gift2();
        }
        misson();
        if(tx==200){
            speak(0,9);
        }
        if(tx==400){
            speak(0,10);
        }
        if(tx==600){
            speak(0,11);
        }
        if(tx==800){
            speak(0,12);
        }
        if(tx==1000){
            speak(0,13);
        }
        if(tx==1200){
            speak(0,14);
        }
        
        
        if(play.bufft>0&&tx%25==0){
            if(play.buff==2){
                play.h-=1;
            }
        }
        if(en>=0){
            t4+=speed;
            t5+=speed;
        }
        if(t4>=10){
            t4=0;
            enemy2();
            if(bp>0){
                bplane2();
            }
            
        }
        if(firet>0){
            t9++;
        }
        if(t9>=25){
            t9=0;
            firet--;
            for(int i=0;i<27;i++){
                for(int ii=0;ii<20;ii++){
                    if(firex[i][ii]>0){
                        firex[i][ii]--;
                    }else if(mapx[i][ii]==4){
                        mapx[i][ii]=0;
                    }
                }
            }
        }
        if(t5%26==0){
            if(bigboss.u){
                bigbossx();
            }
        }
        if(t5>=50){
            t5=0;
            attack();
            if(boss1n){
                bossx();
            }           
        }
        if(zp==1){
            play.par=1;
            zt-=speed;
        }
        if(zt<=0&&zp!=0){
            zp=0;
            play.par=0;
            play.h=150;
        }
        if(t2>=100){
            t2=0;
            boom=0;
            for(int i=0;i<27;i++){
                for(int ii=0;ii<20;ii++){
                    if(mapx[i][ii]==3){
                        mapx[i][ii]=0;
                    }
                }
            }
        }
        if(am>0){
            t3+=speed;
        }
        if(t3>=10){
            t3=0;
            ammox();
        }
        t1+=speed;
        rands();        
        if(xrayx){
            t8+=speed;
        }
        if(t8>=10){
            xray(0,0,0,0,0,0);
            boom=1;
            xrayx=0;
        }
        if(t6>=50){
            t6=0;
            if(play.h<150){
                play.h++;
            }
            
        }        
        t6+=speed;        
        if(play.dead==0||play.h<0||play.enegy<=0){
            speak(0,-1);
            cout<<" because ";
            if(play.h<=0){
                cout<<playtext.name<<"'s plane is bang by enemy";
            }else if(play.enegy<=0){
                cout<<playtext.name<<"'s plane is no energy";
            }else if(!play.dead){
                cout<<playtext.name<<"'s plane touch the rock";
            }
            playtext.highScore=max(playtext.highScore,tx);
            Sleep(3000);
            playtext.coins=play.coin;
            savePlayerData(playtext);
            gameloop();
            startgame();
        }
        if(tx%100==0){
            if(ci[2]){
                play.coin+=4;
            }
            play.coin++;
        }
        if(tx%1000==0){
            giftx();
        }  
        if(play.bufft>0){
            play.bufft--;
            if(play.bufft==0) play.buff=0;
        } 
        if(firet&&firex[play.y][play.x]>0){
            if(play.buff==2){
                play.bufft++;
            }else{
                play.buff=2;
                play.bufft++;
            }
        }
        tshot+=speed;   
        tx+=speed;
        ClearScreen();
        Sleep(1);
    }
}

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐