Валерий Алексеевич Жарков

Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 7: Программирование на Visual C# искусственного интеллекта. Издание 2


Скачать книгу

target="_blank" rel="nofollow" href="#_31.jpg"/>

      Рис. 5.1. Прямоугольник, описанный вокруг хлеба.

      Ширина полей между объектом и описанным вокруг объекта прямоугольником должна быть сведена к минимуму, чтобы объект обязательно касался прямоугольника в как можно большем количестве точек и отрезков линий. Если начало прямоугольной системы координат “x, y” находится в верхнем левом углу экрана , то координаты верхней левой точки (bx, by) и нижней правой точки (bx + batWidth, by + batHeight) однозначно определяют данный прямоугольник на экране.

      В среде выполнения .NET Framework (для настольных компьютеров) известна структура Rectangle (из пространства имён System.Drawing), у которой метод-конструктор Rectangle Constructor имеет несколько перегрузок. Наиболее применяемая перегрузка метода-конструктора Rectangle Constructor (которую далее и мы будем часто применять) с параметрами (Int32, Int32, Int32, Int32) структуры Rectangle на главных (в мире программирования) языках приведена в табл. 5.1.

      Таблица 5.1.

      Метод-конструктор Rectangle Constructor (Int32, Int32, Int32, Int32) структуры Rectangle.

      Visual Basic (Declaration)

      Public Sub New ( _

      x As Integer, _

      y As Integer, _

      width As Integer, _

      height As Integer _

      Visual Basic (Usage))

      Dim x As Integer

      Dim y As Integer

      Dim width As Integer

      Dim height As Integer

      Dim instance As New Rectangle(x, y, width, height)

      C#

      public Rectangle (

      int x,

      int y,

      int width,

      int height

      )

      C++

      public:

      Rectangle (

      int x,

      int y,

      int width,

      int height

      )

      J#

      public Rectangle (

      int x,

      int y,

      int width,

      int height

      )

      JScript

      public function Rectangle (

      x : int,

      y : int,

      width : int,

      height : int

      )

      В этом определении метода-конструктора Rectangle Constructor параметры переводятся так:

      x – координата “x” верхнего левого угла прямоугольника;

      y – координата “y” верхнего левого угла прямоугольника;

      width – ширина (по оси “x”) прямоугольника;

      height – высота (по оси “y”) прямоугольника.

      Далее в нашей программе мы сначала объявим прямоугольники, описанные вокруг объектов, как новые переменные, например, так:

      //The rectangle, described around the first object:

      Rectangle cheeseRectangle;

      //The rectangle, described around the second object:

      Rectangle breadRectangle;

      а затем в каком-либо методе создадим (при помощи ключевого слова new) и инициализируем эти объекты-прямоугольники, например, так:

      cheeseRectangle = new Rectangle(cx, cy,

      cheeseImage.Width, cheeseImage.Height);

      breadRectangle = new Rectangle(bx, by,

      breadImage.Width, breadImage.Height);

      5.2. Обнаружение столкновения прямоугольников, описанных вокруг подвижных объектов

      В этой структуре Rectangle (из пространства имён System.Drawing) имеются методы, которые могут обнаруживать пересечения различных перемещающихся прямоугольников. Эти методы определяют, находится ли точка одного прямоугольника внутри другого прямоугольника, и если находится, то программа определяет эту ситуацию и как столкновение этих двух прямоугольников, и как столкновение двух объектов, расположенных внутри