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); }
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)); }
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()); }
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()); }