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

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


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

move an object to the left:

      bx -= xSpeed;

      }

      private void button6_Click(object sender, EventArgs e)

      {

      //We move an object to the right:

      bx += xSpeed;

      }

      private void Form1_MouseMove(object sender, MouseEventArgs e)

      {

      //We determine the coordinates of mouse pointer on form:

      int mouseX = e.X;

      int mouseY = e.Y;

      //We set the coordinates of bread, equal to coordinates

      //of mouse:

      bx = mouseX;

      by = mouseY;

      }

      Для удобства, задаём другие значения начальным координатам хлеба (например, int bx = 150; int by = 200;)

      После запуска программы (Build, Build Selection; Debug, Start Without Debugging) сыр самостоятельно (без нашего участия) перемещается по экрану, отталкиваясь от границы со звуковым сигналом.

      А после нажатий мышью четырёх кнопок Вверх, Вниз, Влево и Вправо мы можем перемещать батон хлеба в соответствующих четырёх направлениях по всему экрану (рис. 4.9).

      На рис. 4.9 видно, что по умолчанию на форме выделена первая кнопка Button (на этой кнопке размещён фокус (Focus) программы), и поэтому данную кнопку мы можем нажать не только мышью, но и клавишей Enter, после чего скорость перемещения сыра возрастёт пропорционально количеству нажатий. Если мы желаем, чтобы по умолчанию была выделена другая, например, вторая кнопка Button, то в каком-либо методе, например, в методе Form1_Paint следует записать известный код (button2.Focus();). В режиме выполнения мы можем перемещать фокус, например, клавишами со стрелками или Tab на любую кнопку на форме, после чего воздействовать на эту кнопку клавишей Enter.

      По второму варианту, мы связали верхний левый угол прямоугольника, описанного вокруг хлеба, с указателем мыши, и теперь в режиме выполнения хлеб следует за управляемым нами указателем мыши.

      Следовательно, мы решили задачу по управлению объектом (в виде батона хлеба) при помощи элементов управления, например, кнопок Button и мыши.

      Аналогично, как для события MouseMove, для управления игрой можно использовать методы-обработчики других событий мыши, которые имеются в панели Properties на вкладке Events для формы Form1 (рис. 4.11).

      Рис. 4.11. События для управления игрой.

      Отметим, что для управления игрой вместо кнопок Button (чтобы не загромождать форму) и мыши можно использовать и клавиши клавиатуры по описанной далее методике.

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

      Таким образом, в этой главе мы разработали такие общие методики:

      добавления объекта в проект;

      анимации объекта;

      проектирования отскока объекта от заданной нами границы, например, экрана;

      управления скоростью перемещения объекта;

      добавления звукового сигнала в ключевые для игры моменты, например, в момент столкновения объекта с границей;

      добавления нового объекта в игру (с использованием общего для всех объектов кода);

      устранения мерцания изображения при помощи двойной буферизации;

      управления направлением перемещения объекта с помощью клавиш.

      Эти методики можно использовать