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

Автор: Валерий Алексеевич Жарков
Издательство: Автор
Серия:
Жанр произведения:
Год издания: 2023
isbn:
Скачать книгу
= false;

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

      Microsoft.VisualBasic.Interaction.Beep();

      }

      if (cy <= 0)

      {

      goingDown = true;

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

      Microsoft.VisualBasic.Interaction.Beep();

      }

      }

      Для управления скоростью перемещения объекта воспользуемся каким-либо элементом управления или компонентом, например, наиболее распространённым элементом Button (Кнопка). С панели инструментов Toolbox размещаем на форме две кнопки Button и в панели Propertiesс в свойстве Text для левой кнопки записываем “Быстрее”, а для правой кнопки – “Медленнее”. Отметим, что для этих целей вместо кнопок Button (чтобы не загромождать форму) можно использовать и клавиши клавиатуры по описанной далее методике.

      В режиме редактирования дважды щёлкаем по левой кнопке “Быстрее”.

      Появившийся шаблон метода после записи одной строки (changeSpeed(1);) принимает следующий вид.

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

      private void button1_Click(object sender, EventArgs e)

      {

      changeSpeed(1);

      }

      Аналогично дважды щёлкаем по правой кнопке “Медленнее”. Появившийся шаблон метода после записи одной строки (changeSpeed(-1);) принимает следующий вид.

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

      private void button2_Click(object sender, EventArgs e)

      {

      changeSpeed(-1);

      }

      В режиме выполнения (Build, Build Selection; Debug, Start Without Debugging) мы видим, что на форме Form1 изображение типа встроенного нами рисунка сыра cheese.jpg перемещается в различных направлениях (рис. 4.5 и 4.6), отскакивая от границ экрана, а после выбора кнопок “Быстрее” или “Медленнее” этот объект перемещается соответственно быстрее или медленнее.

      Причём, при каждом соприкосновении объекта с границей экрана мы слышим звуковой сигнал Beep.

      Рис. 4.5. Перемещение объекта. Рис. 4.6. Перемещение объекта.

      4.5. Методика добавления нового объекта в игру

      Теперь, когда программа может отображать кусочек сыра cheese.jpg в динамике, добавляем второй объект игры, который, как ракетка в теннисе отбивает мяч, будет отбивать этот кусочек сыра. В качестве такого большего по размерам объекта выбираем батон белого хлеба (с которым обычно едят сыр).

      Добавляем в проект (из отмеченной выше статьи или из Интернета) файл изображения батона хлеба bread.jpg по стандартной схеме, а именно: в меню Project выбираем Add Existing Item, в этой панели в окне “Files of type” выбираем “All Files”, в центральном окне находим и выделяем имя файла и щёлкаем кнопку Add (или дважды щёлкаем по имени файла). В панели Solution Explorer мы увидим этот файл.

      Теперь этот же файл bread.jpg встраиваем в проект в виде ресурса по разработанной выше схеме, а именно: в панели Solution Explorer выделяем появившееся там имя файла, а в панели Properties (для данного файла) в свойстве Build Action (Действие при построении) вместо заданного по умолчанию значения Content (Содержание) или None выбираем значение Embedded Resource (Встроенный ресурс).

      Объявляем и инициализируем объект breadImage (класса Image) для загрузки в него изображения хлеба и две текущие координаты bx и by верхнего левого угла прямоугольника, описанного вокруг хлеба, в системе координат с началом в верхнем левом углу экрана. А приведённый выше код в теле метода Form1_Paint заменяем на тот, который дан на следующем листинге.

      Листинг 4.9. Метод для рисования изображения.

      //We declare the object of class System.Drawing.Image

      //for the subject:

      Image breadImage; // = null by default.

      //Current abscissa of a subject:

      int bx = 0;

      //Current ordinate of a subject:

      int by = 0;

      private void Form1_Paint(object sender, PaintEventArgs e)

      {

      //We