Пример #1
0
        static public void TestHitTarget()
        {
            //В двухмерной системе координат есть прямоугольная мишень,
            //расположение и размеры которой заданы координатами противоположных углов.
            //И есть координаты места попадания выстрела.
            //Нужно определить, пришлось ли попадание на мишень или нет.

            Point2D   shotPoint             = Point2D.Construct(-1, 3);
            Point2D   targetVertex1         = Point2D.Construct(-3, 3);
            Point2D   targetVertex2         = Point2D.Construct(1, 5);
            Rectangle rectangleTarget       = Rectangle.Construct(targetVertex1, targetVertex2);
            bool      resultRectangleTarget = HitTarget.ShotInRectangleTarget(rectangleTarget, shotPoint);

            //Круглая мишень

            Circle roundTarget       = Circle.Construct(Point2D.Construct(0, 2), 3);
            bool   resultRoundTarget = HitTarget.ShotInRoundTarget(roundTarget, shotPoint);

            //T-мишень

            Rectangle TTargetPart1  = rectangleTarget;
            Rectangle TTargetPart2  = Rectangle.Construct(Point2D.Construct(0, 0), Point2D.Construct(-2, 3));
            bool      resultTTarget = HitTarget.ShotInRectangleTarget(TTargetPart1, shotPoint) ||
                                      HitTarget.ShotInRectangleTarget(TTargetPart2, shotPoint);

            //Мишень с отверстием

            Circle targetHole           = Circle.Construct(Point2D.Construct(2, 1), 2);
            bool   resultTargetWithHole = HitTarget.ShotInRoundTarget(roundTarget, shotPoint) &&
                                          !HitTarget.ShotInRoundTarget(targetHole, shotPoint);
        }
Пример #2
0
        static public void TestDrawTargets()
        {
            Rectangle rectangleTarget = Rectangle.Construct(Point2D.Construct(20, 5), Point2D.Construct(45, 20));

            Console.WriteLine(DrawRectangleTarget(rectangleTarget));

            Circle roundTarget = Circle.Construct(Point2D.Construct(40, 10), 10);

            Console.WriteLine(DrawRoundTarget(roundTarget));

            Rectangle TTargetPart1 = Rectangle.Construct(Point2D.Construct(50, 0), Point2D.Construct(60, 20));
            Rectangle TTargetPart2 = Rectangle.Construct(Point2D.Construct(30, 15), Point2D.Construct(70, 22));

            Console.WriteLine(DrawTTarget(TTargetPart1, TTargetPart2));

            Circle targetHole = Circle.Construct(Point2D.Construct(40, 10), 10);

            Console.WriteLine(DrawRectangleTargetWithRoundHole(rectangleTarget, targetHole));
        }
Пример #3
0
        static public string DrawRoundTarget(Circle target)
        {
            StringBuilder outString = new StringBuilder();

            for (int i = 25; i > 0; i--)
            {
                for (int j = 0; j < 80; j++)
                {
                    if (HitTarget.ShotInRoundTarget(target, Point2D.Construct(j, i)))
                    {
                        outString.Append("X");
                    }
                    else
                    {
                        outString.Append(" ");
                    }
                }
                outString.Append("\n");
            }
            return(outString.ToString());
        }
Пример #4
0
        static public string DrawTTarget(Rectangle target1, Rectangle target2)
        {
            StringBuilder outString = new StringBuilder();

            for (int i = 25; i > 0; i--)
            {
                for (int j = 0; j < 80; j++)
                {
                    if (HitTarget.ShotInRectangleTarget(target1, Point2D.Construct(j, i)) ||
                        HitTarget.ShotInRectangleTarget(target2, Point2D.Construct(j, i)))
                    {
                        outString.Append("X");
                    }
                    else
                    {
                        outString.Append(" ");
                    }
                }
                outString.Append("\n");
            }
            return(outString.ToString());
        }