初级光能
#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;
}
初级光能
#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;
}
新手启示者
#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;
}
很好玩