xuanyu an / Mbed 2 deprecated tankworld

Dependencies:   mbed N5110

Committer:
cbs27
Date:
Mon May 03 08:36:29 2021 +0000
Revision:
0:a9ef8a5c769a
Child:
2:ce24c50fc0a6
,,

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cbs27 0:a9ef8a5c769a 1 #include "mbed.h"
cbs27 0:a9ef8a5c769a 2 #include "N5110.h"
cbs27 0:a9ef8a5c769a 3 #include "main2.h"
cbs27 0:a9ef8a5c769a 4 #include "main.h"
cbs27 0:a9ef8a5c769a 5
cbs27 0:a9ef8a5c769a 6 DigitalIn button_A4(p29);
cbs27 0:a9ef8a5c769a 7 DigitalIn button_B4(p28);
cbs27 0:a9ef8a5c769a 8 DigitalIn button_C4(p27);
cbs27 0:a9ef8a5c769a 9 DigitalIn button_D4(p26);
cbs27 0:a9ef8a5c769a 10 AnalogIn joy_v4(p20);
cbs27 0:a9ef8a5c769a 11 AnalogIn joy_h4(p19);
cbs27 0:a9ef8a5c769a 12 AnalogIn joy_button4(p17); // could be DigitalIn, but use AnalogIn so pot can also be used
cbs27 0:a9ef8a5c769a 13 // JP1 must be in 2/3 position
cbs27 0:a9ef8a5c769a 14 N5110 lcd4(p8,p9,p10,p11,p13,p21);
cbs27 0:a9ef8a5c769a 15
cbs27 0:a9ef8a5c769a 16 const int map[9][11] = {
cbs27 0:a9ef8a5c769a 17 { 0,0,0,0,0,0,0,0,0,0,0},
cbs27 0:a9ef8a5c769a 18 { 0,1,0,2,1,1,1,2,0,1,0},
cbs27 0:a9ef8a5c769a 19 { 0,1,0,2,0,1,0,2,0,1,0},
cbs27 0:a9ef8a5c769a 20 { 0,0,0,0,0,0,0,0,0,0,0},
cbs27 0:a9ef8a5c769a 21 { 2,2,0,1,2,2,2,1,0,2,2},
cbs27 0:a9ef8a5c769a 22 { 0,0,0,0,0,0,0,0,0,0,0},
cbs27 0:a9ef8a5c769a 23 { 0,1,0,2,0,1,0,2,0,1,0},
cbs27 0:a9ef8a5c769a 24 { 0,1,0,2,1,1,1,2,0,1,0},
cbs27 0:a9ef8a5c769a 25 { 0,0,0,0,0,0,0,0,0,0,0},
cbs27 0:a9ef8a5c769a 26 };//9*11⼤⼩的地图,1是墙,2是灌⽊
cbs27 0:a9ef8a5c769a 27 const int wall[5][7] = {
cbs27 0:a9ef8a5c769a 28 { 1,1,1,1,1,1,1},
cbs27 0:a9ef8a5c769a 29 { 1,1,0,0,0,1,1},
cbs27 0:a9ef8a5c769a 30 { 1,1,0,0,0,1,1},
cbs27 0:a9ef8a5c769a 31 { 1,1,0,0,0,1,1},
cbs27 0:a9ef8a5c769a 32 { 1,1,1,1,1,1,1},
cbs27 0:a9ef8a5c769a 33 };//5*7的墙,不可破坏
cbs27 0:a9ef8a5c769a 34 const int bush[5][7] = {
cbs27 0:a9ef8a5c769a 35 { 1,0,1,0,1,0,1},
cbs27 0:a9ef8a5c769a 36 { 0,1,0,1,0,1,0},
cbs27 0:a9ef8a5c769a 37 { 1,0,1,0,1,0,1},
cbs27 0:a9ef8a5c769a 38 { 0,1,0,1,0,1,0},
cbs27 0:a9ef8a5c769a 39 { 1,0,1,0,1,0,1},
cbs27 0:a9ef8a5c769a 40 };//5*7的g灌⽊,可破坏
cbs27 0:a9ef8a5c769a 41 const int destroyed_bush[5][7] = {
cbs27 0:a9ef8a5c769a 42 { 1,0,0,1,0,0,1},
cbs27 0:a9ef8a5c769a 43 { 0,0,1,0,0,1,0},
cbs27 0:a9ef8a5c769a 44 { 0,1,0,0,1,0,0},
cbs27 0:a9ef8a5c769a 45 { 1,0,0,1,0,0,1},
cbs27 0:a9ef8a5c769a 46 { 0,0,1,0,0,1,0},
cbs27 0:a9ef8a5c769a 47 };//被击中的灌⽊
cbs27 0:a9ef8a5c769a 48 const int tank1[4][5][7] =
cbs27 0:a9ef8a5c769a 49 {
cbs27 0:a9ef8a5c769a 50 {
cbs27 0:a9ef8a5c769a 51 { 0,1,0,1,0,1,0},
cbs27 0:a9ef8a5c769a 52 { 0,1,1,1,1,1,0},
cbs27 0:a9ef8a5c769a 53 { 0,1,1,0,1,1,0},
cbs27 0:a9ef8a5c769a 54 { 0,1,1,0,1,1,0},
cbs27 0:a9ef8a5c769a 55 { 0,1,0,0,0,1,0}
cbs27 0:a9ef8a5c769a 56 },
cbs27 0:a9ef8a5c769a 57 {
cbs27 0:a9ef8a5c769a 58 { 0,1,0,0,0,1,0},
cbs27 0:a9ef8a5c769a 59 { 0,1,1,0,1,1,0},
cbs27 0:a9ef8a5c769a 60 { 0,1,1,0,1,1,0},
cbs27 0:a9ef8a5c769a 61 { 0,1,1,1,1,1,0},
cbs27 0:a9ef8a5c769a 62 { 0,1,0,1,0,1,0}
cbs27 0:a9ef8a5c769a 63 },
cbs27 0:a9ef8a5c769a 64 {
cbs27 0:a9ef8a5c769a 65 { 0,1,1,1,1,1,0},
cbs27 0:a9ef8a5c769a 66 { 0,0,1,1,1,0,0},
cbs27 0:a9ef8a5c769a 67 { 0,1,1,0,0,0,0},
cbs27 0:a9ef8a5c769a 68 { 0,0,1,1,1,0,0},
cbs27 0:a9ef8a5c769a 69 { 0,1,1,1,1,1,0}},
cbs27 0:a9ef8a5c769a 70 {
cbs27 0:a9ef8a5c769a 71 { 0,1,1,1,1,1,0},
cbs27 0:a9ef8a5c769a 72 { 0,0,1,1,1,0,0},
cbs27 0:a9ef8a5c769a 73 { 0,0,0,0,1,1,0},
cbs27 0:a9ef8a5c769a 74 { 0,0,1,1,1,0,0},
cbs27 0:a9ef8a5c769a 75 { 0,1,1,1,1,1,0}
cbs27 0:a9ef8a5c769a 76 }
cbs27 0:a9ef8a5c769a 77 };
cbs27 0:a9ef8a5c769a 78 //四个⽅向的坦克1
cbs27 0:a9ef8a5c769a 79 const int tank2[4][5][7] =
cbs27 0:a9ef8a5c769a 80 {
cbs27 0:a9ef8a5c769a 81 {
cbs27 0:a9ef8a5c769a 82 { 0,1,0,1,0,1,0},
cbs27 0:a9ef8a5c769a 83 { 0,1,0,1,0,1,0},
cbs27 0:a9ef8a5c769a 84 { 0,1,1,1,1,1,0},
cbs27 0:a9ef8a5c769a 85 { 0,1,0,0,0,1,0},
cbs27 0:a9ef8a5c769a 86 { 0,1,0,0,0,1,0}
cbs27 0:a9ef8a5c769a 87 },
cbs27 0:a9ef8a5c769a 88 {
cbs27 0:a9ef8a5c769a 89 { 0,1,0,0,0,1,0},
cbs27 0:a9ef8a5c769a 90 { 0,1,0,0,0,1,0},
cbs27 0:a9ef8a5c769a 91 { 0,1,1,1,1,1,0},
cbs27 0:a9ef8a5c769a 92 { 0,1,0,1,0,1,0},
cbs27 0:a9ef8a5c769a 93 { 0,1,0,1,0,1,0}
cbs27 0:a9ef8a5c769a 94 },
cbs27 0:a9ef8a5c769a 95 {
cbs27 0:a9ef8a5c769a 96 { 0,1,1,1,1,1,0},
cbs27 0:a9ef8a5c769a 97 { 0,0,0,1,0,0,0},
cbs27 0:a9ef8a5c769a 98 { 0,1,1,1,0,0,0},
cbs27 0:a9ef8a5c769a 99 { 0,0,0,1,0,0,0},
cbs27 0:a9ef8a5c769a 100 { 0,1,1,1,1,1,0}
cbs27 0:a9ef8a5c769a 101 },
cbs27 0:a9ef8a5c769a 102 {
cbs27 0:a9ef8a5c769a 103 { 0,1,1,1,1,1,0},
cbs27 0:a9ef8a5c769a 104 { 0,0,0,1,0,0,0},
cbs27 0:a9ef8a5c769a 105 { 0,0,0,1,1,1,0},
cbs27 0:a9ef8a5c769a 106 { 0,0,0,1,0,0,0},
cbs27 0:a9ef8a5c769a 107 { 0,1,1,1,1,1,0}
cbs27 0:a9ef8a5c769a 108 }
cbs27 0:a9ef8a5c769a 109 };//四个⽅向的坦克2
cbs27 0:a9ef8a5c769a 110 const int tank_exp[5][7] = {
cbs27 0:a9ef8a5c769a 111 { 0,1,0,1,0,1,0},
cbs27 0:a9ef8a5c769a 112 { 0,0,1,0,1,0,0},
cbs27 0:a9ef8a5c769a 113 { 1,1,0,0,0,1,1},
cbs27 0:a9ef8a5c769a 114 { 0,0,1,0,1,0,0},
cbs27 0:a9ef8a5c769a 115 { 0,1,0,1,0,1,0},
cbs27 0:a9ef8a5c769a 116 };//击毁的坦克
cbs27 0:a9ef8a5c769a 117 const int heart[5][7] = {
cbs27 0:a9ef8a5c769a 118 { 0,1,1,0,1,1,0},
cbs27 0:a9ef8a5c769a 119 { 1,1,1,1,1,1,1},
cbs27 0:a9ef8a5c769a 120 { 0,1,1,1,1,1,0},
cbs27 0:a9ef8a5c769a 121 { 1,0,1,1,1,0,1},
cbs27 0:a9ef8a5c769a 122 { 1,1,0,1,0,1,1},
cbs27 0:a9ef8a5c769a 123 };//⾎量的⼼形
cbs27 0:a9ef8a5c769a 124 const int bullet[5][7] = {
cbs27 0:a9ef8a5c769a 125 { 0,0,0,0,0,0,0},
cbs27 0:a9ef8a5c769a 126 { 0,0,1,1,0,0,0},
cbs27 0:a9ef8a5c769a 127 { 0,0,1,1,0,0,0},
cbs27 0:a9ef8a5c769a 128 { 0,0,0,0,0,0,0},
cbs27 0:a9ef8a5c769a 129 { 0,0,0,0,0,0,0},
cbs27 0:a9ef8a5c769a 130 };//炮弹
cbs27 0:a9ef8a5c769a 131 const int bullet_v=3;//炮弹的速度为坦克三倍
cbs27 0:a9ef8a5c769a 132 const int tank_num=2;//坦克数量
cbs27 0:a9ef8a5c769a 133 const int t_start[2][2] = {{0,5},{8,5}}; //坦克初始坐标
cbs27 0:a9ef8a5c769a 134 void map_scan4(int map_adj[9][11]){//扫描地图函数
cbs27 0:a9ef8a5c769a 135 int x = 0;
cbs27 0:a9ef8a5c769a 136 int y = 0; //地图扫描坐标
cbs27 0:a9ef8a5c769a 137 lcd4.drawRect(0,0,84,1,FILL_BLACK);
cbs27 0:a9ef8a5c769a 138 lcd4.drawRect(0,46,84,2,FILL_BLACK);
cbs27 0:a9ef8a5c769a 139 lcd4.drawRect(0,0,3,48,FILL_BLACK);
cbs27 0:a9ef8a5c769a 140 lcd4.drawRect(80,0,4,48,FILL_BLACK);//边框
cbs27 0:a9ef8a5c769a 141 for (x=0;x<11;x++){
cbs27 0:a9ef8a5c769a 142 for (y=0;y<9;y++){
cbs27 0:a9ef8a5c769a 143 if(map_adj[y][x]==1){
cbs27 0:a9ef8a5c769a 144 lcd4.drawSprite(x*7+3,y*5+1,5,7,(int *)wall);
cbs27 0:a9ef8a5c769a 145 }
cbs27 0:a9ef8a5c769a 146 else if(map_adj[y][x]==2){
cbs27 0:a9ef8a5c769a 147 lcd4.drawSprite(x*7+3,y*5+1,5,7,(int *)bush);
cbs27 0:a9ef8a5c769a 148 }
cbs27 0:a9ef8a5c769a 149 }
cbs27 0:a9ef8a5c769a 150 }
cbs27 0:a9ef8a5c769a 151 }
cbs27 0:a9ef8a5c769a 152 void hp_show4(int hp1,int hp2){//显示⾎量函数
cbs27 0:a9ef8a5c769a 153 int heart_num=0;
cbs27 0:a9ef8a5c769a 154 for (heart_num=0;heart_num<3;heart_num++){
cbs27 0:a9ef8a5c769a 155 if(heart_num<hp1){
cbs27 0:a9ef8a5c769a 156 lcd4.drawSprite(4*7+heart_num*7+3,5*1+1,5,7,(int *)heart);
cbs27 0:a9ef8a5c769a 157 }
cbs27 0:a9ef8a5c769a 158 if(heart_num<hp2){
cbs27 0:a9ef8a5c769a 159 lcd4.drawSprite(4*7+heart_num*7+3,7*5+1,5,7,(int *)heart);
cbs27 0:a9ef8a5c769a 160 }
cbs27 0:a9ef8a5c769a 161 }
cbs27 0:a9ef8a5c769a 162 }
cbs27 0:a9ef8a5c769a 163 void tank_show4(int tank1_state,int tank2_state,int t1[2],int t2[2]){//显示坦克函数
cbs27 0:a9ef8a5c769a 164 lcd4.drawSprite(t1[1]*7+3,t1[0]*5+1,5,7,(int *)tank1[tank1_state]);
cbs27 0:a9ef8a5c769a 165 lcd4.drawSprite(t2[1]*7+3,t2[0]*5+1,5,7,(int *)tank2[tank2_state]);
cbs27 0:a9ef8a5c769a 166 }
cbs27 0:a9ef8a5c769a 167 void init_buttons4();
cbs27 0:a9ef8a5c769a 168
cbs27 0:a9ef8a5c769a 169 void main3()
cbs27 0:a9ef8a5c769a 170 {
cbs27 0:a9ef8a5c769a 171 // need to initialise the lcd first, do this once outside of the loop
cbs27 0:a9ef8a5c769a 172 lcd4.init();
cbs27 0:a9ef8a5c769a 173 int command[2][4]={{0,0,0,0},{0,0,0,0}};//处理后的指令
cbs27 0:a9ef8a5c769a 174 int i = 0;
cbs27 0:a9ef8a5c769a 175 int j = 0; //地图复制计数
cbs27 0:a9ef8a5c769a 176 int ii = 0;
cbs27 0:a9ef8a5c769a 177 int ji = 0;//坦克初始坐标复制计数
cbs27 0:a9ef8a5c769a 178 int n = 0; //炮弹刷新计数
cbs27 0:a9ef8a5c769a 179 int shoot = 0;//开⽕计数
cbs27 0:a9ef8a5c769a 180 int t[tank_num][2]; //坦克坐标
cbs27 0:a9ef8a5c769a 181 int b[tank_num][3][2]; //炮弹坐标
cbs27 0:a9ef8a5c769a 182 int bullet_cont=0;//发射炮弹计数
cbs27 0:a9ef8a5c769a 183 int bullet_direct[tank_num][3];//炮弹的⽅向
cbs27 0:a9ef8a5c769a 184 int bullet_val[tank_num][3];//炮弹是否被阻挡
cbs27 0:a9ef8a5c769a 185 int tank_state[tank_num]={0,0}; //坦克的f⽅向
cbs27 0:a9ef8a5c769a 186 int hp[tank_num] ={3,3}; //坦克⾎量
cbs27 0:a9ef8a5c769a 187 int tank_count;//坦克单位的计数
cbs27 0:a9ef8a5c769a 188 int map_adj[9][11];
cbs27 0:a9ef8a5c769a 189 for (i=0;i<11;i++){
cbs27 0:a9ef8a5c769a 190 for (j=0;j<9;j++){
cbs27 0:a9ef8a5c769a 191 map_adj[j][i]=map[j][i];
cbs27 0:a9ef8a5c769a 192 }
cbs27 0:a9ef8a5c769a 193 }//复制地图
cbs27 0:a9ef8a5c769a 194 for (ii=0;ii<2;ii++){
cbs27 0:a9ef8a5c769a 195 for (ji=0;ji<2;ji++){
cbs27 0:a9ef8a5c769a 196 t[ji][ii]=t_start[ji][ii];
cbs27 0:a9ef8a5c769a 197 }
cbs27 0:a9ef8a5c769a 198 } //复制指令
cbs27 0:a9ef8a5c769a 199 //welcome();
cbs27 0:a9ef8a5c769a 200 while(1) {
cbs27 0:a9ef8a5c769a 201 lcd4.clear();
cbs27 0:a9ef8a5c769a 202 map_scan4(map_adj);//地图显示
cbs27 0:a9ef8a5c769a 203 hp_show4(hp[0],hp[1]);//⾎量显示
cbs27 0:a9ef8a5c769a 204 tank_show4(tank_state[0],tank_state[1],t[0],t[1]);//坦克显示
cbs27 0:a9ef8a5c769a 205 if(shoot==0){
cbs27 0:a9ef8a5c769a 206 command[0][3] = button_A4.read();
cbs27 0:a9ef8a5c769a 207 command[0][0] = button_B4.read();
cbs27 0:a9ef8a5c769a 208 command[0][2] = button_C4.read();
cbs27 0:a9ef8a5c769a 209 command[0][1] = button_D4.read(); //复制指令
cbs27 0:a9ef8a5c769a 210 if(joy_h4.read()<0.3){
cbs27 0:a9ef8a5c769a 211 command[1][0] = 0;
cbs27 0:a9ef8a5c769a 212 command[1][1] = 0;
cbs27 0:a9ef8a5c769a 213 command[1][2] = 0;
cbs27 0:a9ef8a5c769a 214 command[1][3] = 1;
cbs27 0:a9ef8a5c769a 215 }
cbs27 0:a9ef8a5c769a 216 else if(joy_h4.read()>0.7){
cbs27 0:a9ef8a5c769a 217 command[1][0] = 0;
cbs27 0:a9ef8a5c769a 218 command[1][1] = 0;
cbs27 0:a9ef8a5c769a 219 command[1][2] = 1;
cbs27 0:a9ef8a5c769a 220 command[1][3] = 0;
cbs27 0:a9ef8a5c769a 221 }
cbs27 0:a9ef8a5c769a 222 else if(joy_v4.read()<0.3){
cbs27 0:a9ef8a5c769a 223 command[1][0] = 0;
cbs27 0:a9ef8a5c769a 224 command[1][1] = 1;
cbs27 0:a9ef8a5c769a 225 command[1][2] = 0;
cbs27 0:a9ef8a5c769a 226 command[1][3] = 0;
cbs27 0:a9ef8a5c769a 227 }
cbs27 0:a9ef8a5c769a 228 else if(joy_v4.read()>0.7){
cbs27 0:a9ef8a5c769a 229 command[1][0] = 1;
cbs27 0:a9ef8a5c769a 230 command[1][1] = 0;
cbs27 0:a9ef8a5c769a 231 command[1][2] = 0;
cbs27 0:a9ef8a5c769a 232 command[1][3] = 0;
cbs27 0:a9ef8a5c769a 233 }
cbs27 0:a9ef8a5c769a 234 else{
cbs27 0:a9ef8a5c769a 235 command[1][0] = 0;
cbs27 0:a9ef8a5c769a 236 command[1][1] = 0;
cbs27 0:a9ef8a5c769a 237 command[1][2] = 0;
cbs27 0:a9ef8a5c769a 238 command[1][3] = 0;
cbs27 0:a9ef8a5c769a 239 }
cbs27 0:a9ef8a5c769a 240 bullet_cont++;
cbs27 0:a9ef8a5c769a 241 if(bullet_cont==3){
cbs27 0:a9ef8a5c769a 242 bullet_cont=0;
cbs27 0:a9ef8a5c769a 243 }
cbs27 0:a9ef8a5c769a 244 /* turn=turn+1;
cbs27 0:a9ef8a5c769a 245 if(turn==15){
cbs27 0:a9ef8a5c769a 246 turn=0;
cbs27 0:a9ef8a5c769a 247 }//各种计数*/
cbs27 0:a9ef8a5c769a 248 for(tank_count=0;tank_count<tank_num;tank_count++) {
cbs27 0:a9ef8a5c769a 249 t[tank_count][0]=t[tank_count][0]-command[tank_count][0]+command[tank_count][1];
cbs27 0:a9ef8a5c769a 250 t[tank_count][1]=t[tank_count][1]-command[tank_count][2]+command[tank_count][3];
cbs27 0:a9ef8a5c769a 251 //指令控制坦克
cbs27 0:a9ef8a5c769a 252 if(map_adj[t[tank_count][0]][t[tank_count][1]]!=0||t[tank_count][1]<0||t[tank_count][1]>10||
cbs27 0:a9ef8a5c769a 253 t[tank_count][0]<0||t[tank_count][0]>8){
cbs27 0:a9ef8a5c769a 254 t[tank_count][0]=t[tank_count][0]+command[tank_count][0]-command[tank_count][1];
cbs27 0:a9ef8a5c769a 255 t[tank_count][1]=t[tank_count][1]+command[tank_count][2]-command[tank_count][3];
cbs27 0:a9ef8a5c769a 256 }//障碍物判断,前⽅有障碍物时指令⽆效
cbs27 0:a9ef8a5c769a 257 if(command[tank_count][0]||command[tank_count][1]||command[tank_count][2]||
cbs27 0:a9ef8a5c769a 258 command[tank_count][3]){
cbs27 0:a9ef8a5c769a 259 tank_state[tank_count]=command[tank_count][1]*1+command[tank_count]
cbs27 0:a9ef8a5c769a 260 [2]*2+command[tank_count][3]*3;
cbs27 0:a9ef8a5c769a 261 } //坦克⽅向计算
cbs27 0:a9ef8a5c769a 262 bullet_direct[tank_count][bullet_cont]=tank_state[tank_count];
cbs27 0:a9ef8a5c769a 263 if (joy_button4.read()==0 && tank_count ==1 ){
cbs27 0:a9ef8a5c769a 264 //pot_val = pot0.read();
cbs27 0:a9ef8a5c769a 265 b[tank_count][bullet_cont][0]=t[tank_count][0];
cbs27 0:a9ef8a5c769a 266 b[tank_count][bullet_cont][1]=t[tank_count][1];}
cbs27 0:a9ef8a5c769a 267 bullet_val[tank_count][bullet_cont]=1; //坦克发射炮弹技炮弹坐标⽅向计算
cbs27 0:a9ef8a5c769a 268 }
cbs27 0:a9ef8a5c769a 269 }
cbs27 0:a9ef8a5c769a 270 for(tank_count=0;tank_count<tank_num;tank_count++) {//游戏⾥坦克依次进⾏运算
cbs27 0:a9ef8a5c769a 271 for(n=0;n<bullet_v;n++){//炮弹⽐坦克快三倍运算也快三倍
cbs27 0:a9ef8a5c769a 272 b[tank_count][n][0]=b[tank_count][n][0]+(!(bullet_direct[tank_count]
cbs27 0:a9ef8a5c769a 273 [n]>>1))*(-1+2*(bullet_direct[tank_count][n]%2));
cbs27 0:a9ef8a5c769a 274 b[tank_count][n][1]=b[tank_count][n][1]+(bullet_direct[tank_count]
cbs27 0:a9ef8a5c769a 275 [n]>>1)*(-1+2*(bullet_direct[tank_count][n]%2));//炮弹坐标刷新
cbs27 0:a9ef8a5c769a 276 if(b[tank_count][n][1]>=0&&b[tank_count][n][1]<=10&&b[tank_count][n]
cbs27 0:a9ef8a5c769a 277 [0]>=0&&b[tank_count][n][0]<=8&&bullet_val[tank_count][n]==1){
cbs27 0:a9ef8a5c769a 278 //炮弹有效且未出界
cbs27 0:a9ef8a5c769a 279 if(b[tank_count][n][1]==t[!tank_count][1]&&b[tank_count][n][0]==t[!tank_count][0]){//炮弹击杀坦克的情况
cbs27 0:a9ef8a5c769a 280 lcd4.drawSprite(t[!tank_count][1]*7+3,t[!tank_count][0]*5+1,5,7,(int *)tank_exp);
cbs27 0:a9ef8a5c769a 281 t[!tank_count][0]=t_start[!tank_count][0];
cbs27 0:a9ef8a5c769a 282 t[!tank_count][1]=t_start[!tank_count][1];//坦克回出⽣点
cbs27 0:a9ef8a5c769a 283 hp[!tank_count]=hp[!tank_count]-1;//⾎量减⼀
cbs27 0:a9ef8a5c769a 284 if (hp[!tank_count]==0){
cbs27 0:a9ef8a5c769a 285 lcd4.clear();
cbs27 0:a9ef8a5c769a 286 lcd4.printString("Game Over", 15, 2);
cbs27 0:a9ef8a5c769a 287 lcd4.refresh();
cbs27 0:a9ef8a5c769a 288 while(1){
cbs27 0:a9ef8a5c769a 289 if (button_C4.read() == 1) {
cbs27 0:a9ef8a5c769a 290 main();
cbs27 0:a9ef8a5c769a 291 }
cbs27 0:a9ef8a5c769a 292 }
cbs27 0:a9ef8a5c769a 293 }
cbs27 0:a9ef8a5c769a 294 bullet_val[tank_count][n]=0;//炮弹失效
cbs27 0:a9ef8a5c769a 295 }
cbs27 0:a9ef8a5c769a 296 else if(map_adj[b[tank_count][n][0]][b[tank_count][n][1]]==0){//炮弹⽆障碍⻜⾏的情况
cbs27 0:a9ef8a5c769a 297 lcd4.drawSprite(b[tank_count][n][1]*7+3,b[tank_count][n][0]*5+1,5,7,(int *)bullet);
cbs27 0:a9ef8a5c769a 298 }
cbs27 0:a9ef8a5c769a 299 else if (map_adj[b[tank_count][n][0]][b[tank_count][n][1]]==2){//炮弹打到灌⽊的情况
cbs27 0:a9ef8a5c769a 300 lcd4.drawSprite(b[tank_count][n][1]*7+3,b[tank_count][n][0]*5+1,5,7,(int
cbs27 0:a9ef8a5c769a 301 *)destroyed_bush);
cbs27 0:a9ef8a5c769a 302 map_adj[b[tank_count][n][0]][b[tank_count][n][1]]=0;
cbs27 0:a9ef8a5c769a 303 bullet_val[tank_count][n]=0;
cbs27 0:a9ef8a5c769a 304 }
cbs27 0:a9ef8a5c769a 305 else if (map_adj[b[tank_count][n][0]][b[tank_count][n][1]]==1){//炮弹打墙的情况
cbs27 0:a9ef8a5c769a 306 bullet_val[tank_count][n]=0;
cbs27 0:a9ef8a5c769a 307 }
cbs27 0:a9ef8a5c769a 308 }
cbs27 0:a9ef8a5c769a 309 }
cbs27 0:a9ef8a5c769a 310 }
cbs27 0:a9ef8a5c769a 311 shoot=shoot+1;
cbs27 0:a9ef8a5c769a 312 if(shoot==bullet_v){
cbs27 0:a9ef8a5c769a 313 shoot=0;
cbs27 0:a9ef8a5c769a 314 }
cbs27 0:a9ef8a5c769a 315 lcd4.refresh(); // refresh the LCD so the pixels appear
cbs27 0:a9ef8a5c769a 316 wait_ms(600/bullet_v); // 画⾯按炮弹移动时间刷新,600为坦克移动时间
cbs27 0:a9ef8a5c769a 317 }
cbs27 0:a9ef8a5c769a 318 }
cbs27 0:a9ef8a5c769a 319 void init_buttons4()
cbs27 0:a9ef8a5c769a 320 {
cbs27 0:a9ef8a5c769a 321 // PCB has external pull-down resistors so turn the internal ones off
cbs27 0:a9ef8a5c769a 322 // (default for DigitalIn)
cbs27 0:a9ef8a5c769a 323 button_A4.mode(PullNone);
cbs27 0:a9ef8a5c769a 324 button_B4.mode(PullNone);
cbs27 0:a9ef8a5c769a 325 button_C4.mode(PullNone);
cbs27 0:a9ef8a5c769a 326 button_D4.mode(PullNone);
cbs27 0:a9ef8a5c769a 327 }