Книга: Программирование КПК и смартфонов на .NET Compact Framework

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

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

Наша программа должна уметь перемещать батон хлеба таким образом, чтобы игрок мог отбивать кусок сыра, как будто играя им в теннис. Для этой цели игрок будет использовать клавиши навигации на телефоне. Чтобы управлять батоном хлеба, придется использовать события 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, который определяет действия программы в зависимости от нажатой клавиши. Батон хлеба движется с той же скоростью, что и кусочек сыра. На этой стадии при запуске программы пользователь может перемещать батон хлеба по всему экрану, в то время как кусочек сыра по-прежнему самостоятельно двигается по экрану.

Оглавление книги


Генерация: 1.833. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз