#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
#include<time.h>
#include<conio.h>
#include<stdbool.h>#define UP 1        //方向键 上
#define DOWN 2  //方向键 下
#define LEFT 3    //方向键 左
#define RIGHT 4  //方向键 右#define MAX_LEVET 8        //8位的数组23行
#define BULLET_NUM 20
#define MAX_LIFT 4
//里规格:长39*2=78 (真坐标)(假坐标宽为39)  高39
//外规格:长41*2=82 (真坐标)(假坐标宽为41)  高41
typedef struct     //这里的出现次序指的是一个AI_tank变量中的次序,游戏共有四个AI_tank变量
{                       //∵设定每个AI_tank每种特殊坦克只出现一次 ∴fast_tank & firm_tank 最多出现次数不超过1int fast_tank_order; //fast_tank出现的次序(在第fast_tank_order次复活出现,从第0次开始),且每个AI_tank只出现一次int firm_tank_order; //firm_tank出现的次序,同上
}LevInfo;                       //关卡信息(准确说是该关出现的坦克信息)LevInfo level_info[MAX_LEVET]={{-1,-1},{3,-1},{-1,3},{2,3},{2,3},{2,3},{2,3},{2,3}}; //初始化,-1代表没有该类型坦克typedef struct
{int x,y;                 //子弹坐标int direction;       //子弹方向变量bool exist;           //子弹存在与否的变量,1为存在,0为没有bool initial;         //子弹是否处于建立初状态,1为存在,0为没有bool my;             //区分敌方与我方的子弹,1为我方坦克,0为敌方
}Bullet;Bullet bullet[BULLET_NUM];//考虑到地图不太可能存在20颗子弹,暂定为20个数组typedef struct
{int x,y;                //坦克的图案的中心坐标int direction;     //坦克的方向int color;            //坦克的颜色参数,具体于自定义函数PrintTank()中说明int model;          //坦克图案模块,值为1 2 3 ,分别代表不同图案,0为玩家图案int stop;            //只有ai坦克才能用的参数值,非0代表坦克停止走动,0为可动int revive;          //坦克的复活次数int num;           //ai坦克的编号(固定值,为常量,会在初始化函数中定下)0--3int CD;             //发射子弹后的冷却时间(王者农药玩那么久还不知道CD)bool my;          //判读是否为敌方坦克的参数,1为我方,0是(不要怂,就是干)bool alive;       //存活为1,死亡为0
}Tank;Tank AI_tank[MAX_LIFT];//敌方坦克,好吧有4种敌方坦克(联合国的选择真多)
Tank my_tank;               //我大中国的五对负重轮,各种改改改//自定义函数--基本操作与游戏协助函数
void GoToxy(int x,int y);               //坐标移动函数(干货)
void HideCursor();                          //隐藏鼠标函数(干货)
void keyboard();                         //接受键盘操作输入(干货版)
void Initialize();                            //初始化数据(含有文件读写操作)
void stop();                                  //暂停游戏呗
void Getmap();                            //地图数据存放和获取的函数
void Frame();                               //打印游戏主体框架
void PrintMap();                          //打印内部详细地图(障碍物)(含对level读取)
void SideScreen();                       //副屏幕打印
void GameCheak();                     //检查游戏的输赢
void GameOver(bool home);      //失败了继续游戏就是了
void ClearMainScreen();             //主屏幕清屏函数∵system("cls")后打印框架有一定几率造成框架上移一行的错误//∴单独编写清屏函数
void ColorChoose(int color);       //颜色选择输入的函数
void NextLevel();                         //下一关(含有全局level变量的读写)//自定义函数--子弹部分的函数
void BuildAIBullet(Tank *tank);                   //AI坦克的子弹发射(含有对my_tank的文件读取,只读取my_tank坐标)
void BuildBullet(Tank tank);                       //子弹发射(人机共用)玩家坦克直接调用该函数,AI通过AIshoot调用
void BulletFly(Bullet bullet[BULLET_NUM]);//子弹移动与打击(人机共用)
void BulletHit(Bullet *bullet);                     //子弹碰撞(人机共用)含tank全局变量修改,只通过BulletFly调用,//子弹间的碰撞不在本函数,由Bulletshoot()进行检查处理
void PrintBullet(int x,int y,int T);               //打印子弹(人机共用)
void ClearBullet(int x,int y,int T);              //清除子弹(人机共用)
int BulletCheak(int x,int y);                       //判断子弹前面的情况(人机共用)//自定义函数-- 坦克部分的函数
void BuildAITank(int *position,Tank *AI_tank);//建立AI坦克
void BuildMyTank(Tank *my_tank);                 //建立玩家坦克
void MoveAITank(Tank *AI_tank);                   //AI坦克的移动
void MoveMyTank(int turn);                           //玩家坦克移动,只能通过keyboard()函数解决,既是玩家操纵
void ClearTank(int x,int y);                             //清除坦克(人机共用)
void PrintTank(Tank tank);                             //打印坦克(人机共用)
bool TankCheak(Tank tank,int direction);       //检查坦克前方是否有障碍物(dirtection),1为阻碍,0为畅通
int AIPositionCheak(int position);                   //检查AI坦克前方情况(AIpostionCheak),1为阻碍,0为畅通//DWORD WINAPI InputX(LPVOID lpParameter); //声明线程函数,用于检查X键输入并设置X键的输入冷却时间//注意map数组应是纵坐标在前,横坐标在后,既map[y][x],(∵数组行长度在前,列长度在后)
//map里的值: 个位数的值为地图方块部分,百位数的值为坦克,子弹在map上没有值(子弹仅仅是一个假坐标)
//map里的值: 0为可通过陆地,1为红砖,2黄砖,5为水,100~103为敌方坦克,200为我的坦克,//游戏全部数据---全局变量
int map[41][41];              //地图的二维数组
int key_x;                        //X键是否被“读入”的变量,也是子弹是否可以连续发射的变量
int bul_num=0;                   //bullet子弹的编号
int position;                    //位置计数,对应AI坦克生成位置,-1为左位置,0为中间,1为右,2为我的坦克位置
int speed=7;                   //游戏速度,刷新呗
int level=1;                     //游戏关卡
int score=0;                    //游戏得分
int remain_enemy;          //剩余敌人(游戏中每一关出现的敌机)char* tank_figure[4][3][4]=//四种坦克,上下左右的变化
{{{"◢┃◣", "◢━◣", "◢┳◣", "◢┳◣"},{"┣●┫", "┣●┫", "━●┃", "┃●━"},{"◥━◤", "◥┃◤", "◥┻◤", "◥┻◤"}},{{"┏┃┓", "┏┳┓", "┏┳┓", "┏┳┓"},{"┣●┫", "┣●┫", "━●┫", "┣●━"},{"┗┻┛", "┗┃┛", "┗┻┛", "┗┻┛"}},{{"┏┃┓", "◢━◣", "┏┳◣", "◢┳┓"},{"┣●┫", "┣●┫", "━●┃", "┃●━"},{"◥━◤", "┗┃┛", "┗┻◤", "◥┻┛"}},{{"╔┃╗", "╔╦╗", "╔╦╗", "╔╦╗"},{"╠█╣", "╠█╣", "━█╣", "╠█━"},{"╚╩╝", "╚┃╝", "╚╩╝", "╚╩╝"}}
};//游戏中使用的坦克,图案不错不错,艺术细胞相当可怕int main()//主函数,总BOSS,大哥大
{int i;unsigned int interval[12]={1,1,1,1,1,1,1,1,1,1,1,1};//间隔计数器数组,用于控制速度srand(time(NULL));//设置随机数种子(若不设置种子而调用rand会使每次运行的随机数序列一致)//随机数序列指:如首次调用rand得到1,第二次得2,第三次3,则此次随机数序列为1,2,3HideCursor();//首先隐藏掉光标system("mode con cols=112 lines=42");//控制游戏窗口大小Frame();//打印游戏框架Initialize();//初始化游戏数据,另外level一开始就是初始化为1的for(;;) //来一个循环   while(1){if(interval[0]++%speed==0)//速度调整用,假设interval[0]为a, 语句意为 a % 2==0,a=a+1;{GameCheak();//检查游戏内敌方坦克存在否或者检查自身存在否(家被毁的不在这里面)BulletFly(bullet);//子弹的移动与打击for(i=0;i<=3;i++){if(AI_tank[i].model==2 && interval[i+1]++%2==0) //四个坦克中的快速坦克单独使用计数器1,2,3,4MoveAITank( & AI_tank[i]);//AI坦克的移动if(AI_tank[i].model!=2 && interval[i+5]++%3==0) //四个坦克中的慢速坦克单独使用计数器5,6,7,8MoveAITank( & AI_tank[i]);//AI坦克的移动}for(i=0;i<=3;i++)//建立AI坦克部分if(AI_tank[i].alive==0&&AI_tank[i].revive<4&&interval[9]++%90==0)//一个敌方坦克每局只有4条命{//如果坦克不存活。计时,每次建立有间隔  1750 msBuildAITank( &position, & AI_tank[i] );     //建立AI坦克(复活)break;                                      //每次循环只建立一个坦克}for(i=0;i<=3;i++)if(AI_tank[i].alive)BuildAIBullet(&AI_tank[i]);                 //AIshoot自带int自增计数CD,不使用main中的CD intervalif(my_tank.alive && interval[10]++%2==0 )//如果我方已经存在于战场上,并且计时限制已经解开keyboard ();//接受键盘操作输入if(my_tank.alive==0 && interval[11]++%30==0 && my_tank.revive < MAX_LIFT)//如果我方还未存在于场上,而且计时器11++已经等于0,,还有生命值尚且没有大于4BuildMyTank( &my_tank );//建立我方坦克}Sleep(5);}return 0;
}//自定义函数--基本操作与游戏协助函数
void GoToxy(int x,int y)               //坐标移动函数(干货)
{COORD loc={x,y};//定下坐标点HANDLE houpt=GetStdHandle(STD_OUTPUT_HANDLE);//标准输出SetConsoleCursorPosition(houpt,loc);//将鼠标移动该坐标点标准输出
}
void HideCursor()                          //隐藏鼠标函数(干货)
{CONSOLE_CURSOR_INFO cursor_info={1,0};//鼠标厚度1-100,后面的0是不显示,1则是显示HANDLE houpt=GetStdHandle(STD_OUTPUT_HANDLE);//标准输出SetConsoleCursorInfo(houpt,&cursor_info);//好吧这里已经不用多说了,鼠标都看不见了
}
void keyboard()                         //接受键盘操作输入(干货版)
{int count=0;if(GetAsyncKeyState(VK_UP)&0x8000)MoveMyTank(UP);//方向控制 上else if(GetAsyncKeyState(VK_DOWN)&0x8000)MoveMyTank(DOWN);//方向控制 下else if(GetAsyncKeyState(VK_LEFT)&0x8000)MoveMyTank(LEFT);//方向控制 左else if(GetAsyncKeyState(VK_RIGHT)&0x8000)MoveMyTank(RIGHT);//方向控制 右else if (GetAsyncKeyState( 0x1B )& 0x8000)  // Esc键exit(0);                                //退出程序函数else if (GetAsyncKeyState( 0x60 )& 0x8000)NextLevel();//下一关else if (GetAsyncKeyState( 0x20 )& 0x8000)  //空格stop();//暂停else if(count++%7==0){if (speed>1 && GetAsyncKeyState( 0x6B )& 0x8000)   // +键{speed--;GoToxy(102,11);           //在副屏幕打印出当前速度SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE|FOREGROUND_RED);printf("%d ",21-speed);   //副屏幕显示的速度为1~10}else if (speed<20 && GetAsyncKeyState( 0x6D )& 0x8000)  // - 键{speed++;GoToxy(102,11);           //在副屏幕打印出当前速度SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE|FOREGROUND_RED);printf("%d ",21-speed);   //副屏幕显示的速度为1~10}}if(my_tank.CD==7){if(GetAsyncKeyState(88)&0x8000){BuildBullet(my_tank);my_tank.CD=0;}}elsemy_tank.CD++;//子弹间隔时间
}
void Initialize()                           //初始化数据(含有文件读写操作)
{int i=0;remain_enemy=16;//每一关内敌人数量,每消灭一只就会减少一只my_tank.revive=0;//我的坦克复活次数为0position=0;//位置计数,对应AI坦克生成位置,-1为左位置,0为中间,1为右,2为我的坦克位置bul_num=0;//bullet子弹的编号Getmap();//打印地图BuildMyTank(&my_tank);//建立玩家坦克for(i=0;i<12;i++)//子弹初始化,存在与否跟玩家操作有关{bullet[i].exist=0;//子弹存在与否的变量,1为存在,0为没有bullet[i].initial=0;//子弹是否处于建立初状态,1为存在,0为没有}for(i=0;i<=3;i++)//AI坦克的初始化,反正咱们就是3号的坦克,这里可不是<={AI_tank [i].revive=0;//坦克的复活次数,AI要什么复活,无敌吗????AI_tank [i].alive=0;  //初始化坦克全是不存活的,BuildAITank()会建立重新建立不存活的坦克AI_tank [i].stop=0;//只有ai坦克才能用的参数值,非0代表坦克停止走动,0为可动AI_tank [i].num=i;//ai坦克的编号(固定值,为常量,会在初始化函数中定下)0--3AI_tank [i].my=0;//判读是否为敌方坦克的参数,1为我方,0是(不要怂,就是干)AI_tank [i].CD=0;//存活为1,死亡为0}GoToxy(97,2);                        //在副屏幕上关卡数SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);printf("%d",level);GoToxy(102,5);                       //在副屏幕上打印分数SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN);printf("%d   ",score);GoToxy(102,7);                       //在副屏幕打印我的剩余生命值SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);printf("%d", MAX_LIFT-my_tank.revive);GoToxy(102,9);                       //在副屏幕上打印剩余坦克数SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);printf("%d ",remain_enemy);GoToxy(100,13);                      //在副屏幕上打印状态SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE|FOREGROUND_GREEN);printf("正在游戏");
}
void stop()                                  //暂停游戏呗
{int color=1,timing=1;while(1){if(timing++%30==0){ColorChoose(color);//颜色选择GoToxy(100,30);//副屏幕打印(提前对准坐标吧!!大兄弟)printf("游戏暂停!");GoToxy(88,17);printf("按回车键继续游戏");GoToxy(88,18);printf("按Esc键退出游戏");if(++color%8==0)color=1;//这里的if可以控制颜色变化,因为这个整个都是while}if(GetAsyncKeyState(0xD)&0x8000)//回车键{GoToxy(100,13);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);printf("正在进行");   //覆盖掉原来的提示GoToxy(88,17);printf("                     ");GoToxy(88,18);printf("                     ");break;//退出暂停后要退出循环,之后要把暂停输出的字去除(覆盖)}else if(GetAsyncKeyState( 0x1B )& 0x8000) //Esc键退出exit(0);Sleep(20);//刷新的时间1000为1秒}
}
void Getmap()                            //地图数据存放和获取的函数
{//map里的值: 0为可通过陆地,1为红砖,2待定,5为水,100为敌方坦克,200为我的坦克,int Map[8][41][41]={     //map里的值: 个位数的值为地图方块部分,百位数的值为坦克{//第1关 map[0]{4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,6,6,6,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,6,6,6,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,6,6,6,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,4},{4,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,4},{4,6,6,6,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,6,6,6,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4}},{//第2关 map[1]{4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,6,6,2,2,2,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,6,6,2,2,2,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,6,6,2,2,2,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,0,0,0,0,0,0,6,6,6,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,0,0,0,0,0,0,6,6,6,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,0,0,0,0,0,0,6,6,6,0,0,0,4},{4,1,1,1,2,2,2,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,6,6,6,0,0,0,4},{4,1,1,1,2,2,2,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,6,6,6,0,0,0,4},{4,1,1,1,2,2,2,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,6,6,6,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,2,2,2,1,1,1,6,6,6,6,6,6,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,2,2,2,1,1,1,6,6,6,6,6,6,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,2,2,2,1,1,1,6,6,6,6,6,6,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,0,0,0,2,2,2,6,6,6,1,1,1,2,2,2,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,0,0,0,2,2,2,6,6,6,1,1,1,2,2,2,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,0,0,0,2,2,2,6,6,6,1,1,1,2,2,2,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,0,0,0,1,1,1,6,6,6,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,0,0,0,1,1,1,6,6,6,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,0,0,0,1,1,1,6,6,6,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,1,1,1,6,6,6,1,1,1,0,0,0,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,1,1,1,6,6,6,1,1,1,0,0,0,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,1,1,1,6,6,6,1,1,1,0,0,0,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,0,0,0,2,2,2,1,1,1,6,6,6,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,0,0,0,2,2,2,1,1,1,6,6,6,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,0,0,0,2,2,2,1,1,1,6,6,6,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,6,6,6,6,6,6,6,6,6,2,2,2,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,4},{4,6,6,6,6,6,6,6,6,6,2,2,2,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,4},{4,6,6,6,6,6,6,6,6,6,2,2,2,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,4},{4,6,6,6,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,6,6,6,6,6,6,0,0,0,0,0,0,4},{4,6,6,6,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,6,6,6,6,6,6,0,0,0,0,0,0,4},{4,6,6,6,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,6,6,6,6,6,6,0,0,0,0,0,0,4},{4,6,6,6,0,0,0,0,0,0,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,1,1,1,1,1,1,0,0,0,4},{4,6,6,6,0,0,0,0,0,0,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,1,1,1,1,1,1,0,0,0,4},{4,6,6,6,0,0,0,0,0,0,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,1,1,1,1,1,1,0,0,0,4},{4,2,2,2,6,6,6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,6,6,6,6,6,6,4},{4,2,2,2,6,6,6,6,6,6,6,6,6,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,6,6,6,6,6,6,4},{4,2,2,2,6,6,6,6,6,6,6,6,6,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,6,6,6,6,6,6,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,4},{4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4}},{//第3关 map[2]{4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4},{4,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,6,6,6,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,6,6,6,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,6,6,6,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,6,6,6,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,1,1,1,6,6,6,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,1,1,1,6,6,6,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,4},{4,6,6,6,0,0,0,1,1,1,5,5,5,0,0,0,6,6,6,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,5,5,5,0,0,0,6,6,6,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,5,5,5,0,0,0,6,6,6,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,5,5,5,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,5,5,5,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,5,5,5,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,1,1,1,0,0,0,1,1,1,5,5,5,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,1,1,1,4},{4,1,1,1,0,0,0,1,1,1,5,5,5,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,1,1,1,4},{4,1,1,1,0,0,0,1,1,1,5,5,5,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,1,1,1,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,6,6,6,6,6,6,4},{4,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,4},{4,1,1,1,1,1,1,0,1,1,1,1,1,0,0,0,6,6,6,0,0,0,1,1,1,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,4},{4,1,1,1,1,1,1,0,1,1,1,1,1,0,0,0,6,6,6,0,0,0,1,1,1,0,0,0,5,5,5,0,0,0,1,1,1,1,1,1,4},{4,1,1,1,1,1,1,0,1,1,1,1,1,0,0,0,6,6,6,0,0,0,1,1,1,0,0,0,5,5,5,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,5,5,5,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,6,6,6,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,4},{4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4}},{//第4关 map[3]{4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,6,6,6,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,4},{4,6,6,6,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,4},{4,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,4},{4,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,4},{4,5,5,5,0,0,0,0,1,1,1,0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,4},{4,5,5,5,0,0,0,0,1,1,1,0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,4},{4,5,5,5,0,0,0,0,1,1,1,0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,5,5,5,4},{4,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,5,5,5,4},{4,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,5,5,5,4},{4,0,0,0,0,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,4},{4,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,4},{4,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,4},{4,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,4},{4,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,4},{4,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,4},{4,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,4},{4,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,4},{4,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,4},{4,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,4},{4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4}},{//第5关 map[4]{4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4},{4,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,5,5,5,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,4},{4,5,5,5,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,4},{4,5,5,5,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,4},{4,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,4},{4,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,4},{4,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,4},{4,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,6,6,6,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,6,6,6,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,6,6,6,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,4},{4,5,5,5,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,4},{4,5,5,5,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,4},{4,5,5,5,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,5,5,5,4},{4,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,5,5,5,4},{4,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,5,5,5,4},{4,0,0,0,5,5,5,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,1,1,1,0,0,0,5,5,5,4},{4,0,0,0,5,5,5,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,1,1,1,0,0,0,5,5,5,4},{4,0,0,0,5,5,5,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,1,1,1,0,0,0,5,5,5,4},{4,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,5,5,5,4},{4,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,5,5,5,4},{4,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,5,5,5,4},{4,5,5,5,5,5,5,0,0,0,5,5,5,5,5,5,0,0,0,5,5,5,1,1,1,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,4},{4,5,5,5,5,5,5,0,0,0,5,5,5,5,5,5,0,0,0,5,5,5,1,1,1,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,4},{4,5,5,5,5,5,5,0,0,0,5,5,5,5,5,5,0,0,0,5,5,5,1,1,1,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,5,5,5,4},{4,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,5,5,5,4},{4,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,5,5,5,4},{4,0,0,0,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,5,5,5,5,5,5,4},{4,0,0,0,5,5,5,5,5,5,5,5,5,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,5,5,5,0,0,0,5,5,5,5,5,5,4},{4,0,0,0,5,5,5,5,5,5,5,5,5,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,5,5,5,0,0,0,5,5,5,5,5,5,4},{4,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4}},{//第6关 map[5]{4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,4},{4,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,0,4},{4,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,2,2,2,2,2,2,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,4},{4,0,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,2,2,2,2,2,2,2,2,0,0,0,1,1,0,0,0,0,0,0,0,1,1,4},{4,0,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,2,2,2,2,2,2,2,2,0,0,1,1,1,0,0,0,0,0,0,0,1,1,4},{4,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,1,1,0,0,0,0,0,0,0,0,1,1,4},{4,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,2,2,2,2,2,2,2,2,2,2,2,2,1,1,0,0,0,0,0,0,0,0,1,1,4},{4,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,2,2,2,2,2,2,2,2,2,2,2,2,1,1,0,0,0,0,0,0,0,0,1,1,4},{4,1,1,0,0,0,0,0,0,0,0,0,1,1,1,2,2,2,2,6,6,6,6,6,6,2,2,2,2,1,1,1,0,0,0,0,0,1,1,1,4},{4,1,1,0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,6,6,6,6,6,6,2,2,2,2,1,1,1,1,0,0,0,0,1,1,1,4},{4,1,1,0,0,0,0,0,0,0,1,1,1,1,1,2,2,2,2,6,6,6,6,6,6,2,2,2,2,1,1,1,1,0,0,0,1,1,1,1,4},{4,0,1,1,0,0,0,0,0,0,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,1,0,0,1,1,1,1,4},{4,0,1,1,1,0,0,0,0,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,1,1,1,1,1,1,1,4},{4,0,0,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,1,1,1,1,1,1,1,4},{4,0,0,0,1,1,1,1,1,1,1,1,1,6,6,6,6,6,6,1,1,1,6,6,6,6,6,6,1,1,1,1,1,1,1,1,1,1,1,0,4},{4,0,0,0,1,1,1,1,1,1,1,1,1,6,6,6,6,6,6,1,1,1,6,6,6,6,6,6,1,1,1,1,1,1,1,1,1,1,1,0,4},{4,0,0,0,0,1,1,1,1,1,1,1,1,6,6,6,6,6,6,1,1,1,6,6,6,6,6,6,1,1,1,1,1,1,1,1,1,1,0,0,4},{4,0,0,0,0,0,1,1,1,1,1,1,1,6,6,6,0,0,0,1,1,1,0,0,0,6,6,6,1,1,1,1,1,1,1,1,1,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,1,1,1,6,6,6,0,0,0,1,1,1,0,0,0,6,6,6,1,1,1,1,1,1,1,1,1,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,1,1,1,6,6,6,0,0,0,1,1,1,0,0,0,6,6,6,1,1,1,1,1,1,1,1,1,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,4},{4,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,6,6,6,6,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,4},{4,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,6,6,6,6,6,6,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,4},{4,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,4},{4,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,4},{4,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,4},{4,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,4},{4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4}},{//第7关 map[6]{4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4},{4,0,0,0,0,0,0,0,0,0,6,6,6,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,6,6,6,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,6,6,6,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,6,6,6,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,6,6,6,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,6,6,6,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,6,6,6,0,0,0,0,0,0,6,6,6,0,0,0,6,6,6,6,6,6,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,6,6,6,0,0,0,0,0,0,6,6,6,0,0,0,6,6,6,6,6,6,4},{4,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,6,6,6,0,0,0,0,0,0,6,6,6,0,0,0,6,6,6,6,6,6,4},{4,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,6,6,6,1,1,1,0,0,0,0,0,0,0,0,0,6,6,6,4},{4,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,6,6,6,1,1,1,0,0,0,0,0,0,0,0,0,6,6,6,4},{4,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,6,6,6,1,1,1,0,0,0,0,0,0,0,0,0,6,6,6,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,6,6,6,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,6,6,6,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,6,6,6,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,6,6,6,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,4},{4,0,0,0,0,0,0,6,6,6,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,4},{4,0,0,0,0,0,0,6,6,6,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,4},{4,6,6,6,0,0,0,6,6,6,0,0,0,0,0,0,1,1,1,0,0,0,6,6,6,0,0,0,0,0,0,6,6,6,1,1,1,0,0,0,4},{4,6,6,6,0,0,0,6,6,6,0,0,0,0,0,0,1,1,1,0,0,0,6,6,6,0,0,0,0,0,0,6,6,6,1,1,1,0,0,0,4},{4,6,6,6,0,0,0,6,6,6,0,0,0,0,0,0,1,1,1,0,0,0,6,6,6,0,0,0,0,0,0,6,6,6,1,1,1,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,6,6,6,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,6,6,6,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,6,6,6,0,0,0,0,0,0,4},{4,0,0,0,6,6,6,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,4},{4,0,0,0,6,6,6,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,4},{4,0,0,0,6,6,6,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,4},{4,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,4},{4,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,4},{4,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,4},{4,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,6,6,6,0,0,0,6,6,6,0,0,0,0,0,0,1,1,1,4},{4,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,6,6,6,0,0,0,6,6,6,0,0,0,0,0,0,1,1,1,4},{4,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,6,6,6,0,0,0,6,6,6,0,0,0,0,0,0,1,1,1,4},{4,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,6,6,6,0,0,0,0,0,0,4},{4,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,1,6,6,6,0,0,0,0,0,0,4},{4,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,1,6,6,6,0,0,0,0,0,0,4},{4,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,4},{4,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,4},{4,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,4},{4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4}},{//第8关 map[7]{4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,4},{4,0,0,0,1,1,1,5,5,5,5,5,5,0,0,0,6,6,6,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,1,1,1,5,5,5,5,5,5,0,0,0,6,6,6,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,1,1,1,5,5,5,5,5,5,0,0,0,6,6,6,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,5,5,5,5,5,5,1,1,1,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,6,6,6,0,0,0,4},{4,0,0,0,0,0,0,5,5,5,5,5,5,1,1,1,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,6,6,6,0,0,0,4},{4,0,0,0,0,0,0,5,5,5,5,5,5,1,1,1,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,6,6,6,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,1,1,1,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,1,1,1,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,1,1,1,0,0,0,0,0,0,4},{4,0,0,0,6,6,6,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,6,6,6,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,6,6,6,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,0,0,0,5,5,5,5,5,5,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,0,0,0,5,5,5,5,5,5,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,0,0,0,5,5,5,5,5,5,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,0,0,0,0,0,0,6,6,6,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,0,0,0,0,0,0,6,6,6,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,0,0,0,0,0,0,6,6,6,4},{4,0,0,0,1,1,1,5,5,5,5,5,5,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,1,1,1,5,5,5,5,5,5,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,1,1,1,5,5,5,5,5,5,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,6,6,6,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,4},{4,6,6,6,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,4},{4,6,6,6,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,4},{4,0,0,0,0,0,0,0,0,0,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4},{4,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,0,0,0,1,1,1,6,6,6,0,0,0,4},{4,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,0,0,0,1,1,1,6,6,6,0,0,0,4},{4,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,9,9,9,1,1,0,0,0,0,0,0,0,1,1,1,6,6,6,0,0,0,4},{4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4}},};for(int i=0;i<41;i++)for(int j=0;j<41;j++)map[i][j]=Map[level-1][i][j];PrintMap();         //打印地图//地图是地图,坦克大军并未有在里面
}
void Frame()                               //打印游戏主体框架
{int i;//SetConsoleTextAttribute为设置文本颜色和文本背景颜色函数SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_INTENSITY);printf("  ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁  ");//高亮红色SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE|FOREGROUND_INTENSITY);printf("  ▂▂▂▂▂▂▂▂▂▂▂▂▂ \n");//高亮蓝色for(i=0;i<14;i++){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_INTENSITY);printf("▕                                                                              ▏");//高亮黄色SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY|FOREGROUND_BLUE);printf(" |                          |\n");//高亮蓝色}SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_INTENSITY);printf("▕                                                                              ▏");//高亮黄色SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY|FOREGROUND_BLUE);printf(" |═════════════|\n");//高亮蓝色for(i=0;i<24;i++){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_INTENSITY);printf("▕                                                                              ▏");//高亮黄色SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY|FOREGROUND_BLUE);printf(" |                          |\n");//高亮蓝色}SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_INTENSITY);printf("  ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔  ");//高亮黄色SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_BLUE);printf(" ﹊﹊﹊﹊﹊﹊﹊﹊﹊﹊﹊﹊﹊﹊\n");//高亮蓝色SideScreen();  //打印副屏幕
}
void PrintMap()                          //打印内部详细地图(障碍物)(含对level读取)
{int i,j;for(j=0;j<41;j++)for(i=0;i<41;i++)if(map[i][j]==6){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE|BACKGROUND_GREEN|BACKGROUND_RED|BACKGROUND_BLUE);GoToxy(2*j,i);printf("■");}else if(map[i][j]==2){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_RED|BACKGROUND_GREEN|BACKGROUND_RED);GoToxy(2*j,i);printf("▓");}else if(map[i][j]==1){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|BACKGROUND_GREEN|BACKGROUND_RED);GoToxy(2*j,i);printf("▓");}else if(map[i][j]==5){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|BACKGROUND_BLUE|FOREGROUND_BLUE|FOREGROUND_GREEN);GoToxy(2*j,i);printf("~");}SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE|FOREGROUND_RED|FOREGROUND_GREEN);GoToxy(38,37);     printf("◣★◢");//这是你的家族徽章GoToxy(38,38);    printf("███");    //∵无论地图怎么变,家所在位置不变,且家的字符多种,不方便用上述方式打印GoToxy(38,39);     printf("◢█◣");    //∴直接打印(且家的map值与符号无关)/*此打印图像方式非常适用于正方形体,回平面进行扩大,增加观赏性。图像打印位置是经过SetConsoleCurcorPosition()函数根据数据打印于屏幕相应位置上,而不是根据数据(数组)直接打印。*/
}
void SideScreen()                       //副屏幕打印
{//行(84起,110末,若双字符宽则在108打印最后一个字)列(11上屏末,13下屏初,39下屏末。为美观最好打在38)GoToxy(93,2);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_RED);printf("第     关");GoToxy(92,5);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE);printf("分  数:");GoToxy(92,7);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);printf("生  命:");GoToxy(86,9);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);printf("剩余敌方坦克:");GoToxy(86,11);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);printf("当前游戏速度:  %d",21-speed);GoToxy(86,13);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);printf("当前游戏状态:");GoToxy(94,19);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_RED);GoToxy(94,24);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_RED);printf("帮  助");GoToxy(86,27);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);printf("方向键  ←↑→↓  移动");GoToxy(93,29);printf("x 键 射击");GoToxy(89,31);printf("+ - 调整游戏速度");GoToxy(90,33);printf("游戏速度范围1~20");GoToxy(90,35);printf("回车键 暂停游戏");GoToxy(90,37);printf("Esc键  退出游戏");/* printf("帮  助");     //这是第二种详细说明的样式GoToxy(86,21);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);printf("方向键  ←↑→↓  移动");GoToxy(93,23);printf("x 键 射击");GoToxy(89,25);printf("+ - 调整游戏速度");GoToxy(90,27);printf("游戏速度范围1~20");GoToxy(90,29);printf("回车键 暂停游戏");GoToxy(90,31);printf("Esc键  退出游戏");GoToxy(86,33);printf("敌方坦克全部消灭则过关");GoToxy(87,34);printf("己方坦克生命值为0 或");GoToxy(86,35);printf("正下方的老家被毁则失败");GoToxy(86,36);printf("己坦克与敌坦克子弹碰撞");GoToxy(87,37);printf("则抵消,敌坦克间子弹碰");GoToxy(86,38);printf("撞不抵消且可穿过敌坦克");*/
}
void GameCheak()                     //检查游戏的输赢
{if(remain_enemy<=0&& !AI_tank[0].alive&& !AI_tank[1].alive&& !AI_tank[2].alive&& !AI_tank[3].alive){//一关内AI坦克剩余数量是0和4种坦克都不存在(alive==0)NextLevel();//进入下一关}if(my_tank.revive>=MAX_LIFT)//如果我的坦克4次复活机会都没了{GameOver(0);//游戏都结束了,这里是一种状况,还有一种是老家没了}
}
void GameOver(bool home)      //失败了继续游戏就是了
{int timing=0,color=1;while(1){if(timing++%30==0)//游戏结束原因为生命值为0{ColorChoose(color);//颜色选择函数if(home){GoToxy(37,19);//特定位置,根据实际要求可变更printf("YOU BUYBUY");}GoToxy(37,20);         //主屏幕中心打印printf("游戏结束!");GoToxy(100,13);        //副屏幕打印printf("游戏结束");GoToxy(88,17);printf("请按回车键重新开始!");GoToxy(88,18);printf("或按 Esc键退出游戏!");if(++color==8)//颜色变换color=1;}if(GetAsyncKeyState(0xD)&0x8000)//回车键{//system("cls");       //清屏,这里清屏后再次打印框架有一定几率造成框架上移一行的bug,因此选用自建清屏函数//Frame ();            //重新打印游戏框架score-=500;          //分数-500ClearMainScreen();   //主屏清屏函数,无需再次打印框架Initialize();        //从本关重新开始break;}else if(GetAsyncKeyState( 0x1B )& 0x8000)  //Esc键退出exit(0);//拜拜Sleep(20);//需要时间给你看看怎么变}
}
void ClearMainScreen()             //主屏幕清屏函数∵system("cls")后打印框架有一定几率造成框架上移一行的错误
{                                                //∴单独编写清屏函数for(int i=1;i<40;i++){GoToxy(2,i);printf("                                                                              ");}
}
void ColorChoose(int color)       //颜色选择输入的函数
{switch(color){case 1:               //天蓝色(我的坦克颜色)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);break;case 2:               //绿色SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);break;case 3:               //黄色SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);break;case 4:               //红色SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);break;case 5:               //紫色SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);break;case 6:               //白色SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN);break;case 7:               //深蓝色(∵颜色深难与黑色背景辨识度不高 ∴坦克颜色不选用此颜色),只用在字体颜色闪烁中SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);break;}
}
void NextLevel()                         //下一关(含有全局level变量的读写)
{int timing=0,color=1;level++;//使用到这个的时候肯定下一关if(level<=MAX_LEVET)//最多到8关while(1){if(timing++%10==0){ColorChoose(color);   //颜色选择GoToxy(37,20);        //主屏幕中心打印printf("恭喜过关!");GoToxy(100,13);       //副屏幕打印printf("等待下关");GoToxy(87,17);printf("请按回车键进入下一关!");GoToxy(88,18);printf("或按 Esc键退出游戏!");if(++color==8)color=1;}if (GetAsyncKeyState( 0xD )& 0x8000)  //回车键{GoToxy(88,17);        //抹除副屏幕中的提示printf("                     ");GoToxy(88,18);printf("                     ");ClearMainScreen();   //主屏清屏函数,无需再次打印框架Initialize();        //初始化从下一关开始,level已++break;}else if(GetAsyncKeyState( 0x1B )& 0x8000)  //Esc键退出exit(0);Sleep(20);}else   //level>8 通关while(1){if(timing++%5==0){ColorChoose(color);GoToxy(33,20);        //主屏幕中心打印printf("恭喜通过全部关卡!");GoToxy(100,13);       //副屏幕打印printf("已通全关");GoToxy(88,17);printf("恭喜通过全部关卡!");GoToxy(88,19);printf("按 Esc键退出游戏!");if(++color==8)color=1;}if(GetAsyncKeyState( 0x1B )& 0x8000)  //Esc键退出exit(0);Sleep(10);}
}//自定义函数--子弹部分的函数
void BuildAIBullet(Tank *tank)                   //AI坦克的子弹发射(含有对my_tank的文件读取,只读取my_tank坐标)
{if(tank->CD==15)//我们需要发射子弹{if(!(rand()%11))//有十分之一的几率{BuildBullet(*tank);tank->CD=0;}}elsetank->CD++;//初始化中被设置为0//上面这一部分是自由开火时间,但是有一部分还是可能超出后还没开一次火。你以为自己气运逆天if(tank->CD>=14)//一枪不发是不可能的,我来一个强制发射{if(tank->y==38)//老家底部,反正就是直捣黄龙{if(tank->x<20)//老家左边(坐标画出来兄弟){if(tank->direction==RIGHT)//枪口刚刚好对准老家{BuildBullet(*tank);//对准老家,开火tank->CD=0;}}else{if(tank->direction==LEFT)//枪口刚刚好对准老家{BuildBullet(*tank);//对准老家,开火tank->CD=0;}}}else if(tank->x==my_tank.x+1||tank->x==my_tank.x||tank->x==my_tank.x-1){//AI坦克炮口对到MY坦克的身上,结局妙不可言if((tank->direction==DOWN&&my_tank.y>tank->y)||(tank->direction==UP&&my_tank.y<tank->y)){                  //如果AI坦克炮口朝下而且刚刚好MY坦克就在坦克炮口之下//or AI坦克炮口朝上而且刚刚好MY坦克就在坦克炮口之上int big=my_tank.y,smal=tank->y,i;if(my_tank.y < tank->y)//如果MY坦克处于AI坦克上面{big=tank->y;//大smal=my_tank.y;//小}//调换一下for(i=smal+2;i<big-2;i++)//判断AI炮口的直线上两坦克间有无障碍{if(map[i][tank->x]!=0||map[i][tank->x]!=5)//如果有障碍break;}if(i==big-1)//若i走到big-1说明无障碍{BuildBullet(*tank);     //则发射子弹tank->CD=0;}}}else if(tank->y==my_tank.y+1 || tank->y==my_tank.y || tank->y==my_tank.y-1) //AI坦克在横向上"炮口"对准我的坦克{if((tank->direction==RIGHT && my_tank.x > tank->x )|| (tank->direction==LEFT && my_tank.x < tank->x)){                  //若是AI朝右并且我的坦克在AI坦克右方(数值大的在下面)或者AI朝左我的坦克在AI左方int big=my_tank.y , smal=tank->y , i;if(my_tank.x < tank->x){big=tank->x;smal=my_tank.x;}for(i=smal+2;i<=big-2;i++)  //判断AI炮口的直线上两坦克间有无障碍if(map[tank->y][i]!=0 || map[tank->y][i]!=5)      //若有障碍break;if(i==big-1)   //若i走到big-1说明无障碍{BuildBullet(*tank);     //则发射子弹tank->CD=0;}}}}/*首先确定了AI坦克的自由反射子弹的能力和到了一定时间后会发射子弹的几率。之后再确定了AI坦克跑到老家底部后面对老家一定开火的底气。最后如果在路上碰到MY坦克,中间没有障碍物的话,AI也不会客气的代码*/
}
void BuildBullet(Tank tank)                       //子弹发射(人机共用)玩家坦克直接调用该函数,AI通过AIshoot调用
{                   //∵实现方式为顺序循环建立子弹,每次调用改变的bullet数组元素都不同//∴为了方便,不将bullet放入参数,bullet作为全局变量使用switch(tank.direction)//确定下子弹方向{case UP    :bullet [bul_num].x = tank.x;bullet [bul_num].y = tank.y-2;bullet [bul_num].direction=1;break;case DOWN  :bullet [bul_num].x = tank.x;bullet [bul_num].y = tank.y+2;bullet [bul_num].direction=2;break;case LEFT  :bullet [bul_num].x = tank.x-2;bullet [bul_num].y = tank.y;bullet [bul_num].direction=3;break;case RIGHT :bullet [bul_num].x = tank.x+2;bullet [bul_num].y = tank.y;bullet [bul_num].direction=4;break;}//这里的图像建立可都是2的bullet [bul_num].exist = 1;    //子弹被建立,此值为1则此子弹存在bullet [bul_num].initial = 1;  //子弹处于初建立状态bullet [bul_num].my=tank.my;   //如果是我的坦克发射的子弹bullet.my=1,否则为0bul_num++;if(bul_num==BULLET_NUM)        //如果子弹编号增长到20号,那么重头开始编号bul_num=0;                 //考虑到地图上不可能同时存在20颗子弹,所以数组元素设置20个
}
void BulletFly(Bullet bullet[BULLET_NUM])//子弹移动与打击(人机共用)
{int i,j;for(i=0;i<BULLET_NUM;i++)//存在地图上的子弹数量{if(bullet[i].exist)//如果子弹存在的话{if(bullet[i].initial==0)//如果子弹不是初建立{if(map[bullet[i].y][bullet[i].x]==0||map[bullet[i].y][bullet[i].x]==5)//子弹移动未遇到障碍物ClearBullet(bullet[i].x,bullet[i].y,BulletCheak(bullet[i].x,bullet[i].y));//抹除子弹图像switch(bullet[i].direction){case UP         :(bullet [i].y)--;break;case DOWN  :(bullet [i].y)++; break;case LEFT      :(bullet [i].x)--;break;case RIGHT   :(bullet [i].x)++;break;}}int collide=BulletCheak(bullet[i].x,bullet[i].y);判断子弹当前位置情况,判断子弹是否碰撞,是否位于水面上if( collide )                                      //如果检测到当前子弹坐标无障碍(无碰撞)(包括在地面上与在水面上)PrintBullet( bullet[i].x,bullet[i].y,collide);       //则打印子弹,若有碰撞则不打印elseBulletHit( & bullet [i] );     //若有碰撞则执行子弹碰撞函数if(bullet [i].initial)             //若子弹初建立,则把初建立标记去除bullet [i].initial = 0;for(j=0; j< BULLET_NUM ; j++)  //子弹间的碰撞判断,若是我方子弹和敌方子弹碰撞则都删除//若为两敌方子弹则无视if(bullet [j].exist && j!=i && (bullet[i].my || bullet[j].my) && bullet[i].x==bullet[j].x && bullet[i].y==bullet[j].y){                              //同样的两颗我方子弹不可能产生碰撞bullet [j].exist=0;bullet [i].exist=0;ClearBullet( bullet[j].x , bullet[j].y , BulletCheak(bullet[j].x , bullet[j].y ));  //抹除j子弹图形,子弹i图形已被抹除break;}}}
}
void BulletHit(Bullet *bullet)                     //子弹碰撞(人机共用)含tank全局变量修改,只通过BulletFly调用,
{                                                              //子弹间的碰撞不在本函数,由Bulletshoot()进行检查处理//∵每次打中的坦克都不一样,不可能把所有坦克放在参数表中int x=bullet->x;            //∴这里的Tank使用全局变量int y=bullet->y;            //这里传入的值是子弹坐标,这两个值不需要改变int i;if(map[y][x]==1||map[y][x]==2)//子弹碰到砖块{if(bullet->direction==UP||bullet->direction==DOWN)//如果子弹是纵向(上下)for(i=-1;i<=1;i++)if(map[y][x+i]==1||map[y][x+i]==2){   //如果子弹打中砖块两旁为砖块,则删除砖,若不是(一旁为坦克或其他地形)则忽略map[y][x+i]=0;//碎砖(改成背景)GoToxy(2*x+2*i,y);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED); //背景黑色printf("  ");}if(bullet->direction==LEFT || bullet->direction==RIGHT)     //若子弹是横向的  (与子弹纵向实现同理)for(i = -1 ; i<=1 ; i++)if(map[y+i][x]==1 || map[y+i][x]==2){map[y+i][x]=0;GoToxy(2*x,y+i);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED); //背景黑色printf("  ");}bullet->exist=0;//这颗子弹已经不存在了}else if(map[y][x]==4 || map[y][x]==6 )  //子弹碰到边框或者不可摧毁方块bullet->exist=0;//子弹还是得消失else if(bullet->my&&map[y][x]>=100&&map[y][x]<104)//如果是我的子弹碰到AI坦克{int num = map[y][x]%100;   //map[y][x]%100 等同于 tank.num ,可通过map值读取该坦克信息if(AI_tank[num].model==3 && AI_tank[num].color==2)   //若为firm tank,且color==2。//该坦克为绿色,表明没有受到伤害AI_tank[num].color=3;                        //则变成黄色,color=3为黄色else if (AI_tank[num].model==3 && AI_tank[num].color==3)AI_tank[num].color=4;                        //4为红色else                       //其他类型的坦克或者firm tank为红色的情况{AI_tank[num].alive=0;ClearTank(AI_tank[num].x , AI_tank[num].y);      //清除该坦克}bullet->exist=0;//消除子弹score+=100;//得分GoToxy(102,5);             //在副屏幕上打印出分数SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);printf("%d ",score);}else if(map[y][x]==200 && bullet->my==0 )   //若敌方子弹击中我的坦克{my_tank.alive=0;//存活为1,死亡为0ClearTank(my_tank.x , my_tank.y);//清除MY坦克图像bullet->exist=0;//子弹存在与否的变量,1为存在,0为没有my_tank.revive++;      //我的坦克复活次数+1(∵我的坦克复活次数与生命值有关∴放在这里自减)score-=100;            //分数减少GoToxy(102,5);         //在副屏幕上打印出分数SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);printf("%d   ",score);GoToxy(102,7);         //在副屏幕打印出我的剩余生命值SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);printf("%d   ", MAX_LIFT-my_tank.revive);}else if(map[y][x]==9)      //子弹碰到家(无论是谁的子弹){bullet->exist=0;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE|FOREGROUND_RED|FOREGROUND_GREEN);GoToxy(38,37);     printf("      ");GoToxy(38,38);   printf("◢◣  ");GoToxy(38,39);     printf("███");GameOver(1);           //游戏结束,传入1代表老家被毁}
}
void PrintBullet(int x,int y,int T)               //打印子弹(人机共用)
{if(T==1)          //  T==1 表示子弹当前坐标在陆地上SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_INTENSITY);else if(T==2)     //  T==2 表示子弹当前坐标在水面上SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_INTENSITY|BACKGROUND_BLUE);GoToxy(2*x,y);printf("凸");
}
void ClearBullet(int x,int y,int T)             //清除子弹(人机共用)
{GoToxy(2*x,y);if(T==2)        //  T==2 表示子弹当前坐标在水面上{SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|BACKGROUND_BLUE|FOREGROUND_BLUE|FOREGROUND_GREEN);printf("~");}else if(T==1)   //  T==1 表示子弹当前坐标在陆地上{SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);printf("  ");}
}
int BulletCheak(int x,int y)                       //判断子弹前面的情况(人机共用)
{//判断子弹当前位置情况,判断子弹是否碰撞,是否位于水面上。//有障碍返回0,无障碍且子弹在地面返回1,子弹在水面上返回2if(map[y][x]==0)return 1;else if(map[y][x]==5)return 2;elsereturn 0;
}//自定义函数-- 坦克部分的函数void BuildAITank(int *position,Tank *AI_tank)    //建立AI坦克
{//position为坦克生成位置,-1为左上角,0为游戏范围中间,1为右上角(坦克游戏正统呗)2为自己//rand()随见函数公式:0 <= rand()%(a+1) <= a        0+m <= rand()%(n-m+1)+m <=n//rand函数实现1到n:1 <= rand()%(n)+1 <=nif(AIPositionCheak(*position))//随机赋予函数数值{//若此位置无障碍,可生成。position参数详见AIPositionCheak函数定义AI_tank->x=20+18*(*position);//20 + 18 * position 对应三个生成位置的x假坐标AI_tank->y=2;if(AI_tank->revive==level_info[level-1].firm_tank_order){//坦克出现(复活)次序==关卡信息(level_info)中firm tank的出现次序AI_tank->model = 3;           //3为firm tank的模型(外观)AI_tank->color = 2;           //颜色参数2为绿色,具体详见函数ColorChoose}else if(AI_tank->revive==level_info[level-1].fast_tank_order)  //同上if,这里是fast_tank的{AI_tank->model = 2;//2为fast tanke模型AI_tank->color = rand()%6+1;  //若不是firm tank则随机颜色,颜色参数为1~6,分别代表不同颜色,详见函数ColorChoose}else      //普通坦克{AI_tank->model = 1;//第一号坦克模式AI_tank->color = rand()%6+1;  //若不是firm tank则随机颜色}AI_tank->alive = 1;       //坦克变为存在AI_tank->direction = 2 ;  //方向朝下AI_tank->revive++;        //复活次数+1PrintTank(*AI_tank);(*position)++;remain_enemy--;//敌方坦克数量减少GoToxy(102,9);            //在副屏幕上打印剩余坦克数SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);printf("%d ",remain_enemy);if(*position==2)          //position只能为0,1,-1,这里position循环重置*position = -1;return ;                  //若生成了一辆坦克,则结束该函数}/*LevInfo level_info[MAX_LEVET]={{-1,-1},{3,-1},{-1,3},{2,3},{2,3},{2,3},{2,3},{2,3}}; //初始化,-1代表没有该类型坦克首先revive是确定了坦克存在的次数,每一次出现的坦克都会经过if,else if,else判断,和level_info【】进行对比之后对AI坦克模型进行输出变更。AI坦克出现的位置变更是使用了++方法,每一次等于2是强行变回-1进行处理。如此循环。游戏中不难发现每次坦克出现都是中间,右边后才左边。但是电脑处理速度快,所以这一瞬间很肉眼不认真观察很难察觉。另外实际上输出的三个位置也是经过计算的。左上角(2,2) 中间(2,20) 右上角(2,38)输出处理时会有其他判断,详情请到 PrintTank()函数观看*/
}
void BuildMyTank(Tank *my_tank)                 //建立玩家坦克
{my_tank->x=15;//坐标my_tank->y=38;//坐标my_tank->stop=NULL;//没有暂停my_tank->direction=1;//枪口对准敌人my_tank->model=0;//第0号坦克模型my_tank->color=1;//选择颜色而已my_tank->alive=1;//我终于存在于世界my_tank->my=1;//从1而终,我兔万岁。代表我方的标记my_tank->CD=7;//子弹冷却时间PrintTank (*my_tank) ;   //打印我的坦克
}
void MoveAITank(Tank *AI_tank)                   //AI坦克的移动
{//AI需要专门的加强吗???反正这样先就好了if(AI_tank->alive)//如果AI坦克存在于场上{if(AI_tank->stop!=0)//坦克是否在运动状态的判断{AI_tank->stop--;//如果不是0,那么就老老实实停止行动return ;//不做任何事情返回}if(!(rand()%23))//22分之一的几率执行该if{AI_tank->direction=rand()%4+1;//转向if(rand()%3) //在方向重置后有2分之1的概率停止走动3步的时间{AI_tank->stop=2;//停止时间return ;}}ClearTank(AI_tank->x,AI_tank->y);//清除坦克(人机共用)if(TankCheak(*AI_tank,AI_tank->direction))//坦克数组和坦克现在方向{//检查坦克前方是否一片坦途(没有障碍的话)switch(AI_tank->direction){case UP   : AI_tank->y--; break;  //上前进一格case DOWN : AI_tank->y++; break;  //下前进一格case LEFT : AI_tank->x--; break;  //左前进一格case RIGHT: AI_tank->x++; break;  //右前进一格}}else//哦哦,车长呀!!前方发生洪涝无法通行(有障碍物){if(!(rand()%4))//3分之1的概率乱转{AI_tank->direction=rand()%4+1;//转向AI_tank->stop=2; //乱转之后停止走动3步的时间PrintTank(*AI_tank);return;          //∵continue会跳过下面的打印函数,∴这里先打印}else//另外三分之二可能会选择正确的方向{int j;for(j=0;j<=4;j++){if(TankCheak(*AI_tank,j))break;//循环判断坦克四周有无障碍,此函数返值1为可通过}if(j==5)         //j==5说明此坦克四周都有障碍物,无法通行{PrintTank(*AI_tank);return;      //则跳过下面的while循环以防程序卡死}while(TankCheak ( *AI_tank , AI_tank->direction) == 0)  //如果前方仍有障碍AI_tank->direction=(rand()%4+1); //则换个随机方向检测}}PrintTank(*AI_tank);}
}
void MoveMyTank(int turn)                           //玩家坦克移动,只能通过keyboard()函数解决,既是玩家操纵
{ClearTank(my_tank.x,my_tank.y);//要移动的话首先删除掉原来位置的东西my_tank.direction=turn;            将键盘输入的方向值传入我的坦克方向值//方向控制的键是箭头,但是我们按下时我们判断好使用的1 2 3 4来进行case的if(TankCheak(my_tank,my_tank.direction))//对坦克的前方进行判断的函数需要的话前往该函数观看switch(turn)//方向选择{case UP      :  my_tank.y--;    break;//前进case DOWN:  my_tank.y++;  break;//后退case LEFT    :  my_tank.x--;    break;//向左case RIGHT :  my_tank.x++;  break;//向右//整个运行框是0点坐标是有最左上角算起,因此对于坐标需要可以画图}PrintTank(my_tank);//立刻打印出新的位置
}
void ClearTank(int x,int y)                            //清除坦克(人机共用)
{int i,j;for(i=0;i<3;i++)for(j=0;j<3;j++){map[y+j-1][x+i-1]=0;     //九宫格个坐标的算法,y轴:y+j-1  x轴:x+i-1   以此算出九宫格SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN);  //接下来打印出来的是绿色GoToxy(2*x+2*j-2,y+i-1);  //给出横坐标空位printf("  ");}
}
void PrintTank(Tank tank)                            //打印坦克(人机共用)  由于读取的Tank参数较多,故就不将参数一一传入了
{ColorChoose(tank.color);//颜色选择函数,定义一个数组里装着字符指针(字符串),指向该字符串首地址char *(*tankF)[4]=tank_figure[tank.model];//将二维数组首址赋初值给数组指针 model==0为我的坦克//,4为电脑1坦克,8为电脑2,类推for(int i = 0; i < 3; i++){GoToxy((tank.x-1)*2 , tank.y-1+i);        //在坦克中心坐标的左边,上中下三行打印printf("%s", tankF[i][tank.direction-1]); //打印的是地址,地址既字符串for(int j=0;j<3;j++)if(tank.my)       //若为我的坦克,为1map[tank.y+j-1][tank.x+i-1]=200;  //在map上把"坦克"九格填满代表敌我坦克的参数。//敌方此值为100~103,我方为200elsemap[tank.y+j-1][tank.x+i-1]=100+tank.num;  //这样可以通过map值读取坦克编号,读取操作在BulletHit 函数}
}
bool TankCheak(Tank tank,int direction)       //检查坦克前方是否有障碍物(dirtection),1为阻碍,0为畅通
{switch(direction)//此时的变量是我们的方向{case UP:                     //上if(map[tank.y-2][tank.x]==0&&map[tank.y-2][tank.x-1]==0&&map[tank.y-2][tank.x+1]==0)return 1;elsereturn 0;case DOWN:               //下if(map[tank.y+2][tank.x]==0&&map[tank.y+2][tank.x-1]==0&&map[tank.y+2][tank.x+1]==0)return 1;elsereturn 0;case LEFT:                    //左if(map[tank.y][tank.x-2]==0&&map[tank.y-1][tank.x-2]==0&&map[tank.y+1][tank.x-2]==0)return 1;elsereturn 0;case RIGHT:                //右if(map[tank.y][tank.x+2]==0&&map[tank.y-1][tank.x+2]==0&&map[tank.y+1][tank.x+2]==0)return 1;elsereturn 0;}return 0;
}
int AIPositionCheak(int position)                  //检查AI坦克前方情况(AIpostionCheak),1为阻碍,0为畅通
{//position为坦克生成位置,-1为左上角,0为游戏范围中间,1为右上角(坦克游戏正统呗)2为自己int x,y,i,j;if(position==2)x=15,y=38;//自己的坦克呗!!!这里暂时用不到elsey=2,x=20+18*position;//坦克出来的三个位置for(i=0;i<3;i++)for(j=0;j<3;j++)if( map[y+j-1][x+i-1]!=0)  //如果遍历的九宫格里有障碍物return 0;              //则返回0,表示此生成位置有阻碍return 1;                          //否则生成1,表示此生成位置无阻碍
}//DWORD WINAPI InputX(LPVOID lpParameter); //声明线程函数,用于检查X键输入并设置X键的输入冷却时间

坦克大战 自备注改成(非原创)相关推荐

  1. C# Windows Phone 8 WP8 开发,将WebClient的DownloadStringCompleted事件改成非同步的awiat方法。...

    C# Windows Phone 8 WP8 开发,将WebClient的DownloadStringCompleted事件改成非同步的awiat方法. 原文:C# Windows Phone 8 W ...

  2. 内网虚拟机静态IP设置VMWare内网通外网不通把某一网段白名单虚拟机ping不通主机虚拟机桥接改成非192.168网段服务器与电脑直连共享wifi

    首先关于虚拟机网络问题,先打开网络适配器,查看是否有vmware下载后的两个自带的虚拟网卡,网络和internet->更改适配器 可以看到VMnet1和VMnet8两个虚拟机网卡和wlan网卡以 ...

  3. Ecshop会员注册的Email 电子邮箱改成非必填项

    ECSHOP后台"会员注册项设置"可以调置注册项是否必填 ,但是注册时的EMAIL电子邮箱后台是无法设置必填的.但可以通过修改文件来实现 email电子邮箱 非必填. 修改方法: ...

  4. 如何由jdk的安装版本改成非安装版本

    背景. 官网一般只提供windows下的exe文件,不提供zip打包文件.有些不愿意使用安装版本. 解决方法 本文以windows 7下安装jdk-6u35-windows-x64.exe为例说明 1 ...

  5. php 登录 非空验证,Ecshop会员注册的Email 电子邮箱改成非必填项 并带非空验证邮箱合法性...

    1.修改模板文件 *去掉*号就好 2.打开  /js/user.js 文件,找到下面JS代码段并修改(大概在466行左右) if (email.length == 0) { msg += email_ ...

  6. 第一个小项目——坦克大战

    坦克大战 TankWar0.1 该版本要做的很简单,建立一个窗口就可以,原始的大的类继承Frame方法,在main函数可以对原始大类进行初始化或赋值,大类中定义一个方法launch,主函数中定义类调用 ...

  7. java坦克大战(2.0)

    坦克大战(2.0) 在前面的坦克大战1.0已经完成了移动 绘制我方/敌方坦克. 接下来会运用到前面学习的多线程的基础,来实现发射子弹的效果 发射子弹 想要坦克发射子弹,可以用以下思路 按J发射子弹 将 ...

  8. 软件工程改错题例题:请将下面的非结构化程序改成结构化程序

    请将下面的非结构化程序改成结构化程序 例1: 非结构化程序: Do while ps1;if q then goto 10EndDo 10:s2 结构化程序: flag=true;Do while p ...

  9. MFC与坦克大战系列(奇迹冬瓜)---chapter2(photoshop与TransparentBlt---快速生成背景与透明位图处理)

    今天继续MFC与坦克大战系列.做程序是要有团队合作.毕竟大多数程序员不可能做到美工和程序都精通.但是只有一个人的时候.就需要快捷的生成比较看的过去的图片供游戏所需.就拿坦克大战这个游戏程序来说.刚开始 ...

最新文章

  1. 修复mysql数据库供应商_修复MYSQL数据库
  2. Ch2r_ood_understanding 本文档为论文限定领域口语对话系统中超出领域话语的对话行为识别的部分实验代码。代码基于Python,需要用到的外部库有: Keras(搭建神经网络) S
  3. python操作文件的库_Python使用pyshp库读取shapefile信息的方法
  4. 更新10_linux,时隔十年,QQ更新了Linux版本
  5. Python内置函数sorted()高级排序用法
  6. Dart的数据库操作
  7. Android Studio第一个NDK程序
  8. git config命令使用第一篇——介绍,基本操作,增删改查
  9. CF991A If at first you don't succeed...
  10. 记一次守护日志导致硬盘空间告警问题
  11. 全屏轮播代码淘宝店铺装修天-猫装修店铺装修代码全屏
  12. jquery dialog 打开的时候自动聚焦解决方法
  13. 制作U盘PE启动盘安装Windows系统
  14. window7安装jdk报错this version of the jdk is already installed
  15. 创建第一个Android Kotlin应用
  16. 怎么把视频复制到IPAD
  17. 【CI/CD】详解自动化开发之CI/CD(持续集成、持续交付、持续部署)
  18. pd.set_option 问题
  19. 饭前一根香蕉,到底有多好!
  20. C语言:编求阶乘函数

热门文章

  1. Weblogic新建服务,Adminserver下新建server
  2. Python小项目:实现日历功能
  3. 2021贵州江口中学高考成绩查询入口,贵州江口中学2021年宿舍条件
  4. 对付身体小毛病的80妙招
  5. 2020安徽省程序设计大赛_收集圣物
  6. 【Linux】循序渐进学运维-服务篇-rysnc安装及使用
  7. 利用蜜罐技术优雅反杀的思路
  8. 短信验证码和语音验证码该如何选择?
  9. 怎样启动python_如何运行python
  10. Python爬虫笔记——post请求、cookies及session