Exemplo n.º 1
0
        public void AddCruiser(Point ps, Point pe)
        {
            if (ps.X < 0 || ps.Y < 0 || pe.X < 0 || pe.Y < 0)
            {
                throw new ArgumentOutOfRangeException("Start or end point", "Координаты не могут быть меньше нуля");
            }

            Ship cruiser = new Ship();

            cruiser.Add(ps);
            if (ps.X == pe.X)
            {
                if (Math.Abs(pe.Y - ps.Y) != 2)
                {
                    throw new ArgumentOutOfRangeException("End point", "Длина корабля не равна 3");
                }
                cruiser.Add(new Point(ps.X, ps.Y + (ps.Y < pe.Y ? 1 : -1)));
            }
            else if (ps.Y == pe.Y)
            {
                if (Math.Abs(pe.X - ps.X) != 2)
                {
                    throw new ArgumentOutOfRangeException("End point", "Длина корабля не равна 3");
                }
                cruiser.Add(new Point(ps.X + (ps.X < pe.X ? 1 : -1), ps.Y));
            }
            else
            {
                throw new ArgumentOutOfRangeException("End point", "Точки не лежат на одной прямой");
            }
            cruiser.Add(pe);

            if (IsPositionNotCorrect(cruiser))
            {
                throw new ArgumentOutOfRangeException("End point", "Крейсер находится слишком близко с уже поставленными кораблями");
            }
            Ships.Add(cruiser);
        }
Exemplo n.º 2
0
        public void AddDestroyer(Point ps, Point pe)
        {
            if (ps.X < 0 || ps.Y < 0 || pe.X < 0 || pe.Y < 0)
            {
                throw new ArgumentOutOfRangeException("Start or end point", "Координаты не могут быть меньше нуля");
            }

            if (Len(ps, pe) != 1)
            {
                throw new ArgumentOutOfRangeException("End point", "Длина корабля не равна 2");
            }

            Ship destroyer = new Ship();

            destroyer.Add(ps);
            destroyer.Add(pe);

            if (IsPositionNotCorrect(destroyer))
            {
                throw new ArgumentOutOfRangeException("End point", "Эсминец находится слишком близко с уже поставленными кораблями");
            }
            Ships.Add(destroyer);
        }
Exemplo n.º 3
0
        public void AddSubmarine(Point p)
        {
            if (p.X < 0 || p.Y < 0)
            {
                throw new ArgumentOutOfRangeException("Point", "Координаты не могут быть меньше нуля");
            }

            Ship submarine = new Ship();

            submarine.Add(p);

            if (IsPositionNotCorrect(submarine))
            {
                throw new ArgumentOutOfRangeException("Point", "Субмарина находится слишком близко с уже поставленными кораблями");
            }
            Ships.Add(submarine);
        }
Exemplo n.º 4
0
        public void AddBattleship(Point ps, Point pe)
        {
            if (ps.X < 0 || ps.Y < 0 || pe.X < 0 || pe.Y < 0)
            {
                throw new ArgumentOutOfRangeException("Start or end point", "Координаты не могут быть меньше нуля");
            }

            Ship battleship = new Ship();

            battleship.Add(ps);
            if (ps.X == pe.X)
            {
                if (Math.Abs(pe.Y - ps.Y) != 3)
                {
                    throw new ArgumentOutOfRangeException("End point", "Длина корабля не равна 4");
                }
                battleship.Add(new Point(ps.X, ps.Y + (ps.Y < pe.Y ? 1 : -1)));
                battleship.Add(new Point(ps.X, ps.Y + (ps.Y < pe.Y ? 2 : -2)));
            }
            else if (ps.Y == pe.Y)
            {
                if (Math.Abs(pe.X - ps.X) != 3)
                {
                    throw new ArgumentOutOfRangeException("End point", "Длина корабля не равна 4");
                }
                battleship.Add(new Point(ps.X + (ps.X < pe.X ? 1 : -1), ps.Y));
                battleship.Add(new Point(ps.X + (ps.X < pe.X ? 2 : -2), ps.Y));
            }
            else
            {
                throw new ArgumentOutOfRangeException("End point", "Точки не лежат на одной прямой");
            }

            battleship.Add(pe);
            if (IsPositionNotCorrect(battleship))
            {
                throw new ArgumentOutOfRangeException("End point", "Линкор находится слишком близко с уже поставленными кораблями");
            }
            Ships.Add(battleship);
        }