public void Move(Form MainWindow, KeyEventArgs e, TankEventArgs message, List <Box> boxes, List <BaseTank> tanks) { int difference = 1, speed = 1; if (message.isLeft) { RotatePicture(pictureTank1, direction, false, false, true, false); RotatePicture(pictureTank2, direction, false, false, true, false); direction = 0; for (int i = 0; i < boxes.Count; i++) { if (Collisions.check_touch(x - difference, y, boxes[i], MainWindow)) { return; } } int I = 0; for (int i = 0; i < tanks.Count; i++) //находит номер танка в массиве { if (tanks[i].x == x && tanks[i].y == y) { I = i; break; } } for (int i = 0; i < tanks.Count; i++) //проверка столкновения с другими танками { if (I == i) { continue; } if (Collisions.check_touch(x - difference, y, tanks[i].x, tanks[i].y)) { return; } } x -= speed; changePictureFun(); } else if (message.isUp) { RotatePicture(pictureTank1, direction, true, false, false, false); RotatePicture(pictureTank2, direction, true, false, false, false); direction = 2; for (int i = 0; i < boxes.Count; i++) { if (Collisions.check_touch(x, y - difference, boxes[i], MainWindow)) { return; } } int I = 0; for (int i = 0; i < tanks.Count; i++) { if (tanks[i].x == x && tanks[i].y == y) { I = i; break; } } for (int i = 0; i < tanks.Count; i++) { if (I == i) { continue; } if (Collisions.check_touch(x, y - difference, tanks[i].x, tanks[i].y)) { return; } } y -= speed; changePictureFun(); } else if (message.isRight) { RotatePicture(pictureTank1, direction, false, false, false, true); RotatePicture(pictureTank2, direction, false, false, false, true); direction = 1; for (int i = 0; i < boxes.Count; i++) { if (Collisions.check_touch(x + difference, y, boxes[i], MainWindow)) { return; } } int I = 0; for (int i = 0; i < tanks.Count; i++) { if (tanks[i].x == x && tanks[i].y == y) { I = i; break; } } for (int i = 0; i < tanks.Count; i++) { if (I == i) { continue; } if (Collisions.check_touch(x + difference, y, tanks[i].x, tanks[i].y)) { return; } } x += speed; changePictureFun(); } else if (message.isDown) { RotatePicture(pictureTank1, direction, false, true, false, false); RotatePicture(pictureTank2, direction, false, true, false, false); direction = 3; for (int i = 0; i < boxes.Count; i++) { if (Collisions.check_touch(x, y + difference, boxes[i], MainWindow)) { return; } } int I = 0; for (int i = 0; i < tanks.Count; i++) { if (tanks[i].x == x && tanks[i].y == y) { I = i; break; } } for (int i = 0; i < tanks.Count; i++) { if (I == i) { continue; } if (Collisions.check_touch(x, y + difference, tanks[i].x, tanks[i].y)) { return; } } y += speed; changePictureFun(); } }
public PlayerTank(Bitmap pictureTank1, Bitmap pictureTank2, Bitmap pictureBullet, int x, int y, int direction) : base(pictureTank1, pictureTank2, pictureBullet, x, y, direction) { message = new TankEventArgs(); }