В этом уроке мы создадим экран проигрыша с возможностью перезапуска игры.
Элементы интерфейса
На экране проигрыша отображаются: надпись о проигрыше и кнопка перезапуска.
Надпись: Добавим объект Label на форму. В свойстве Text укажем «Вы проиграли!». Выберем полужирный шрифт размером около 20 пикселей, красный фон и белый цвет текста. Установим программное имя LabelLose и свойство Visible = false в конструкторе формы.
Кнопка: Добавим объект Button на форму. Установим размер шрифта около 18 пикселей, красный цвет фона, белый цвет текста и свойство FlatStyle = Flat или Popup. Текст кнопки: «Перезапустить». Программное имя: btnRestart. В конструкторе формы установим свойство Visible = false.
Обработка проигрыша и перезапуска
При проигрыше останавливаем таймер и отображаем надпись и кнопку, устанавливая LabelLose.Visible = true и btnRestart.Visible = true.
Обработчик события для кнопки btnRestart:
- Перемещаем машинки в исходные координаты (например, -130, -130 и -400).
- Скрываем надпись и кнопку: LabelLose.Visible = false; btnRestart.Visible = false.
- Запускаем таймер: timer.Enabled = true.
Управление игрой после проигрыша
Чтобы предотвратить управление машинкой после проигрыша и решить потенциальную проблему с потерей отслеживания нажатий клавиш, выполним следующие действия:
- Блокировка управления: Добавим булеву переменную lose. Её значение true после проигрыша и false после перезапуска. В обработчике нажатия клавиш добавим проверку: if (lose) return;. В обработчике проигрыша: lose = true; в обработчике кнопки перезапуска: lose = false.
- KeyPreview: В конструкторе формы установим свойство KeyPreview = true.
Теперь при проигрыше появляется меню перезапуска, а управление машинкой блокируется до перезапуска.