Хлеб — всему голова

We use cookies. Read the Privacy and Cookie Policy

Хлеб — всему голова

Наша программа должна уметь перемещать батон хлеба таким образом, чтобы игрок мог отбивать кусок сыра, как будто играя им в теннис. Для этой цели игрок будет использовать клавиши навигации на телефоне. Чтобы управлять батоном хлеба, придется использовать события KeyDown и KeyUp. Событие KeyDown наступает, когда пользователь нажимает на заданную кнопку. Событие KeyUp инициируется при отпускании кнопки.

Необходимо установить флаг, который будет отслеживать нажатия и отпускания клавиш. Когда флаг будет активирован, это будет означать, что пользователь нажал на клавишу, и батон должен двигаться в указанном направлении. Когда пользователь отпустит клавишу, то флаг сбрасывается и объект прекращает движение.

Обработчики событий используют перечисления Keys, показывающие конкретные кнопки навигации. Соответствующий код приведен в листинге 11.15.

Листинг 11.15

/// <summary>

/// Используем keyArgs в качестве флага

/// </summary>

private System.Windows.Forms.KeyEventArgs keyArgs = null;

private void Form1_KeyDown(object sender,

 System.Windows.Forms.KeyEventArgs e) {

 keyArgs = e;

}

private void Form1_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e) {

 keyArgs = null;

}

Когда программа получает вызов события Form1_KeyDown, флаг keyArgs ссылается на класс KeyEventArgs. При наступлении события Form1_KeyUp флаг keyArgs сбрасывается в null, и код нажатых клавиш игнорируется. Теперь надо переписать метод updatePositions, как показано в листинге 11.16.

Листинг 11.16

private void updatePositions() {

 // Код для кусочка сыра остался прежним

 ...

 // Для батона хлеба

 if (keyArgs != null) {

  switch (keyArgs.KeyCode) {

  case Keys.Up:

   by-=ySpeed;

   break;

  case Keys.Down:

   by+=ySpeed;

   break;

  case Keys.Left:

   bx-=xSpeed;

   break;

  case Keys.Right:

   bx+=xSpeed;

   break;

  }

 }

}

В данном коде используется оператор switch, который определяет действия программы в зависимости от нажатой клавиши. Батон хлеба движется с той же скоростью, что и кусочек сыра. На этой стадии при запуске программы пользователь может перемещать батон хлеба по всему экрану, в то время как кусочек сыра по-прежнему самостоятельно двигается по экрану.