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

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

СКАЧАТЬ breadImage.Height);

      //We load the image file of a new object:

      tomatoImage =

      new Bitmap(myAssembly.GetManifestResourceStream(

      myName_of_project + "." + "tomato.gif"));

      //We initialize an array of new objects and rectangles,

      //described around these objects:

      initialiseTomatoes();

      //We place new objects in an upper part of the screen:

      placeTomatoes();

      //We create and initialize a font for record of points:

      messageFont = new Font(FontFamily.GenericSansSerif, 10,

      FontStyle.Regular);

      //We reserve a rectangle on the screen

      //for record of points:

      messageRectangle = new Rectangle(0, 0,

      this.ClientSize.Width, scoreHeight);

      //We set the color of a brush for record of points:

      messageBrush = new SolidBrush(Color.Black);

      //We turn on the timer:

      timer1.Enabled = true;

      } //End of the method Form1_Load.

      И наконец, вместо приведённого выше метода updatePositions записываем следующий метод, дополненный новым кодом для изменения координат, обнаружения столкновений объектов, уничтожения помидоров и подсчёта очков.

      Листинг 5.11. Метод для изменения координат и обнаружения столкновения объектов.

      private void updatePositions()

      {

      if (goingRight)

      {

      cx += xSpeed;

      }

      else

      {

      cx -= xSpeed;

      }

      if ((cx + cheeseImage.Width) >= this.Width)

      {

      goingRight = false;

      //At the time of collision, the Beep signal is given:

      Microsoft.VisualBasic.Interaction.Beep();

      }

      if (cx <= 0)

      {

      goingRight = true;

      //At the time of collision, the Beep signal is given:

      Microsoft.VisualBasic.Interaction.Beep();

      }

      if (goingDown)

      {

      cy += ySpeed;

      }

      else

      {

      cy -= ySpeed;

      }

      //That cheese did not come for the button3.Location.Y:

      if ((cy + cheeseImage.Height) >= button3.Location.Y)

      {

      goingDown = false;

      //At the time of collision, the Beep signal is given:

      Microsoft.VisualBasic.Interaction.Beep();

      }

      if (cy <= 0)

      {

      goingDown = true;

      //At the time of collision, the Beep signal is given:

      Microsoft.VisualBasic.Interaction.Beep();

      }

      //We set to rectangles of coordinate of objects:

      cheeseRectangle.X = cx;

      cheeseRectangle.Y = cy;

      breadRectangle.X = bx;

      breadRectangle.Y = by;

      // check for collisions.

      if (goingDown)

      {

      // only bounce if the cheese is going down

      if (cheeseRectangle.IntersectsWith(breadRectangle))

      {

      //At the time of collision,

      //the Beep signal is given:

      Microsoft.VisualBasic.Interaction.Beep();

      // we have a collision

      bool rightIn = breadRectangle.Contains(

      cheeseRectangle.Right,

      cheeseRectangle.Bottom);

      bool leftIn = breadRectangle.Contains(

      cheeseRectangle.Left,

      cheeseRectangle.Bottom);

      // now deal with the bounce

      if (rightIn & leftIn)

      {

      // bounce up

      goingDown = false;

      }

      else

      {

      // bounce up

      goingDown = false;

      // now sort out horizontal bounce

      if (rightIn)

      {

      goingRight = false;

      }

СКАЧАТЬ