问题标题: 50豆 坦克大战代码

0
0

1
已采纳
李乐天
李乐天
初级光能
初级光能

点赞加采纳

谢谢

(急需豆)

0
0
0
李乐天
李乐天
初级光能
初级光能
#include"codingtang.h"
Window window  = createWindow(600, 600);
using namespace std;
const int shift=25,ctrl=26,esc=27,_left=28,_down=29,_right=30,_up=31;
 int map1[28][28]={{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,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,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}
    ,{1,1,1,1,2,2,2,1,1,1,1,1,1,3,3,3,3,1,1,1,1,1,1,1,1,0,0,0}
    ,{1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0}
    ,{1,1,1,1,2,2,2,1,1,1,1,1,1,3,3,3,3,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,0,0,0,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,1,1,1,1,1,1,1,1,1,1}
    ,{0,0,0,1,1,1,1,1,1,1,1,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1}
    ,{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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
    ,{3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,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}
    ,{2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,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,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,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}
    ,{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,0,0,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0}
    ,{3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,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,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,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};

    int map2[28][28]={{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,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,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},
    {1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1},
    {1,1,1,1,1,1,0,0,1,3,3,3,3,3,3,3,3,3,3,3,1,0,0,1,1,1,1,1},
    {1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,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,0,0,0,0,0,0,0,0,1,1},
    {1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1},
    {1,1,1,1,1,1,0,0,1,4,4,4,4,4,4,4,4,4,4,4,1,0,0,1,1,1,1,1},
    {1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1},
    {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,4,4,4},
    {3,3,3,3,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,3,3,3,3,3},
    {1,1,1,1,3,3,0,0,3,3,1,1,1,1,1,1,1,1,3,3,0,0,3,3,1,1,1,1},
    {3,3,3,3,0,0,0,0,0,0,3,3,3,3,3,3,3,3,0,0,0,0,0,0,3,3,3,3},
    {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,1,1},
    {1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1},
    {2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2},
    {3,3,3,3,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,3,3,3,3,3},
    {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,1,1},
    {3,3,3,3,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,3,3,3,3,3},
    {2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2},
    {1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,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,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,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,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,0}};
    int map3[28][28]={{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,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,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,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0},
    {0,2,2,2,2,2,0,4,4,4,4,0,1,1,1,1,0,4,4,4,4,0,2,2,2,2,2,0}
    ,{0,0,2,2,2,0,4,4,4,4,4,4,0,1,1,0,4,4,4,4,4,4,0,2,2,2,0,0},
    {0,0,0,2,0,4,4,4,4,4,4,4,4,0,0,4,4,4,4,4,4,4,4,0,2,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,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,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,0,0,0,0,0,0},{1,0
    ,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,1},
    {1,1,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,1,1},
    {1,1,1,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,1,1,1},
    {1,1,1,4,0,0,0,0,0,0,4,4,4,4,4,4,4,4,0,0,0,0,0,0,1,1,1,1},
    {1,1,1,3,4,0,0,0,0,0,0,4,4,4,4,4,4,0,0,0,0,0,0,4,1,1,1,1},
    {1,1,1,1,3,4,0,0,0,0,0,0,4,4,4,4,0,0,0,0,0,0,4,3,1,1,1,1},
    {1,1,1,1,1,3,4,0,0,0,0,0,0,4,4,0,0,0,0,0,0,4,3,1,1,1,1,1},
    {1,1,1,1,1,1,3,4,0,0,0,0,0,0,0,0,0,0,1,0,4,3,1,1,1,1,1,1},
    {1,1,1,1,1,1,1,3,4,0,0,0,0,0,1,0,0,0,0,4,3,1,1,1,1,1,1,1},
    {1,1,1,1,1,1,1,1,3,4,0,0,0,0,0,0,0,0,4,3,1,1,1,1,1,1,1,1},
    {3,3,3,3,3,3,3,3,4,0,0,0,0,0,0,0,0,0,0,4,3,3,3,3,3,3,3,3},
    {4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,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,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
    int map4[28][28]=
    {{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,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,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,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,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,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,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,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,3,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,3,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,3,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,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,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,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}
    ,{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,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,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,0,0,0}
    ,{1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1}
    ,{1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,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,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}
    ,{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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
    int map5[28][28]={{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,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,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},
    {3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
    {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
    {3,3,4,4,4,4,4,4,4,4,3,3,3,3,4,4,4,4,4,4,4,4,3,3,3,3,3,3},
    {1,1,4,4,1,1,1,1,1,1,1,3,3,1,4,4,4,4,4,4,4,4,1,1,1,1,1,1},
    {1,1,4,4,1,1,1,1,1,1,1,3,3,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1},
    {1,1,4,4,1,1,1,1,1,1,1,3,3,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1},
    {1,1,4,4,4,4,4,4,4,4,1,3,3,1,4,4,4,4,4,4,4,4,1,1,1,1,1,1},
    {1,1,4,4,4,4,4,4,4,4,1,3,3,1,4,4,4,4,4,4,4,4,1,1,1,1,1,1},
    {1,1,4,4,1,1,1,1,4,4,1,3,3,1,1,1,1,1,1,1,4,4,1,1,1,1,1,1},
    {1,1,4,4,1,1,1,1,4,4,1,3,3,1,1,1,1,1,1,1,4,4,1,1,1,1,1,1},
    {1,1,4,4,1,1,1,1,4,4,1,3,3,1,1,1,1,1,1,1,4,4,1,1,1,1,1,1},
    {1,1,4,4,4,4,4,4,4,4,1,3,3,1,4,4,4,4,4,4,4,4,1,1,1,1,1,1},
    {1,1,4,4,4,4,4,4,4,4,1,3,3,1,4,4,4,4,4,4,4,4,1,1,1,1,1,1},
    {3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
    {1,1,1,1,1,1,1,1,1,1,1,3,3,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,4,4,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,4,4,4,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,4,4,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,4,4,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,4,4,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,4,4,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,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,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}};
    int map6[28][28]={
    {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,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,0,0,0,0,0,0}
    ,{1,1,1,1,4,0,0,0,4,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0}
    ,{1,1,1,1,4,0,0,0,4,1,1,0,0,0,1,1,1,1,1,4,4,4,4,4,4,0,0,0}
    ,{1,1,0,1,4,0,0,0,4,1,1,0,0,0,1,1,1,1,1,4,0,0,0,0,0,0,0,0}
    ,{1,1,0,1,4,0,0,0,4,1,1,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0}
    ,{1,1,0,1,4,0,0,4,1,1,1,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0}
    ,{1,1,0,1,4,0,0,0,4,1,1,0,0,0,0,0,0,0,0,4,0,0,0,3,4,0,0,0}
    ,{1,1,0,1,4,0,0,0,4,4,4,4,4,4,4,4,0,0,0,4,0,0,0,3,4,0,0,0}
    ,{1,1,0,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,4,0,0,0}
    ,{1,1,0,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,4,0,0,0}
    ,{1,1,0,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,4,0,0,0}
    ,{4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,4,4,4,4,0,0,0,3,4,0,0,0}
    ,{1,1,0,1,1,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,0,0}
    ,{1,1,0,1,1,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,0,0}
    ,{1,1,0,1,1,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,0,0}
    ,{1,1,0,1,1,1,4,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,3,4,0,0,0}
    ,{1,1,0,1,1,1,4,0,0,0,1,2,1,3,3,3,3,3,3,3,3,3,3,3,4,0,0,0}
    ,{1,1,0,4,4,4,4,0,0,0,1,2,1,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,1,2,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,1,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0}
    ,{0,0,0,0,0,0,0,0,0,0,1,2,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,2,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
    ,{0,0,0,1,1,1,1,1,1,1,1,1,0,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,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,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}};

void fresh(){
    Event ev;
    while(pollEvent(&ev))sleep(1);
}
int getch(){
    Event ev;

        if(pollEvent(&ev)){
            if(ev.type==CDT_KEYDOWN){
                switch(ev.keyCode){
                    case KEY_UP:
                    fresh();
                        return 31;
                    case KEY_RIGHT:fresh();
                        return 30;
                    case KEY_LEFT:fresh();
                        return 28;
                    case KEY_DOWN:fresh();
                        return 29;
                    case KEY_SPACE:fresh();
                        return 32;
                   case KEY_BACKSPACE:fresh();
                        return 16;
                    case CDT_KEY_1:
                        fresh();
                        return 1;
                    case CDT_KEY_2:
                        fresh();
                        return 2;
                    case CDT_KEY_3:
                        fresh();
                        return 3;
                    case CDT_KEY_4:
                        fresh();
                        return 4;
                }
            }
        }
    return 0;
}
string itos(int a){
    string s;
    stringstream ss;
    ss<<a;
    ss>>s;
    return s;
}

int thing[30][30];
//int map[30][30];
enum bulleter{
    bad,good
};

class tank;
class bullet;
void fire(tank a,bullet* bullets,int len);
tank* tanks[30][30];
bullet* bullets[30][30];

enum m_dct{
    m_left,m_up,m_right,m_down
};
int dx[4]{-1,0,1,0},dy[4]{0,-1,0,1};
class bullet{
    public:
        bool is_father;
        bulleter bulleter_;
        int x;
        int y;
        m_dct state;
        bullet(){
            is_father=1;
            bulleter_=bad;
            x=-1;
            y=-1;
            state=m_up;
        }
        void move(){
            kill();
            if(y+dy[state]<0||y+dy[state]>27||x+dx[state]<0||x+
                dx[state]>27){
                x=-1;
                y=-1;
            }else if(thing[y+dy[state]][x+dx[state]]!=0){
                if(thing[y+dy[state]][x+dx[state]]==5){
                    if(bulleter_==good){
                        x=-1,y=-1;
                    }else{
                        x+=dx[state];
                        y+=dy[state];
                    }
                }else{
                thing[y+dy[state]][x+dx[state]]--;
                x=-1;
                y=-1;}
            }else if(bullets[x+dx[state]][y+dy[state]]){
                bullet*a=bullets[x+dx[state]][y+dy[state]];
                a->x=-1;
                a->y=-1;
                bullets[x+dx[state]][y+dy[state]]=0;
                //kill();
                x=-1;
                y=-1;
            }else if(bullets[x][y]){
                bullet*a=bullets[x][y];
                a->x=0;
                a->y=0;
                bullets[x][y]=0;
                //kill();
                x=-1;
                y=-1;
            }else{
                x+=dx[state];
                y+=dy[state];
            }
            print();
        }
        virtual void self_move(){
            move();
        }
        virtual void print(){
            window.drawColor(255,255,255,0);
            if(x>=0&&y>=0&&x<=27&&y<=27&&thing[y][x]==0){
                window.fillRect((y+1.25)*20,(x+1.25)*20,10,10);
                bullets[x][y]=this;
            }
        }
        void kill(){
            if(x==-1&&y==-1){
                return;
            }
            if(x>=0&&y>=0&&x<=27&&y<=27&&thing[y][x]==0){
                bullets[x][y]=0;
            }
        }
};
class ice_bullet:public bullet{
    public:
        ice_bullet(){
            is_father=0;
            bulleter_=bad;
            x=-1;
            y=-1;
            state=m_up;
        }
        void print(){
            window.drawColor(0,0,255,0);
            if(x>=0&&y>=0&&x<=27&&y<=27&&thing[y][x]==0){
                window.fillRect((y+1.25)*20,(x+1.25)*20,10,10);
                bullets[x][y]=this;
            }
        }
        void self_move(){
            kill();
            if(y+dy[state]<0||y+dy[state]>27||x+dx[state]<0||x+
                dx[state]>27){
                x=-1;
                y=-1;
            }else if(thing[y+dy[state]][x+dx[state]]!=0){
                if(thing[y+dy[state]][x+dx[state]]==5){
                    if(bulleter_==good){
                        x=-1,y=-1;
                    }else{
                        x+=dx[state];
                        y+=dy[state];
                    }
                }else if(thing[y+dy[state]][x+dx[state]]!=4){
                    thing[y+dy[state]][x+dx[state]]=4;
                    x=-1;
                    y=-1;
                }else if(thing[y+dy[state]][x+dx[state]]==4){
                    thing[y][x]=4;
                    x=-1;
                    y=-1;
                }
            }else if(bullets[x+dx[state]][y+dy[state]]){
                bullet*a=bullets[x+dx[state]][y+dy[state]];
                a->x=-1;
                a->y=-1;
                bullets[x+dx[state]][y+dy[state]]=0;
                thing[y+dy[state]][x+dx[state]]=4;
                //kill();
                x=-1;
                y=-1;
            }else if(bullets[x][y]){
                bullet*a=bullets[x][y];
                a->x=0;
                a->y=0;
                bullets[x][y]=0;
                thing[y][x]=4;
                //kill();
                x=-1;
                y=-1;
            }else{
                x+=dx[state];
                y+=dy[state];
            }
            print();
        }
};
class super_bullet:public bullet{
    public:
        super_bullet (){
            is_father=0;
            bulleter_=bad;
            x=-1;
            y=-1;
            state=m_up;
        }
        void print(){
            window.drawColor(255,255,0,0);
            if(x>=0&&y>=0&&x<=27&&y<=27&&thing[y][x]==0){
                window.fillRect((y+1.25)*20,(x+1.25)*20,10,10);
                bullets[x][y]=this;
            }
        }
        void self_move(){
            move();
            move();
        }
};
class boom_bullet:public bullet{
    public:
        boom_bullet (){
            is_father=0;
            bulleter_=bad;
            x=-1;
            y=-1;
            state=m_up;
        }
        void print(){
            window.drawColor(255,0,0,0);
            if(x>=0&&y>=0&&x<=27&&y<=27&&thing[y][x]==0){
                window.fillRect((y+1.25)*20,(x+1.25)*20,10,10);
                bullets[x][y]=this;
            }
        }
        void self_move(){
            kill();
            if(y+dy[state]<0||y+dy[state]>27||x+dx[state]<0||x+
                dx[state]>27){
                x=-1;
                y=-1;
            }else if(thing[y+dy[state]][x+dx[state]]!=0){
                if(thing[y+dy[state]][x+dx[state]]==5){
                    if(bulleter_==good){
                        x=-1,y=-1;
                    }else{
                        x+=dx[state];
                        y+=dy[state];
                    }
                }else if(thing[y+dy[state]][x+dx[state]]>0){
                    thing[y+dy[state]][x+dx[state]]=0;
                    x=-1;
                    y=-1;
                }
            }else if(bullets[x+dx[state]][y+dy[state]]){
                bullet*a=bullets[x+dx[state]][y+dy[state]];
                a->x=-1;
                a->y=-1;
                bullets[x+dx[state]][y+dy[state]]=0;
                thing[y+dy[state]][x+dx[state]]=0;
                //kill();
                x=-1;
                y=-1;
            }else if(bullets[x][y]){
                bullet*a=bullets[x][y];
                a->x=0;
                a->y=0;
                bullets[x][y]=0;
                thing[y][x]=0;
                //kill();
                x=-1;
                y=-1;
            }else{
                x+=dx[state];
                y+=dy[state];
            }
            print();
        }
};
bool judge9(int x,int y,bulleter b){
    if(x<1||y<1||x>26||y>26){
        return 0;
    }
    for(int i=-1;i<2;i++){
        for(int j=-1;j<2;j++){
            if(thing[y+i][x+j]>0&&thing[y+i][x+j]!=5){

                return 0;
            }else if(thing[y+i][x+j]==5&&b==good){
                return 0;
            }
        }
    }
    for(int i=-2;i<3;i++){
        for(int j=-2;j<3;j++){
            if(b==bad&&bullets[y+i][x+j]&&bullets[y+i][x+j]->bulleter_==good){
                return 0;
            }
        }
    }
    for(int i=-3;i<4;i++){
        for(int j=-3;j<4;j++){
            if(tanks[x+i][y+j]){
                return 0;
            }
        }
    }
    return 1;
}
void print_thing(){
    for(int j=0;j<28;j++)         // 从坐标(1,1)点开始打印
        for(int i=0;i<28;i++)
            if(thing[i][j]==1)
            {
                window.drawColor(0,255,0,0);
                window.fillRect((i+1)*20,(j+1)*20,20,20);
            }
            else if(thing[i][j]==2)
            {
                window.drawColor(255,255,0,0);
                window.fillRect((i+1)*20,(j+1)*20,20,20);
            }
            else if(thing[i][j]==3)
            {
                window.drawColor(0,0,255,0);
                window.fillRect((i+1)*20,(j+1)*20,20,20);
            }
            else if(thing[i][j]==4)
            {
                window.drawColor(255,255,255,0);
                window.fillRect((i+1)*20,(j+1)*20,20,20);
            }
            else if(thing[i][j]==5)
            {
                window.drawColor(255,0,0,0);
                window.fillRect((i+1)*20,(j+1)*20,20,20);
            }
}
/////
class tank{
    string _tank_photo[5];
    public:
        bulleter tanker;
        m_dct state;
        int x;
        int y;
        bool die;
        int sweapon;
        tank(){
            sweapon=1;
            die=0;
            tanker=bad;
            x=1;
            y=1;
            state=m_down;
            _tank_photo[0]=" 1111  11";
            _tank_photo[1]=" 1 1111 1";
            _tank_photo[2]="11  1111 ";
            _tank_photo[3]="1 1111 1 ";
            _tank_photo[4]="         ";
        }
        int judge(){
            int x2=x+dx[state];
            int y2=y+dy[state];
            return judge9(x2,y2,tanker);
        }
        int judge2(){
            return judge9(x,y,tanker);
        }
        string tank_photo(){
            return _tank_photo[state];
        }
        void _print_tank(int x,int y){
            if(die){
                return;
            }
            string a=tank_photo();
            if(die){
                a=_tank_photo[4];
            }
            for(int j=0;j<3;j++){
                for(int k=0;k<3;k++){
                    if(a[j*3+k]==' '){
                        window.drawColor(0,0,0,0);
                    }else{
                        window.drawColor(255,255,255,0);
                    }
                    window.fillRect((j+x)*20,(k+y)*20,20,20);
                }
            }
        }
        void print_tank(){
            if(jd()){
                return;
            }
            _print_tank(y,x);
            tanks[x][y]=this;
        }
        void kill_tank(){/*
            window.drawColor(0,0,0,0);
            window.fillRect(x,y,60,60);*/
            tanks[x][y]=0;
        }
        void move();
        bool jd(){//judge_die
            if(die){
                return 1;
            }
            for(int i=x-1;i<=x+1;i++){
                for(int j=y-1;j<=y+1;j++){
                    bullet* a=bullets[i][j];
                    if(a){
                        if(tanker!=a->bulleter_){
                            kill_tank();
                            die=1;
                            a->kill();
                            a->x=-1;
                            a->y=-1;
                            tanks[x][y]=0;
                            x=-1;
                            y=-1;
                            bullets[i][j]=0;
                            return 1;
                        }else{
                            a->x=-1;
                            a->y=-1;
                            bullets[i][j]=0;
                        }
                    }
                }
            }
            return 0;
        }
        bool judge_die(){
            return jd();
        }
        void AI(){
            for(int i=0;i<30;i++){
                if(tanks[i][y]){
                    if(i>x){
                        tanks[i][y]->state=m_left;
                    }else if(i<x){
                        tanks[i][y]->state=m_right;
                    }
                }
            }
            for(int i=0;i<30;i++){
                if(tanks[i][y+1]){
                    if(i>x){
                        tanks[i][y+1]->state=m_left;
                    }else if(i<x){
                        tanks[i][y+1]->state=m_right;
                    }
                }
            }
            for(int i=0;i<30;i++){
                if(tanks[i][y]){
                    if(i>x){
                        tanks[i][y-1]->state=m_left;
                    }else if(i<x){
                        tanks[i][y-1]->state=m_right;
                    }
                }
            }
            for(int i=0;i<30;i++){
                if(tanks[x+1][i]){
                    if(i>y){
                        tanks[x+1][i]->state=m_up;
                    }else if(i<y){
                        tanks[x+1][i]->state=m_down;
                    }
                }
            }
            for(int i=0;i<30;i++){
                if(tanks[x-1][i]){
                    if(i>y){
                        tanks[x-1][i]->state=m_up;
                    }else if(i<y){
                        tanks[x-1][i]->state=m_down;
                    }
                }
            }
        }
};

void print_out(){
    window.drawColor(0,255,0,0);
    window.fillRect(0,0,600,600);
    window.drawColor(0,0,0,0);
    window.fillRect(20,20,560,560);
}
void fire(tank a,bullet* bullets,int len){
    int x=a.x+dx[a.state],y=a.y+dy[a.state],pos=0;
    while(bullets[pos].x!=-1&&pos<len)pos++;
    if(pos==len){
        return;
    }
    bullets[pos].x=x;
    bullets[pos].y=y;
    bullets[pos].state=a.state;
    bullets[pos].bulleter_=a.tanker;
    bullet &b=bullets[pos];
}
void tank::move(){
    if(jd()){
        return;
    }
    kill_tank();
    if(judge()){
        x+=dx[state];
        y+=dy[state];
        return;
    }
    for(int i=0,j=rand()%4;i<4&&!this->judge();i++,j++){
        state=m_dct(j%4);
    }

    if(judge()){
        x+=dx[state];
        y+=dy[state];
        return;
    }
    print_tank();
}
char my_move(tank& a,bullet* b,bullet* b2,bullet* b3,bullet* b4,int l){

    //75 l, 72 u,77 r,80 d
    if(1){
        char c=getch();
        switch(c){



                    case _up:{  a.kill_tank();
                        if(!a.judge()){
                            for(int i=-1;i<2;i++){
                                for(int j=-1;j<2;j++){
                                    thing[a.y+j][a.x+i]=0;
                                }
                            }
                        }
                        if(a.state!=m_left){
                            a.state=m_left;
                        }else{
                            a.x--;
                            if(!a.judge2()){
                                a.x++;
                            }
                        }
                        break;
                    }
                    case _left:{    a.kill_tank();
                        if(!a.judge()){
                            for(int i=-1;i<2;i++){
                                for(int j=-1;j<2;j++){
                                    thing[a.y+j][a.x+i]=0;
                                }
                            }
                        }
                        if(a.state!=m_up){
                            a.state=m_up;
                        }else{
                            a.y--;
                            if(!a.judge2()){
                                a.y++;
                            }
                        }
                        break;
                    }
                    case _down:{    a.kill_tank();

                        if(!a.judge()){
                            for(int i=-1;i<2;i++){
                                for(int j=-1;j<2;j++){
                                    thing[a.y+j][a.x+i]=0;
                                }
                            }
                        }
                        if(a.state!=m_right){
                            a.state=m_right;
                        }else{
                            a.x++;
                            if(!a.judge2()){
                                a.x--;
                            }
                        }
                        break;
                    }
                    case _right:{   a.kill_tank();

                        if(!a.judge()){
                            for(int i=-1;i<2;i++){
                                for(int j=-1;j<2;j++){
                                    thing[a.y+j][a.x+i]=0;
                                }
                            }
                        }
                        if(a.state!=m_down){
                            a.state=m_down;
                        }else{
                            a.y++;
                            if(!a.judge2()){
                                a.y--;
                            }
                        }
                        break;
                    }

            case 32:{
                if(a.sweapon==1)
                fire(a,b,l);
                else if(a.sweapon==2)
                fire(a,b2,l);

                else if(a.sweapon==4)
                fire(a,b4,l);

                else if(a.sweapon==3)
                fire(a,b3,l);
                break;
            }
            case 1:{
                a.sweapon=1;
                break;
            }case 2:{
                a.sweapon=2;
                break;
            }
            case 3:{
                a.sweapon=3;
                break;
            }case 4:{
                a.sweapon=4;
                break;
            }
        }
        return c;
    }
    return 0;
}
bool cad(tank* tp,int l){
    for(int i=0;i<l;i++){
        if(tp[i].die==0){
            return 0;
        }
    }
    return 1;
}/**/

int main(){
    srand(time(0));
    tank t2,t3[20];
    int cntx=0;
    print_out();
    bullet b2[5],b3[20][5];
    ice_bullet b[5];
    boom_bullet b5[5];
    super_bullet b4[5];
    for(int k=1;k<7;k++){

    t2.tanker=good;
    t2.x=26;
    t2.y=26;
    t2.state=m_up;
    t2.die=0;

    int cnt=0;
    cntx=0;

    switch(k)//判断是第几关,然后载入相应地图
    {

    case 2 :
        {
            for(int i=0;i<28;i++)
                for(int j=0;j<28;j++)
                    thing[j][i]=map2[i][j];
        }break;
    case 3 :
        {
            for(int i=0;i<28;i++)
                for(int j=0;j<28;j++)
                    thing[j][i]=map3[i][j];
        }break;
    case 4 :
        {
            for(int i=0;i<28;i++)
                for(int j=0;j<28;j++)
                    thing[j][i]=map4[i][j];
        }break;
    case 5 :
        {
            for(int i=0;i<28;i++)
                for(int j=0;j<28;j++)
                    thing[j][i]=map5[i][j];
        }break;
    case 6 :
        {
            for(int i=0;i<28;i++)
                for(int j=0;j<28;j++)
                    thing[j][i]=map6[i][j];
        }break;
    case 1 :
        {
            for(int i=4;i<24;i++)
                for(int j=0;j<28;j++)
                    thing[j][i]=map1[i][j];
        }break;}
    for(int i=0;i<28;i++){
        thing[i][4]=5;
    }
    for(int i=0;i<20;i++){
        t3[i].die=1;t3[i].x=1;
        t3[i].y=1;
    }
    //t3[0].die=0;
    //t3[0].x=2;
    //t3[0].y=2;
    //t3[0].tanker=bad;
    if(k!=1){
        t3[0].die=0;
    }
    while(1){print_thing();
    //if((cnt++)%5==0)
        for(int i=0;i<5;i++){
            b[i].self_move();
            b2[i].self_move();
            b4[i].self_move();
            b5[i].self_move();
            for(int j=0;j<cntx;j++){
                b3[j][i].self_move();
            }
        }
        for(int i=0;i<5;i++){
            b[i].print();
            b2[i].print();
            b4[i].print();
            b5[i].print();
            for(int j=0;j<cntx;j++){
                b3[j][i].print();
            }
        }
        if((++cnt)%10==0){
            for(int i=0;i<cntx;i++){
                if(!(rand()%40)){
                    t3[i].state=m_dct(rand()%4);
                }
                if(!t3[i].die)t3[i].move();
            }
        }
        for(int i=0;i<cntx;i++){

                t3[i].print_tank();
            }
        char ch=0;
        if(!t2.jd())ch=my_move(t2,b2,b,b5,b4,5);
        t2.print_tank();
        if(rand()%10==0){
            for(int i=0;i<cntx;i++)
                if(!t3[i].jd())fire(t3[i],b3[i],5);
        }
        bool flflflf=0;
        for(int i=0;i<6;i++){
            for(int j=0;j<6;j++){
                if(tanks[i][j]){
                    flflflf=1;
                }
            }
        }
        if(!flflflf&&cntx<20){
            t3[cntx++].die=0;
            tanks[1][1]=&   t3[cntx++];
        }
        sleep(20);
        t2.AI();
        if(cad(t3,20)&&cntx==20){
            t2.kill_tank();
            goto br;
        }
        if(t2.die==1){
            return 0;
        }
        window.present();
    }br:;
    Color w{255,255,255,0};window.drawText("**成功", 70, w, 0, 200);sleep(1000);

    }
    return 0;
}

 

0
李乐天
李乐天
初级光能
初级光能
#include"codingtang.h"
Window window  = createWindow(600, 600);
using namespace std;
const int shift=25,ctrl=26,esc=27,_left=28,_down=29,_right=30,_up=31;
 int map1[28][28]={{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,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,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}
    ,{1,1,1,1,2,2,2,1,1,1,1,1,1,3,3,3,3,1,1,1,1,1,1,1,1,0,0,0}
    ,{1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0}
    ,{1,1,1,1,2,2,2,1,1,1,1,1,1,3,3,3,3,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,0,0,0,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,1,1,1,1,1,1,1,1,1,1}
    ,{0,0,0,1,1,1,1,1,1,1,1,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1}
    ,{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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
    ,{3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,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}
    ,{2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,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,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,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}
    ,{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,0,0,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0}
    ,{3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,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,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,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};

    int map2[28][28]={{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,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,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},
    {1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1},
    {1,1,1,1,1,1,0,0,1,3,3,3,3,3,3,3,3,3,3,3,1,0,0,1,1,1,1,1},
    {1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,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,0,0,0,0,0,0,0,0,1,1},
    {1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1},
    {1,1,1,1,1,1,0,0,1,4,4,4,4,4,4,4,4,4,4,4,1,0,0,1,1,1,1,1},
    {1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1},
    {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,4,4,4},
    {3,3,3,3,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,3,3,3,3,3},
    {1,1,1,1,3,3,0,0,3,3,1,1,1,1,1,1,1,1,3,3,0,0,3,3,1,1,1,1},
    {3,3,3,3,0,0,0,0,0,0,3,3,3,3,3,3,3,3,0,0,0,0,0,0,3,3,3,3},
    {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,1,1},
    {1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1},
    {2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2},
    {3,3,3,3,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,3,3,3,3,3},
    {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,1,1},
    {3,3,3,3,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,3,3,3,3,3},
    {2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2},
    {1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,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,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,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,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,0}};
    int map3[28][28]={{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,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,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,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0},
    {0,2,2,2,2,2,0,4,4,4,4,0,1,1,1,1,0,4,4,4,4,0,2,2,2,2,2,0}
    ,{0,0,2,2,2,0,4,4,4,4,4,4,0,1,1,0,4,4,4,4,4,4,0,2,2,2,0,0},
    {0,0,0,2,0,4,4,4,4,4,4,4,4,0,0,4,4,4,4,4,4,4,4,0,2,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,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,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,0,0,0,0,0,0},{1,0
    ,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,1},
    {1,1,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,1,1},
    {1,1,1,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,1,1,1},
    {1,1,1,4,0,0,0,0,0,0,4,4,4,4,4,4,4,4,0,0,0,0,0,0,1,1,1,1},
    {1,1,1,3,4,0,0,0,0,0,0,4,4,4,4,4,4,0,0,0,0,0,0,4,1,1,1,1},
    {1,1,1,1,3,4,0,0,0,0,0,0,4,4,4,4,0,0,0,0,0,0,4,3,1,1,1,1},
    {1,1,1,1,1,3,4,0,0,0,0,0,0,4,4,0,0,0,0,0,0,4,3,1,1,1,1,1},
    {1,1,1,1,1,1,3,4,0,0,0,0,0,0,0,0,0,0,1,0,4,3,1,1,1,1,1,1},
    {1,1,1,1,1,1,1,3,4,0,0,0,0,0,1,0,0,0,0,4,3,1,1,1,1,1,1,1},
    {1,1,1,1,1,1,1,1,3,4,0,0,0,0,0,0,0,0,4,3,1,1,1,1,1,1,1,1},
    {3,3,3,3,3,3,3,3,4,0,0,0,0,0,0,0,0,0,0,4,3,3,3,3,3,3,3,3},
    {4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,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,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
    int map4[28][28]=
    {{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,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,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,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,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,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,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,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,3,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,3,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,3,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,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,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,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}
    ,{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,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,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,0,0,0}
    ,{1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1}
    ,{1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,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,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}
    ,{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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
    int map5[28][28]={{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,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,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},
    {3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
    {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},
    {3,3,4,4,4,4,4,4,4,4,3,3,3,3,4,4,4,4,4,4,4,4,3,3,3,3,3,3},
    {1,1,4,4,1,1,1,1,1,1,1,3,3,1,4,4,4,4,4,4,4,4,1,1,1,1,1,1},
    {1,1,4,4,1,1,1,1,1,1,1,3,3,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1},
    {1,1,4,4,1,1,1,1,1,1,1,3,3,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1},
    {1,1,4,4,4,4,4,4,4,4,1,3,3,1,4,4,4,4,4,4,4,4,1,1,1,1,1,1},
    {1,1,4,4,4,4,4,4,4,4,1,3,3,1,4,4,4,4,4,4,4,4,1,1,1,1,1,1},
    {1,1,4,4,1,1,1,1,4,4,1,3,3,1,1,1,1,1,1,1,4,4,1,1,1,1,1,1},
    {1,1,4,4,1,1,1,1,4,4,1,3,3,1,1,1,1,1,1,1,4,4,1,1,1,1,1,1},
    {1,1,4,4,1,1,1,1,4,4,1,3,3,1,1,1,1,1,1,1,4,4,1,1,1,1,1,1},
    {1,1,4,4,4,4,4,4,4,4,1,3,3,1,4,4,4,4,4,4,4,4,1,1,1,1,1,1},
    {1,1,4,4,4,4,4,4,4,4,1,3,3,1,4,4,4,4,4,4,4,4,1,1,1,1,1,1},
    {3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
    {1,1,1,1,1,1,1,1,1,1,1,3,3,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,4,4,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,4,4,4,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,4,4,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,4,4,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,4,4,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,4,4,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,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,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}};
    int map6[28][28]={
    {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,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,0,0,0,0,0,0}
    ,{1,1,1,1,4,0,0,0,4,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0}
    ,{1,1,1,1,4,0,0,0,4,1,1,0,0,0,1,1,1,1,1,4,4,4,4,4,4,0,0,0}
    ,{1,1,0,1,4,0,0,0,4,1,1,0,0,0,1,1,1,1,1,4,0,0,0,0,0,0,0,0}
    ,{1,1,0,1,4,0,0,0,4,1,1,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0}
    ,{1,1,0,1,4,0,0,4,1,1,1,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0}
    ,{1,1,0,1,4,0,0,0,4,1,1,0,0,0,0,0,0,0,0,4,0,0,0,3,4,0,0,0}
    ,{1,1,0,1,4,0,0,0,4,4,4,4,4,4,4,4,0,0,0,4,0,0,0,3,4,0,0,0}
    ,{1,1,0,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,4,0,0,0}
    ,{1,1,0,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,4,0,0,0}
    ,{1,1,0,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,4,0,0,0}
    ,{4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,4,4,4,4,0,0,0,3,4,0,0,0}
    ,{1,1,0,1,1,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,0,0}
    ,{1,1,0,1,1,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,0,0}
    ,{1,1,0,1,1,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,0,0}
    ,{1,1,0,1,1,1,4,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,3,4,0,0,0}
    ,{1,1,0,1,1,1,4,0,0,0,1,2,1,3,3,3,3,3,3,3,3,3,3,3,4,0,0,0}
    ,{1,1,0,4,4,4,4,0,0,0,1,2,1,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,1,2,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,1,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0}
    ,{0,0,0,0,0,0,0,0,0,0,1,2,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,2,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
    ,{0,0,0,1,1,1,1,1,1,1,1,1,0,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,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,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}};

void fresh(){
    Event ev;
    while(pollEvent(&ev))sleep(1);
}
int getch(){
    Event ev;

        if(pollEvent(&ev)){
            if(ev.type==CDT_KEYDOWN){
                switch(ev.keyCode){
                    case KEY_UP:
                    fresh();
                        return 31;
                    case KEY_RIGHT:fresh();
                        return 30;
                    case KEY_LEFT:fresh();
                        return 28;
                    case KEY_DOWN:fresh();
                        return 29;
                    case KEY_SPACE:fresh();
                        return 32;
                   case KEY_BACKSPACE:fresh();
                        return 16;
                    case CDT_KEY_1:
                        fresh();
                        return 1;
                    case CDT_KEY_2:
                        fresh();
                        return 2;
                    case CDT_KEY_3:
                        fresh();
                        return 3;
                    case CDT_KEY_4:
                        fresh();
                        return 4;
                }
            }
        }
    return 0;
}
string itos(int a){
    string s;
    stringstream ss;
    ss<<a;
    ss>>s;
    return s;
}

int thing[30][30];
//int map[30][30];
enum bulleter{
    bad,good
};

class tank;
class bullet;
void fire(tank a,bullet* bullets,int len);
tank* tanks[30][30];
bullet* bullets[30][30];

enum m_dct{
    m_left,m_up,m_right,m_down
};
int dx[4]{-1,0,1,0},dy[4]{0,-1,0,1};
class bullet{
    public:
        bool is_father;
        bulleter bulleter_;
        int x;
        int y;
        m_dct state;
        bullet(){
            is_father=1;
            bulleter_=bad;
            x=-1;
            y=-1;
            state=m_up;
        }
        void move(){
            kill();
            if(y+dy[state]<0||y+dy[state]>27||x+dx[state]<0||x+
                dx[state]>27){
                x=-1;
                y=-1;
            }else if(thing[y+dy[state]][x+dx[state]]!=0){
                if(thing[y+dy[state]][x+dx[state]]==5){
                    if(bulleter_==good){
                        x=-1,y=-1;
                    }else{
                        x+=dx[state];
                        y+=dy[state];
                    }
                }else{
                thing[y+dy[state]][x+dx[state]]--;
                x=-1;
                y=-1;}
            }else if(bullets[x+dx[state]][y+dy[state]]){
                bullet*a=bullets[x+dx[state]][y+dy[state]];
                a->x=-1;
                a->y=-1;
                bullets[x+dx[state]][y+dy[state]]=0;
                //kill();
                x=-1;
                y=-1;
            }else if(bullets[x][y]){
                bullet*a=bullets[x][y];
                a->x=0;
                a->y=0;
                bullets[x][y]=0;
                //kill();
                x=-1;
                y=-1;
            }else{
                x+=dx[state];
                y+=dy[state];
            }
            print();
        }
        virtual void self_move(){
            move();
        }
        virtual void print(){
            window.drawColor(255,255,255,0);
            if(x>=0&&y>=0&&x<=27&&y<=27&&thing[y][x]==0){
                window.fillRect((y+1.25)*20,(x+1.25)*20,10,10);
                bullets[x][y]=this;
            }
        }
        void kill(){
            if(x==-1&&y==-1){
                return;
            }
            if(x>=0&&y>=0&&x<=27&&y<=27&&thing[y][x]==0){
                bullets[x][y]=0;
            }
        }
};
class ice_bullet:public bullet{
    public:
        ice_bullet(){
            is_father=0;
            bulleter_=bad;
            x=-1;
            y=-1;
            state=m_up;
        }
        void print(){
            window.drawColor(0,0,255,0);
            if(x>=0&&y>=0&&x<=27&&y<=27&&thing[y][x]==0){
                window.fillRect((y+1.25)*20,(x+1.25)*20,10,10);
                bullets[x][y]=this;
            }
        }
        void self_move(){
            kill();
            if(y+dy[state]<0||y+dy[state]>27||x+dx[state]<0||x+
                dx[state]>27){
                x=-1;
                y=-1;
            }else if(thing[y+dy[state]][x+dx[state]]!=0){
                if(thing[y+dy[state]][x+dx[state]]==5){
                    if(bulleter_==good){
                        x=-1,y=-1;
                    }else{
                        x+=dx[state];
                        y+=dy[state];
                    }
                }else if(thing[y+dy[state]][x+dx[state]]!=4){
                    thing[y+dy[state]][x+dx[state]]=4;
                    x=-1;
                    y=-1;
                }else if(thing[y+dy[state]][x+dx[state]]==4){
                    thing[y][x]=4;
                    x=-1;
                    y=-1;
                }
            }else if(bullets[x+dx[state]][y+dy[state]]){
                bullet*a=bullets[x+dx[state]][y+dy[state]];
                a->x=-1;
                a->y=-1;
                bullets[x+dx[state]][y+dy[state]]=0;
                thing[y+dy[state]][x+dx[state]]=4;
                //kill();
                x=-1;
                y=-1;
            }else if(bullets[x][y]){
                bullet*a=bullets[x][y];
                a->x=0;
                a->y=0;
                bullets[x][y]=0;
                thing[y][x]=4;
                //kill();
                x=-1;
                y=-1;
            }else{
                x+=dx[state];
                y+=dy[state];
            }
            print();
        }
};
class super_bullet:public bullet{
    public:
        super_bullet (){
            is_father=0;
            bulleter_=bad;
            x=-1;
            y=-1;
            state=m_up;
        }
        void print(){
            window.drawColor(255,255,0,0);
            if(x>=0&&y>=0&&x<=27&&y<=27&&thing[y][x]==0){
                window.fillRect((y+1.25)*20,(x+1.25)*20,10,10);
                bullets[x][y]=this;
            }
        }
        void self_move(){
            move();
            move();
        }
};
class boom_bullet:public bullet{
    public:
        boom_bullet (){
            is_father=0;
            bulleter_=bad;
            x=-1;
            y=-1;
            state=m_up;
        }
        void print(){
            window.drawColor(255,0,0,0);
            if(x>=0&&y>=0&&x<=27&&y<=27&&thing[y][x]==0){
                window.fillRect((y+1.25)*20,(x+1.25)*20,10,10);
                bullets[x][y]=this;
            }
        }
        void self_move(){
            kill();
            if(y+dy[state]<0||y+dy[state]>27||x+dx[state]<0||x+
                dx[state]>27){
                x=-1;
                y=-1;
            }else if(thing[y+dy[state]][x+dx[state]]!=0){
                if(thing[y+dy[state]][x+dx[state]]==5){
                    if(bulleter_==good){
                        x=-1,y=-1;
                    }else{
                        x+=dx[state];
                        y+=dy[state];
                    }
                }else if(thing[y+dy[state]][x+dx[state]]>0){
                    thing[y+dy[state]][x+dx[state]]=0;
                    x=-1;
                    y=-1;
                }
            }else if(bullets[x+dx[state]][y+dy[state]]){
                bullet*a=bullets[x+dx[state]][y+dy[state]];
                a->x=-1;
                a->y=-1;
                bullets[x+dx[state]][y+dy[state]]=0;
                thing[y+dy[state]][x+dx[state]]=0;
                //kill();
                x=-1;
                y=-1;
            }else if(bullets[x][y]){
                bullet*a=bullets[x][y];
                a->x=0;
                a->y=0;
                bullets[x][y]=0;
                thing[y][x]=0;
                //kill();
                x=-1;
                y=-1;
            }else{
                x+=dx[state];
                y+=dy[state];
            }
            print();
        }
};
bool judge9(int x,int y,bulleter b){
    if(x<1||y<1||x>26||y>26){
        return 0;
    }
    for(int i=-1;i<2;i++){
        for(int j=-1;j<2;j++){
            if(thing[y+i][x+j]>0&&thing[y+i][x+j]!=5){

                return 0;
            }else if(thing[y+i][x+j]==5&&b==good){
                return 0;
            }
        }
    }
    for(int i=-2;i<3;i++){
        for(int j=-2;j<3;j++){
            if(b==bad&&bullets[y+i][x+j]&&bullets[y+i][x+j]->bulleter_==good){
                return 0;
            }
        }
    }
    for(int i=-3;i<4;i++){
        for(int j=-3;j<4;j++){
            if(tanks[x+i][y+j]){
                return 0;
            }
        }
    }
    return 1;
}
void print_thing(){
    for(int j=0;j<28;j++)         // 从坐标(1,1)点开始打印
        for(int i=0;i<28;i++)
            if(thing[i][j]==1)
            {
                window.drawColor(0,255,0,0);
                window.fillRect((i+1)*20,(j+1)*20,20,20);
            }
            else if(thing[i][j]==2)
            {
                window.drawColor(255,255,0,0);
                window.fillRect((i+1)*20,(j+1)*20,20,20);
            }
            else if(thing[i][j]==3)
            {
                window.drawColor(0,0,255,0);
                window.fillRect((i+1)*20,(j+1)*20,20,20);
            }
            else if(thing[i][j]==4)
            {
                window.drawColor(255,255,255,0);
                window.fillRect((i+1)*20,(j+1)*20,20,20);
            }
            else if(thing[i][j]==5)
            {
                window.drawColor(255,0,0,0);
                window.fillRect((i+1)*20,(j+1)*20,20,20);
            }
}
/////
class tank{
    string _tank_photo[5];
    public:
        bulleter tanker;
        m_dct state;
        int x;
        int y;
        bool die;
        int sweapon;
        tank(){
            sweapon=1;
            die=0;
            tanker=bad;
            x=1;
            y=1;
            state=m_down;
            _tank_photo[0]=" 1111  11";
            _tank_photo[1]=" 1 1111 1";
            _tank_photo[2]="11  1111 ";
            _tank_photo[3]="1 1111 1 ";
            _tank_photo[4]="         ";
        }
        int judge(){
            int x2=x+dx[state];
            int y2=y+dy[state];
            return judge9(x2,y2,tanker);
        }
        int judge2(){
            return judge9(x,y,tanker);
        }
        string tank_photo(){
            return _tank_photo[state];
        }
        void _print_tank(int x,int y){
            if(die){
                return;
            }
            string a=tank_photo();
            if(die){
                a=_tank_photo[4];
            }
            for(int j=0;j<3;j++){
                for(int k=0;k<3;k++){
                    if(a[j*3+k]==' '){
                        window.drawColor(0,0,0,0);
                    }else{
                        window.drawColor(255,255,255,0);
                    }
                    window.fillRect((j+x)*20,(k+y)*20,20,20);
                }
            }
        }
        void print_tank(){
            if(jd()){
                return;
            }
            _print_tank(y,x);
            tanks[x][y]=this;
        }
        void kill_tank(){/*
            window.drawColor(0,0,0,0);
            window.fillRect(x,y,60,60);*/
            tanks[x][y]=0;
        }
        void move();
        bool jd(){//judge_die
            if(die){
                return 1;
            }
            for(int i=x-1;i<=x+1;i++){
                for(int j=y-1;j<=y+1;j++){
                    bullet* a=bullets[i][j];
                    if(a){
                        if(tanker!=a->bulleter_){
                            kill_tank();
                            die=1;
                            a->kill();
                            a->x=-1;
                            a->y=-1;
                            tanks[x][y]=0;
                            x=-1;
                            y=-1;
                            bullets[i][j]=0;
                            return 1;
                        }else{
                            a->x=-1;
                            a->y=-1;
                            bullets[i][j]=0;
                        }
                    }
                }
            }
            return 0;
        }
        bool judge_die(){
            return jd();
        }
        void AI(){
            for(int i=0;i<30;i++){
                if(tanks[i][y]){
                    if(i>x){
                        tanks[i][y]->state=m_left;
                    }else if(i<x){
                        tanks[i][y]->state=m_right;
                    }
                }
            }
            for(int i=0;i<30;i++){
                if(tanks[i][y+1]){
                    if(i>x){
                        tanks[i][y+1]->state=m_left;
                    }else if(i<x){
                        tanks[i][y+1]->state=m_right;
                    }
                }
            }
            for(int i=0;i<30;i++){
                if(tanks[i][y]){
                    if(i>x){
                        tanks[i][y-1]->state=m_left;
                    }else if(i<x){
                        tanks[i][y-1]->state=m_right;
                    }
                }
            }
            for(int i=0;i<30;i++){
                if(tanks[x+1][i]){
                    if(i>y){
                        tanks[x+1][i]->state=m_up;
                    }else if(i<y){
                        tanks[x+1][i]->state=m_down;
                    }
                }
            }
            for(int i=0;i<30;i++){
                if(tanks[x-1][i]){
                    if(i>y){
                        tanks[x-1][i]->state=m_up;
                    }else if(i<y){
                        tanks[x-1][i]->state=m_down;
                    }
                }
            }
        }
};

void print_out(){
    window.drawColor(0,255,0,0);
    window.fillRect(0,0,600,600);
    window.drawColor(0,0,0,0);
    window.fillRect(20,20,560,560);
}
void fire(tank a,bullet* bullets,int len){
    int x=a.x+dx[a.state],y=a.y+dy[a.state],pos=0;
    while(bullets[pos].x!=-1&&pos<len)pos++;
    if(pos==len){
        return;
    }
    bullets[pos].x=x;
    bullets[pos].y=y;
    bullets[pos].state=a.state;
    bullets[pos].bulleter_=a.tanker;
    bullet &b=bullets[pos];
}
void tank::move(){
    if(jd()){
        return;
    }
    kill_tank();
    if(judge()){
        x+=dx[state];
        y+=dy[state];
        return;
    }
    for(int i=0,j=rand()%4;i<4&&!this->judge();i++,j++){
        state=m_dct(j%4);
    }

    if(judge()){
        x+=dx[state];
        y+=dy[state];
        return;
    }
    print_tank();
}
char my_move(tank& a,bullet* b,bullet* b2,bullet* b3,bullet* b4,int l){

    //75 l, 72 u,77 r,80 d
    if(1){
        char c=getch();
        switch(c){



                    case _up:{  a.kill_tank();
                        if(!a.judge()){
                            for(int i=-1;i<2;i++){
                                for(int j=-1;j<2;j++){
                                    thing[a.y+j][a.x+i]=0;
                                }
                            }
                        }
                        if(a.state!=m_left){
                            a.state=m_left;
                        }else{
                            a.x--;
                            if(!a.judge2()){
                                a.x++;
                            }
                        }
                        break;
                    }
                    case _left:{    a.kill_tank();
                        if(!a.judge()){
                            for(int i=-1;i<2;i++){
                                for(int j=-1;j<2;j++){
                                    thing[a.y+j][a.x+i]=0;
                                }
                            }
                        }
                        if(a.state!=m_up){
                            a.state=m_up;
                        }else{
                            a.y--;
                            if(!a.judge2()){
                                a.y++;
                            }
                        }
                        break;
                    }
                    case _down:{    a.kill_tank();

                        if(!a.judge()){
                            for(int i=-1;i<2;i++){
                                for(int j=-1;j<2;j++){
                                    thing[a.y+j][a.x+i]=0;
                                }
                            }
                        }
                        if(a.state!=m_right){
                            a.state=m_right;
                        }else{
                            a.x++;
                            if(!a.judge2()){
                                a.x--;
                            }
                        }
                        break;
                    }
                    case _right:{   a.kill_tank();

                        if(!a.judge()){
                            for(int i=-1;i<2;i++){
                                for(int j=-1;j<2;j++){
                                    thing[a.y+j][a.x+i]=0;
                                }
                            }
                        }
                        if(a.state!=m_down){
                            a.state=m_down;
                        }else{
                            a.y++;
                            if(!a.judge2()){
                                a.y--;
                            }
                        }
                        break;
                    }

            case 32:{
                if(a.sweapon==1)
                fire(a,b,l);
                else if(a.sweapon==2)
                fire(a,b2,l);

                else if(a.sweapon==4)
                fire(a,b4,l);

                else if(a.sweapon==3)
                fire(a,b3,l);
                break;
            }
            case 1:{
                a.sweapon=1;
                break;
            }case 2:{
                a.sweapon=2;
                break;
            }
            case 3:{
                a.sweapon=3;
                break;
            }case 4:{
                a.sweapon=4;
                break;
            }
        }
        return c;
    }
    return 0;
}
bool cad(tank* tp,int l){
    for(int i=0;i<l;i++){
        if(tp[i].die==0){
            return 0;
        }
    }
    return 1;
}/**/

int main(){
    srand(time(0));
    tank t2,t3[20];
    int cntx=0;
    print_out();
    bullet b2[5],b3[20][5];
    ice_bullet b[5];
    boom_bullet b5[5];
    super_bullet b4[5];
    for(int k=1;k<7;k++){

    t2.tanker=good;
    t2.x=26;
    t2.y=26;
    t2.state=m_up;
    t2.die=0;

    int cnt=0;
    cntx=0;

    switch(k)//判断是第几关,然后载入相应地图
    {

    case 2 :
        {
            for(int i=0;i<28;i++)
                for(int j=0;j<28;j++)
                    thing[j][i]=map2[i][j];
        }break;
    case 3 :
        {
            for(int i=0;i<28;i++)
                for(int j=0;j<28;j++)
                    thing[j][i]=map3[i][j];
        }break;
    case 4 :
        {
            for(int i=0;i<28;i++)
                for(int j=0;j<28;j++)
                    thing[j][i]=map4[i][j];
        }break;
    case 5 :
        {
            for(int i=0;i<28;i++)
                for(int j=0;j<28;j++)
                    thing[j][i]=map5[i][j];
        }break;
    case 6 :
        {
            for(int i=0;i<28;i++)
                for(int j=0;j<28;j++)
                    thing[j][i]=map6[i][j];
        }break;
    case 1 :
        {
            for(int i=4;i<24;i++)
                for(int j=0;j<28;j++)
                    thing[j][i]=map1[i][j];
        }break;}
    for(int i=0;i<28;i++){
        thing[i][4]=5;
    }
    for(int i=0;i<20;i++){
        t3[i].die=1;t3[i].x=1;
        t3[i].y=1;
    }
    //t3[0].die=0;
    //t3[0].x=2;
    //t3[0].y=2;
    //t3[0].tanker=bad;
    if(k!=1){
        t3[0].die=0;
    }
    while(1){print_thing();
    //if((cnt++)%5==0)
        for(int i=0;i<5;i++){
            b[i].self_move();
            b2[i].self_move();
            b4[i].self_move();
            b5[i].self_move();
            for(int j=0;j<cntx;j++){
                b3[j][i].self_move();
            }
        }
        for(int i=0;i<5;i++){
            b[i].print();
            b2[i].print();
            b4[i].print();
            b5[i].print();
            for(int j=0;j<cntx;j++){
                b3[j][i].print();
            }
        }
        if((++cnt)%10==0){
            for(int i=0;i<cntx;i++){
                if(!(rand()%40)){
                    t3[i].state=m_dct(rand()%4);
                }
                if(!t3[i].die)t3[i].move();
            }
        }
        for(int i=0;i<cntx;i++){

                t3[i].print_tank();
            }
        char ch=0;
        if(!t2.jd())ch=my_move(t2,b2,b,b5,b4,5);
        t2.print_tank();
        if(rand()%10==0){
            for(int i=0;i<cntx;i++)
                if(!t3[i].jd())fire(t3[i],b3[i],5);
        }
        bool flflflf=0;
        for(int i=0;i<6;i++){
            for(int j=0;j<6;j++){
                if(tanks[i][j]){
                    flflflf=1;
                }
            }
        }
        if(!flflflf&&cntx<20){
            t3[cntx++].die=0;
            tanks[1][1]=&   t3[cntx++];
        }
        sleep(20);
        t2.AI();
        if(cad(t3,20)&&cntx==20){
            t2.kill_tank();
            goto br;
        }
        if(t2.die==1){
            return 0;
        }
        window.present();
    }br:;
    Color w{255,255,255,0};window.drawText("**成功", 70, w, 0, 200);sleep(1000);

    }
    return 0;
}

 

0
蔡辰夕
蔡辰夕
新手启示者
新手启示者

#include"codingtang.h"

 

Window window = createWindow(600, 600);

 

using namespace std;

 

const int shift=25,ctrl=26,esc=27,_left=28,_down=29,_right=30,_up=31;

 

int map1[28][28]={{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,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,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}

 

,{1,1,1,1,2,2,2,1,1,1,1,1,1,3,3,3,3,1,1,1,1,1,1,1,1,0,0,0}

 

,{1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0}

 

,{1,1,1,1,2,2,2,1,1,1,1,1,1,3,3,3,3,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,0,0,0,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,1,1,1,1,1,1,1,1,1,1}

 

,{0,0,0,1,1,1,1,1,1,1,1,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1}

 

,{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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}

 

,{3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,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}

 

,{2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,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,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,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}

 

,{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,0,0,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0}

 

,{3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,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,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,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};



 

int map2[28][28]={{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,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,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},

 

{1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1},

 

{1,1,1,1,1,1,0,0,1,3,3,3,3,3,3,3,3,3,3,3,1,0,0,1,1,1,1,1},

 

{1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,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,0,0,0,0,0,0,0,0,1,1},

 

{1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1},

 

{1,1,1,1,1,1,0,0,1,4,4,4,4,4,4,4,4,4,4,4,1,0,0,1,1,1,1,1},

 

{1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1},

 

{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,4,4,4},

 

{3,3,3,3,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,3,3,3,3,3},

 

{1,1,1,1,3,3,0,0,3,3,1,1,1,1,1,1,1,1,3,3,0,0,3,3,1,1,1,1},

 

{3,3,3,3,0,0,0,0,0,0,3,3,3,3,3,3,3,3,0,0,0,0,0,0,3,3,3,3},

 

{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,1,1},

 

{1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1},

 

{2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2},

 

{3,3,3,3,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,3,3,3,3,3},

 

{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,1,1},

 

{3,3,3,3,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,3,3,3,3,3},

 

{2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2},

 

{1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,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,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,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,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,0}};

 

int map3[28][28]={{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,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,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,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0},

 

{0,2,2,2,2,2,0,4,4,4,4,0,1,1,1,1,0,4,4,4,4,0,2,2,2,2,2,0}

 

,{0,0,2,2,2,0,4,4,4,4,4,4,0,1,1,0,4,4,4,4,4,4,0,2,2,2,0,0},

 

{0,0,0,2,0,4,4,4,4,4,4,4,4,0,0,4,4,4,4,4,4,4,4,0,2,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,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,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,0,0,0,0,0,0},{1,0

 

,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,1},

 

{1,1,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,1,1},

 

{1,1,1,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,1,1,1},

 

{1,1,1,4,0,0,0,0,0,0,4,4,4,4,4,4,4,4,0,0,0,0,0,0,1,1,1,1},

 

{1,1,1,3,4,0,0,0,0,0,0,4,4,4,4,4,4,0,0,0,0,0,0,4,1,1,1,1},

 

{1,1,1,1,3,4,0,0,0,0,0,0,4,4,4,4,0,0,0,0,0,0,4,3,1,1,1,1},

 

{1,1,1,1,1,3,4,0,0,0,0,0,0,4,4,0,0,0,0,0,0,4,3,1,1,1,1,1},

 

{1,1,1,1,1,1,3,4,0,0,0,0,0,0,0,0,0,0,1,0,4,3,1,1,1,1,1,1},

 

{1,1,1,1,1,1,1,3,4,0,0,0,0,0,1,0,0,0,0,4,3,1,1,1,1,1,1,1},

 

{1,1,1,1,1,1,1,1,3,4,0,0,0,0,0,0,0,0,4,3,1,1,1,1,1,1,1,1},

 

{3,3,3,3,3,3,3,3,4,0,0,0,0,0,0,0,0,0,0,4,3,3,3,3,3,3,3,3},

 

{4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,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,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};

 

int map4[28][28]=

 

{{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,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,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,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,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,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,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,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,3,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,3,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,3,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,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,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,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}

 

,{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,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,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,0,0,0}

 

,{1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1}

 

,{1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,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,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}

 

,{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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};

 

int map5[28][28]={{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,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,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},

 

{3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},

 

{2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},

 

{3,3,4,4,4,4,4,4,4,4,3,3,3,3,4,4,4,4,4,4,4,4,3,3,3,3,3,3},

 

{1,1,4,4,1,1,1,1,1,1,1,3,3,1,4,4,4,4,4,4,4,4,1,1,1,1,1,1},

 

{1,1,4,4,1,1,1,1,1,1,1,3,3,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1},

 

{1,1,4,4,1,1,1,1,1,1,1,3,3,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1},

 

{1,1,4,4,4,4,4,4,4,4,1,3,3,1,4,4,4,4,4,4,4,4,1,1,1,1,1,1},

 

{1,1,4,4,4,4,4,4,4,4,1,3,3,1,4,4,4,4,4,4,4,4,1,1,1,1,1,1},

 

{1,1,4,4,1,1,1,1,4,4,1,3,3,1,1,1,1,1,1,1,4,4,1,1,1,1,1,1},

 

{1,1,4,4,1,1,1,1,4,4,1,3,3,1,1,1,1,1,1,1,4,4,1,1,1,1,1,1},

 

{1,1,4,4,1,1,1,1,4,4,1,3,3,1,1,1,1,1,1,1,4,4,1,1,1,1,1,1},

 

{1,1,4,4,4,4,4,4,4,4,1,3,3,1,4,4,4,4,4,4,4,4,1,1,1,1,1,1},

 

{1,1,4,4,4,4,4,4,4,4,1,3,3,1,4,4,4,4,4,4,4,4,1,1,1,1,1,1},

 

{3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},

 

{1,1,1,1,1,1,1,1,1,1,1,3,3,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,4,4,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,4,4,4,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,4,4,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,4,4,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,4,4,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,4,4,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,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,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}};

 

int map6[28][28]={

 

{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,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,0,0,0,0,0,0}

 

,{1,1,1,1,4,0,0,0,4,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0}

 

,{1,1,1,1,4,0,0,0,4,1,1,0,0,0,1,1,1,1,1,4,4,4,4,4,4,0,0,0}

 

,{1,1,0,1,4,0,0,0,4,1,1,0,0,0,1,1,1,1,1,4,0,0,0,0,0,0,0,0}

 

,{1,1,0,1,4,0,0,0,4,1,1,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0}

 

,{1,1,0,1,4,0,0,4,1,1,1,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0}

 

,{1,1,0,1,4,0,0,0,4,1,1,0,0,0,0,0,0,0,0,4,0,0,0,3,4,0,0,0}

 

,{1,1,0,1,4,0,0,0,4,4,4,4,4,4,4,4,0,0,0,4,0,0,0,3,4,0,0,0}

 

,{1,1,0,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,4,0,0,0}

 

,{1,1,0,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,4,0,0,0}

 

,{1,1,0,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,4,0,0,0}

 

,{4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,4,4,4,4,0,0,0,3,4,0,0,0}

 

,{1,1,0,1,1,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,0,0}

 

,{1,1,0,1,1,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,0,0}

 

,{1,1,0,1,1,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,0,0}

 

,{1,1,0,1,1,1,4,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,3,4,0,0,0}

 

,{1,1,0,1,1,1,4,0,0,0,1,2,1,3,3,3,3,3,3,3,3,3,3,3,4,0,0,0}

 

,{1,1,0,4,4,4,4,0,0,0,1,2,1,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,1,2,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,1,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0}

 

,{0,0,0,0,0,0,0,0,0,0,1,2,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,2,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1}

 

,{0,0,0,1,1,1,1,1,1,1,1,1,0,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,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,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}};



 

void fresh(){

 

Event ev;

 

while(pollEvent(&ev))sleep(1);

 

}

 

int getch(){

 

Event ev;



 

if(pollEvent(&ev)){

 

if(ev.type==CDT_KEYDOWN){

 

switch(ev.keyCode){

 

case KEY_UP:

 

fresh();

 

return 31;

 

case KEY_RIGHT:fresh();

 

return 30;

 

case KEY_LEFT:fresh();

 

return 28;

 

case KEY_DOWN:fresh();

 

return 29;

 

case KEY_SPACE:fresh();

 

return 32;

 

case KEY_BACKSPACE:fresh();

 

return 16;

 

case CDT_KEY_1:

 

fresh();

 

return 1;

 

case CDT_KEY_2:

 

fresh();

 

return 2;

 

case CDT_KEY_3:

 

fresh();

 

return 3;

 

case CDT_KEY_4:

 

fresh();

 

return 4;

 

}

 

}

 

}

 

return 0;

 

}

 

string itos(int a){

 

string s;

 

stringstream ss;

 

ss<<a;

 

ss>>s;

 

return s;

 

}



 

int thing[30][30];

 

//int map[30][30];

 

enum bulleter{

 

bad,good

 

};



 

class tank;

 

class bullet;

 

void fire(tank a,bullet* bullets,int len);

 

tank* tanks[30][30];

 

bullet* bullets[30][30];



 

enum m_dct{

 

m_left,m_up,m_right,m_down

 

};

 

int dx[4]{-1,0,1,0},dy[4]{0,-1,0,1};

 

class bullet{

 

public:

 

bool is_father;

 

bulleter bulleter_;

 

int x;

 

int y;

 

m_dct state;

 

bullet(){

 

is_father=1;

 

bulleter_=bad;

 

x=-1;

 

y=-1;

 

state=m_up;

 

}

 

void move(){

 

kill();

 

if(y+dy[state]<0||y+dy[state]>27||x+dx[state]<0||x+

 

dx[state]>27){

 

x=-1;

 

y=-1;

 

}else if(thing[y+dy[state]][x+dx[state]]!=0){

 

if(thing[y+dy[state]][x+dx[state]]==5){

 

if(bulleter_==good){

 

x=-1,y=-1;

 

}else{

 

x+=dx[state];

 

y+=dy[state];

 

}

 

}else{

 

thing[y+dy[state]][x+dx[state]]--;

 

x=-1;

 

y=-1;}

 

}else if(bullets[x+dx[state]][y+dy[state]]){

 

bullet*a=bullets[x+dx[state]][y+dy[state]];

 

a->x=-1;

 

a->y=-1;

 

bullets[x+dx[state]][y+dy[state]]=0;

 

//kill();

 

x=-1;

 

y=-1;

 

}else if(bullets[x][y]){

 

bullet*a=bullets[x][y];

 

a->x=0;

 

a->y=0;

 

bullets[x][y]=0;

 

//kill();

 

x=-1;

 

y=-1;

 

}else{

 

x+=dx[state];

 

y+=dy[state];

 

}

 

print();

 

}

 

virtual void self_move(){

 

move();

 

}

 

virtual void print(){

 

window.drawColor(255,255,255,0);

 

if(x>=0&&y>=0&&x<=27&&y<=27&&thing[y][x]==0){

 

window.fillRect((y+1.25)*20,(x+1.25)*20,10,10);

 

bullets[x][y]=this;

 

}

 

}

 

void kill(){

 

if(x==-1&&y==-1){

 

return;

 

}

 

if(x>=0&&y>=0&&x<=27&&y<=27&&thing[y][x]==0){

 

bullets[x][y]=0;

 

}

 

}

 

};

 

class ice_bullet:public bullet{

 

public:

 

ice_bullet(){

 

is_father=0;

 

bulleter_=bad;

 

x=-1;

 

y=-1;

 

state=m_up;

 

}

 

void print(){

 

window.drawColor(0,0,255,0);

 

if(x>=0&&y>=0&&x<=27&&y<=27&&thing[y][x]==0){

 

window.fillRect((y+1.25)*20,(x+1.25)*20,10,10);

 

bullets[x][y]=this;

 

}

 

}

 

void self_move(){

 

kill();

 

if(y+dy[state]<0||y+dy[state]>27||x+dx[state]<0||x+

 

dx[state]>27){

 

x=-1;

 

y=-1;

 

}else if(thing[y+dy[state]][x+dx[state]]!=0){

 

if(thing[y+dy[state]][x+dx[state]]==5){

 

if(bulleter_==good){

 

x=-1,y=-1;

 

}else{

 

x+=dx[state];

 

y+=dy[state];

 

}

 

}else if(thing[y+dy[state]][x+dx[state]]!=4){

 

thing[y+dy[state]][x+dx[state]]=4;

 

x=-1;

 

y=-1;

 

}else if(thing[y+dy[state]][x+dx[state]]==4){

 

thing[y][x]=4;

 

x=-1;

 

y=-1;

 

}

 

}else if(bullets[x+dx[state]][y+dy[state]]){

 

bullet*a=bullets[x+dx[state]][y+dy[state]];

 

a->x=-1;

 

a->y=-1;

 

bullets[x+dx[state]][y+dy[state]]=0;

 

thing[y+dy[state]][x+dx[state]]=4;

 

//kill();

 

x=-1;

 

y=-1;

 

}else if(bullets[x][y]){

 

bullet*a=bullets[x][y];

 

a->x=0;

 

a->y=0;

 

bullets[x][y]=0;

 

thing[y][x]=4;

 

//kill();

 

x=-1;

 

y=-1;

 

}else{

 

x+=dx[state];

 

y+=dy[state];

 

}

 

print();

 

}

 

};

 

class super_bullet:public bullet{

 

public:

 

super_bullet (){

 

is_father=0;

 

bulleter_=bad;

 

x=-1;

 

y=-1;

 

state=m_up;

 

}

 

void print(){

 

window.drawColor(255,255,0,0);

 

if(x>=0&&y>=0&&x<=27&&y<=27&&thing[y][x]==0){

 

window.fillRect((y+1.25)*20,(x+1.25)*20,10,10);

 

bullets[x][y]=this;

 

}

 

}

 

void self_move(){

 

move();

 

move();

 

}

 

};

 

class boom_bullet:public bullet{

 

public:

 

boom_bullet (){

 

is_father=0;

 

bulleter_=bad;

 

x=-1;

 

y=-1;

 

state=m_up;

 

}

 

void print(){

 

window.drawColor(255,0,0,0);

 

if(x>=0&&y>=0&&x<=27&&y<=27&&thing[y][x]==0){

 

window.fillRect((y+1.25)*20,(x+1.25)*20,10,10);

 

bullets[x][y]=this;

 

}

 

}

 

void self_move(){

 

kill();

 

if(y+dy[state]<0||y+dy[state]>27||x+dx[state]<0||x+

 

dx[state]>27){

 

x=-1;

 

y=-1;

 

}else if(thing[y+dy[state]][x+dx[state]]!=0){

 

if(thing[y+dy[state]][x+dx[state]]==5){

 

if(bulleter_==good){

 

x=-1,y=-1;

 

}else{

 

x+=dx[state];

 

y+=dy[state];

 

}

 

}else if(thing[y+dy[state]][x+dx[state]]>0){

 

thing[y+dy[state]][x+dx[state]]=0;

 

x=-1;

 

y=-1;

 

}

 

}else if(bullets[x+dx[state]][y+dy[state]]){

 

bullet*a=bullets[x+dx[state]][y+dy[state]];

 

a->x=-1;

 

a->y=-1;

 

bullets[x+dx[state]][y+dy[state]]=0;

 

thing[y+dy[state]][x+dx[state]]=0;

 

//kill();

 

x=-1;

 

y=-1;

 

}else if(bullets[x][y]){

 

bullet*a=bullets[x][y];

 

a->x=0;

 

a->y=0;

 

bullets[x][y]=0;

 

thing[y][x]=0;

 

//kill();

 

x=-1;

 

y=-1;

 

}else{

 

x+=dx[state];

 

y+=dy[state];

 

}

 

print();

 

}

 

};

 

bool judge9(int x,int y,bulleter b){

 

if(x<1||y<1||x>26||y>26){

 

return 0;

 

}

 

for(int i=-1;i<2;i++){

 

for(int j=-1;j<2;j++){

 

if(thing[y+i][x+j]>0&&thing[y+i][x+j]!=5){



 

return 0;

 

}else if(thing[y+i][x+j]==5&&b==good){

 

return 0;

 

}

 

}

 

}

 

for(int i=-2;i<3;i++){

 

for(int j=-2;j<3;j++){

 

if(b==bad&&bullets[y+i][x+j]&&bullets[y+i][x+j]->bulleter_==good){

 

return 0;

 

}

 

}

 

}

 

for(int i=-3;i<4;i++){

 

for(int j=-3;j<4;j++){

 

if(tanks[x+i][y+j]){

 

return 0;

 

}

 

}

 

}

 

return 1;

 

}

 

void print_thing(){

 

for(int j=0;j<28;j++) // 从坐标(1,1)点开始打印

 

for(int i=0;i<28;i++)

 

if(thing[i][j]==1)

 

{

 

window.drawColor(0,255,0,0);

 

window.fillRect((i+1)*20,(j+1)*20,20,20);

 

}

 

else if(thing[i][j]==2)

 

{

 

window.drawColor(255,255,0,0);

 

window.fillRect((i+1)*20,(j+1)*20,20,20);

 

}

 

else if(thing[i][j]==3)

 

{

 

window.drawColor(0,0,255,0);

 

window.fillRect((i+1)*20,(j+1)*20,20,20);

 

}

 

else if(thing[i][j]==4)

 

{

 

window.drawColor(255,255,255,0);

 

window.fillRect((i+1)*20,(j+1)*20,20,20);

 

}

 

else if(thing[i][j]==5)

 

{

 

window.drawColor(255,0,0,0);

 

window.fillRect((i+1)*20,(j+1)*20,20,20);

 

}

 

}

 

/////

 

class tank{

 

string _tank_photo[5];

 

public:

 

bulleter tanker;

 

m_dct state;

 

int x;

 

int y;

 

bool die;

 

int sweapon;

 

tank(){

 

sweapon=1;

 

die=0;

 

tanker=bad;

 

x=1;

 

y=1;

 

state=m_down;

 

_tank_photo[0]=" 1111 11";

 

_tank_photo[1]=" 1 1111 1";

 

_tank_photo[2]="11 1111 ";

 

_tank_photo[3]="1 1111 1 ";

 

_tank_photo[4]=" ";

 

}

 

int judge(){

 

int x2=x+dx[state];

 

int y2=y+dy[state];

 

return judge9(x2,y2,tanker);

 

}

 

int judge2(){

 

return judge9(x,y,tanker);

 

}

 

string tank_photo(){

 

return _tank_photo[state];

 

}

 

void _print_tank(int x,int y){

 

if(die){

 

return;

 

}

 

string a=tank_photo();

 

if(die){

 

a=_tank_photo[4];

 

}

 

for(int j=0;j<3;j++){

 

for(int k=0;k<3;k++){

 

if(a[j*3+k]==' '){

 

window.drawColor(0,0,0,0);

 

}else{

 

window.drawColor(255,255,255,0);

 

}

 

window.fillRect((j+x)*20,(k+y)*20,20,20);

 

}

 

}

 

}

 

void print_tank(){

 

if(jd()){

 

return;

 

}

 

_print_tank(y,x);

 

tanks[x][y]=this;

 

}

 

void kill_tank(){/*

 

window.drawColor(0,0,0,0);

 

window.fillRect(x,y,60,60);*/

 

tanks[x][y]=0;

 

}

 

void move();

 

bool jd(){//judge_die

 

if(die){

 

return 1;

 

}

 

for(int i=x-1;i<=x+1;i++){

 

for(int j=y-1;j<=y+1;j++){

 

bullet* a=bullets[i][j];

 

if(a){

 

if(tanker!=a->bulleter_){

 

kill_tank();

 

die=1;

 

a->kill();

 

a->x=-1;

 

a->y=-1;

 

tanks[x][y]=0;

 

x=-1;

 

y=-1;

 

bullets[i][j]=0;

 

return 1;

 

}else{

 

a->x=-1;

 

a->y=-1;

 

bullets[i][j]=0;

 

}

 

}

 

}

 

}

 

return 0;

 

}

 

bool judge_die(){

 

return jd();

 

}

 

void AI(){

 

for(int i=0;i<30;i++){

 

if(tanks[i][y]){

 

if(i>x){

 

tanks[i][y]->state=m_left;

 

}else if(i<x){

 

tanks[i][y]->state=m_right;

 

}

 

}

 

}

 

for(int i=0;i<30;i++){

 

if(tanks[i][y+1]){

 

if(i>x){

 

tanks[i][y+1]->state=m_left;

 

}else if(i<x){

 

tanks[i][y+1]->state=m_right;

 

}

 

}

 

}

 

for(int i=0;i<30;i++){

 

if(tanks[i][y]){

 

if(i>x){

 

tanks[i][y-1]->state=m_left;

 

}else if(i<x){

 

tanks[i][y-1]->state=m_right;

 

}

 

}

 

}

 

for(int i=0;i<30;i++){

 

if(tanks[x+1][i]){

 

if(i>y){

 

tanks[x+1][i]->state=m_up;

 

}else if(i<y){

 

tanks[x+1][i]->state=m_down;

 

}

 

}

 

}

 

for(int i=0;i<30;i++){

 

if(tanks[x-1][i]){

 

if(i>y){

 

tanks[x-1][i]->state=m_up;

 

}else if(i<y){

 

tanks[x-1][i]->state=m_down;

 

}

 

}

 

}

 

}

 

};



 

void print_out(){

 

window.drawColor(0,255,0,0);

 

window.fillRect(0,0,600,600);

 

window.drawColor(0,0,0,0);

 

window.fillRect(20,20,560,560);

 

}

 

void fire(tank a,bullet* bullets,int len){

 

int x=a.x+dx[a.state],y=a.y+dy[a.state],pos=0;

 

while(bullets[pos].x!=-1&&pos<len)pos++;

 

if(pos==len){

 

return;

 

}

 

bullets[pos].x=x;

 

bullets[pos].y=y;

 

bullets[pos].state=a.state;

 

bullets[pos].bulleter_=a.tanker;

 

bullet &b=bullets[pos];

 

}

 

void tank::move(){

 

if(jd()){

 

return;

 

}

 

kill_tank();

 

if(judge()){

 

x+=dx[state];

 

y+=dy[state];

 

return;

 

}

 

for(int i=0,j=rand()%4;i<4&&!this->judge();i++,j++){

 

state=m_dct(j%4);

 

}



 

if(judge()){

 

x+=dx[state];

 

y+=dy[state];

 

return;

 

}

 

print_tank();

 

}

 

char my_move(tank& a,bullet* b,bullet* b2,bullet* b3,bullet* b4,int l){



 

//75 l, 72 u,77 r,80 d

 

if(1){

 

char c=getch();

 

switch(c){







 

case _up:{ a.kill_tank();

 

if(!a.judge()){

 

for(int i=-1;i<2;i++){

 

for(int j=-1;j<2;j++){

 

thing[a.y+j][a.x+i]=0;

 

}

 

}

 

}

 

if(a.state!=m_left){

 

a.state=m_left;

 

}else{

 

a.x--;

 

if(!a.judge2()){

 

a.x++;

 

}

 

}

 

break;

 

}

 

case _left:{ a.kill_tank();

 

if(!a.judge()){

 

for(int i=-1;i<2;i++){

 

for(int j=-1;j<2;j++){

 

thing[a.y+j][a.x+i]=0;

 

}

 

}

 

}

 

if(a.state!=m_up){

 

a.state=m_up;

 

}else{

 

a.y--;

 

if(!a.judge2()){

 

a.y++;

 

}

 

}

 

break;

 

}

 

case _down:{ a.kill_tank();



 

if(!a.judge()){

 

for(int i=-1;i<2;i++){

 

for(int j=-1;j<2;j++){

 

thing[a.y+j][a.x+i]=0;

 

}

 

}

 

}

 

if(a.state!=m_right){

 

a.state=m_right;

 

}else{

 

a.x++;

 

if(!a.judge2()){

 

a.x--;

 

}

 

}

 

break;

 

}

 

case _right:{ a.kill_tank();



 

if(!a.judge()){

 

for(int i=-1;i<2;i++){

 

for(int j=-1;j<2;j++){

 

thing[a.y+j][a.x+i]=0;

 

}

 

}

 

}

 

if(a.state!=m_down){

 

a.state=m_down;

 

}else{

 

a.y++;

 

if(!a.judge2()){

 

a.y--;

 

}

 

}

 

break;

 

}



 

case 32:{

 

if(a.sweapon==1)

 

fire(a,b,l);

 

else if(a.sweapon==2)

 

fire(a,b2,l);



 

else if(a.sweapon==4)

 

fire(a,b4,l);



 

else if(a.sweapon==3)

 

fire(a,b3,l);

 

break;

 

}

 

case 1:{

 

a.sweapon=1;

 

break;

 

}case 2:{

 

a.sweapon=2;

 

break;

 

}

 

case 3:{

 

a.sweapon=3;

 

break;

 

}case 4:{

 

a.sweapon=4;

 

break;

 

}

 

}

 

return c;

 

}

 

return 0;

 

}

 

bool cad(tank* tp,int l){

 

for(int i=0;i<l;i++){

 

if(tp[i].die==0){

 

return 0;

 

}

 

}

 

return 1;

 

}/**/



 

int main(){

 

srand(time(0));

 

tank t2,t3[20];

 

int cntx=0;

 

print_out();

 

bullet b2[5],b3[20][5];

 

ice_bullet b[5];

 

boom_bullet b5[5];

 

super_bullet b4[5];

 

for(int k=1;k<7;k++){



 

t2.tanker=good;

 

t2.x=26;

 

t2.y=26;

 

t2.state=m_up;

 

t2.die=0;



 

int cnt=0;

 

cntx=0;



 

switch(k)//判断是第几关,然后载入相应地图

 

{



 

case 2 :

 

{

 

for(int i=0;i<28;i++)

 

for(int j=0;j<28;j++)

 

thing[j][i]=map2[i][j];

 

}break;

 

case 3 :

 

{

 

for(int i=0;i<28;i++)

 

for(int j=0;j<28;j++)

 

thing[j][i]=map3[i][j];

 

}break;

 

case 4 :

 

{

 

for(int i=0;i<28;i++)

 

for(int j=0;j<28;j++)

 

thing[j][i]=map4[i][j];

 

}break;

 

case 5 :

 

{

 

for(int i=0;i<28;i++)

 

for(int j=0;j<28;j++)

 

thing[j][i]=map5[i][j];

 

}break;

 

case 6 :

 

{

 

for(int i=0;i<28;i++)

 

for(int j=0;j<28;j++)

 

thing[j][i]=map6[i][j];

 

}break;

 

case 1 :

 

{

 

for(int i=4;i<24;i++)

 

for(int j=0;j<28;j++)

 

thing[j][i]=map1[i][j];

 

}break;}

 

for(int i=0;i<28;i++){

 

thing[i][4]=5;

 

}

 

for(int i=0;i<20;i++){

 

t3[i].die=1;t3[i].x=1;

 

t3[i].y=1;

 

}

 

//t3[0].die=0;

 

//t3[0].x=2;

 

//t3[0].y=2;

 

//t3[0].tanker=bad;

 

if(k!=1){

 

t3[0].die=0;

 

}

 

while(1){print_thing();

 

//if((cnt++)%5==0)

 

for(int i=0;i<5;i++){

 

b[i].self_move();

 

b2[i].self_move();

 

b4[i].self_move();

 

b5[i].self_move();

 

for(int j=0;j<cntx;j++){

 

b3[j][i].self_move();

 

}

 

}

 

for(int i=0;i<5;i++){

 

b[i].print();

 

b2[i].print();

 

b4[i].print();

 

b5[i].print();

 

for(int j=0;j<cntx;j++){

 

b3[j][i].print();

 

}

 

}

 

if((++cnt)%10==0){

 

for(int i=0;i<cntx;i++){

 

if(!(rand()%40)){

 

t3[i].state=m_dct(rand()%4);

 

}

 

if(!t3[i].die)t3[i].move();

 

}

 

}

 

for(int i=0;i<cntx;i++){



 

t3[i].print_tank();

 

}

 

char ch=0;

 

if(!t2.jd())ch=my_move(t2,b2,b,b5,b4,5);

 

t2.print_tank();

 

if(rand()%10==0){

 

for(int i=0;i<cntx;i++)

 

if(!t3[i].jd())fire(t3[i],b3[i],5);

 

}

 

bool flflflf=0;

 

for(int i=0;i<6;i++){

 

for(int j=0;j<6;j++){

 

if(tanks[i][j]){

 

flflflf=1;

 

}

 

}

 

}

 

if(!flflflf&&cntx<20){

 

t3[cntx++].die=0;

 

tanks[1][1]=& t3[cntx++];

 

}

 

sleep(20);

 

t2.AI();

 

if(cad(t3,20)&&cntx==20){

 

t2.kill_tank();

 

goto br;

 

}

 

if(t2.die==1){

 

return 0;

 

}

 

window.present();

 

}br:;

 

Color w{255,255,255,0};window.drawText("**成功", 70, w, 0, 200);sleep(1000);



 

}

 

return 0;

 

}

很好玩

我要回答