示例#1
0
        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();
            }
        }
示例#2
0
 public PlayerTank(Bitmap pictureTank1, Bitmap pictureTank2, Bitmap pictureBullet, int x, int y, int direction) : base(pictureTank1, pictureTank2, pictureBullet, x, y, direction)
 {
     message = new TankEventArgs();
 }