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

Читать онлайн книгу Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 7: Программирование на Visual C# искусственного интеллекта. Издание 2 - Валерий Алексеевич Жарков страница 24

СКАЧАТЬ 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) имеются методы, которые могут обнаруживать пересечения различных перемещающихся прямоугольников. Эти методы определяют, находится ли точка одного прямоугольника внутри другого прямоугольника, и если находится, то программа определяет эту ситуацию и как столкновение этих двух прямоугольников, и как столкновение двух объектов, расположенных внутри этих прямоугольников.

      Когда далее при написании программы мы поставим оператор-точку “.” после какого-либо объекта структуры Rectangle, то увидим подсказку с двумя основными методами Intersect и IntersectsWith (рис. 5.2) для обнаружения пересечения двух прямоугольников.

      

      Рис. 5.2. Подсказка с методами Intersect и IntersectsWith.

      Определение для наиболее применяемого метода IntersectsWith (который далее и мы будем часто применять) с параметром (Rectangle rect) структуры Rectangle на главных (в мире программирования) языках приведено в табл. 5.2.

      Таблица 5.2.

      Определение метода Rectangle.IntersectsWith структуры Rectangle.

      Visual Basic (Declaration)

      Public Function IntersectsWith ( _

      rect As Rectangle _

      ) As Boolean

      Visual Basic (Usage)

      Dim instance As Rectangle

      Dim rect As Rectangle

      Dim returnValue As Boolean

      returnValue = instance.IntersectsWith(rect)

      C#

      public bool IntersectsWith (

      Rectangle rect

      )

      C++

      public:

      bool IntersectsWith (

      Rectangle rect

      )

      J#

      public boolean IntersectsWith (

      Rectangle rect

      )

      JScript

      public function IntersectsWith (

      rect : Rectangle

      ) : Boolean

      Этот метод IntersectsWith обнаруживает пересечение заданного нами первого прямоугольника со вторым прямоугольником, объявленного здесь как параметр (Rectangle rect).

      Если метод определит, что ни одна точка одного прямоугольника не находится внутри другого прямоугольника, то метод возвращает булево значение False.

      А если метод определит, что хотя бы одна точка одного прямоугольника находится внутри другого прямоугольника, то метод IntersectsWith возвращает булево значение True, и это значение применяется для изменения направления движения какого-либо прямоугольника на противоположное (чтобы уйти от дальнейшего пересечения), например, в таком коде:

      //We check the collision of objects:

      if (cheeseRectangle.IntersectsWith(breadRectangle))

      {

      //We change the direction of the movement to opposite:

      goingDown = !goingDown;

      //At the time of collision, we give a sound signal Beep:

      Microsoft.VisualBasic.Interaction.Beep();

      }

      5.3. Код и выполнение программы

      Теперь в проекте, который СКАЧАТЬ