русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

ПРАКТИЧЕСКАЯ РАБОТА № 3


Дата добавления: 2014-11-27; просмотров: 2073; Нарушение авторских прав


 

Тема:Программированиесобытий KeyPress, KeyDown,KeyUp.

Цель работы:Получить навыки создания процедур обработки событий, связанных с клавиатурой. Получить навыки использования объектов Image, Shape и Timer.

Пояснения к работе:

Приложение Delphi реагирует на события – сигнал от мыши, клавиатуры и системные события. Различные объекты могут реагировать на различные совокупности событий. При организации реакции на события можно:

· проигнорировать событие, т.е. не писать процедуру для реакции на это событие;

· перехватить событие, для этого нужно написать текст процедуры – обработчика события.

Имя процедуры - обработчика события состоит из имени объекта, на котором произошло событие и имении события. Все события в Delphi принято именовать с префиксом ‘On’. События различны, но общим для них является параметр Sender – отправитель, он указывает на источник события. Традиционно может быть предусмотрена реакция на 3 вида событий от пользователя: нажатие или отпускание любой из кнопок мыши (MouseUp,MouseDown), перемещение курсора (MouseMove) и нажатие клавиш (KeyUp, KeyDown, KeyPress).

Обработчику события передаются:

Sender источник сообщения;

Shift состояние специальных клавиш и кнопок мыши во время нажатия (отпускания);

Key код нажатой клавиши (для событий KeyUp, KeyDown), символ, соответствующий нажатой буквенно-цифровой клавише (событие KeyPress);

X,Y координаты положения курсора.

Компонент Image обеспечивает вывод на поверхность формы иллюстраций, представленных в bmp, jpg, ico, wmf-форматах.

 

Свойства Image:

Picture иллюстрация, которая отображается в поле компонента;

Width, Height размер компонента. Если размер компонента меньше размера иллюстрации, и значение свойств AutoSize, Strech, Proportional, равно False, то отображается часть иллюстрации;



Proportional признак автоматического масштабировании картинки без искажения. Чтобы масштабирование было выполнено, значение свойства AutoSize должно быть False;

Strechпризнак автоматического масштабировании (сжатия или растяжения) иллюстрации в соответствии с реальным размером компонента. Если размер компонента непропорционален размеру иллюстрации, то она будет искажена.

AutoSizeпризнак автоматического изменения размера компонента в соответствии с реальным размером иллюстрации;

Centerпризнак определяет расположение картинки в поле компонента, если ширина картинки меньше ширины поля компонента. Если значение False, то картинка прижата к правой границе, если True то по центру.

Компонент Timer обеспечивает генерацию последовательности событий OnTimer.

Свойства Timer:

Intervalпериод генерации событияOnTimer, задается в миллисекундах;

Enabledразрешение работы.разрешает (значение true) или запрещает (значение false) генерацию событий OnTimer

 

Компонент Shape предназначен для рисования фигур.

Свойства Shape:

Shape определяет тип фигуры;

Brush определяет стиль и цвет заполнения фигуры;

Penопределяет стиль, цвет и толщину границ фигуры.

 


Постановка задачи:

В верхней части окна приложения непрерывно движется объект «Противник ». В нижней части окна – объект «Охотник», который может перемещаться влево и вправо, а также стрелять в «Противника» вверх пулей. При попадании пули в «Противника» объект «Охотник» увеличивает свои баллы. Цель может быть опасна, т.к. сбрасывает объект «Бомбочки», которые при попадании в охотника уменьшают его баллы.

В начале игры у «Охотника» 10 баллов. Игра заканчивается победой, если «Охотник» удваивает баллы, и поражением, если баллы равны нулю.

Порядок выполнения:

 

  1. Создать и сохранить новый проект.
  2. Разместить на форме два компонента Image (Additional), задайте для них имена, например: Men (охотник), Samolet (цель), и измените свойство Picture для каждого (выбрать графический файл .ico).
  3. Разместить компонент Shape,задать имяPula (пуля).
  4. Установить два таймера (System). Timer1 отвечает за непрерывное движение цели. Timer2за движение объекта пули. Рекомендуемый вид формы приведен на рисунке.
  5. Для объекта Timer1 ввести следующий код:

samolet.Left :=samolet.Left +1;

If samolet.Left >300 Then samolet.Left :=-30;

  1. Проверить работу программы. Самостоятельно отрегулировать скорость движения объекта, изменяя значения свойства Interval для таймера.

 

  1. Для формы выбрать событие OnKeyDown и введите код:

If key=37 then men.Left :=men.Left-10;//влево

If key=39 then men.Left :=men.Left+10;//вправо

 

If key=32 then //нажат пробел

Begin

pula.Visible :=true;

pula.Left:=men.Left ;

pula.Top:=men.Top-pula.Height ;

timer2.interval:=10;

End;

  1. Для объекта Pula изменить свойство Visible на False. Для объекта Timer2 изменить свойства Interval=0
  2. Для объекта Timer2 введите код:

pula.Top:=pula.Top-5;

If pula.top<0 then

Begin

timer2.Interval :=0;

pula.Visible :=false;

End;

  1. Проверить работу программы, отрегулировать скорость движения «пули».
  2. Добавить метку (имя Result) для вывода количества баллов.
  3. В процедуру для Timer2 добавить код (выделен полужирным шрифтом) для проверки на попадание «пули» в «самолет»:

Var

x,y,h,w:integer;//координаты и размеры пули

x0,y0,h0,w0 :integer; //координаты и размеры самолета

begin

pula.Top:=pula.Top-5;

If pula.top<0 then

Begin

timer2.Interval :=0;

pula.Visible :=false;

End;

x:=pula.left; y:=pula.Top;

w:=pula.Width ; h:=pula.Height ;

x0:=samolet.Left ; y0:=samolet.Top;

w0:=samolet.Width ;h0:=samolet.Height ;

if (x+w>x0) and (x<x0+w0) and (y+h>y0) and (y<y0+h0) then

result.Caption :=inttostr(strtoInt(result.Caption)+1) ;

end;

  1. Проверить работы программы. Определить, почему баллы начисляются неверно. Внести изменения в процедуру для того, чтобы за одно попадание добавлялся один балл.
  2. Добавить на форму компонент Shape (имя Bomba, Visible False, измените размер и цвет Brush / Color ) и еще один таймер Timer3(Intarval =10).
  3. Для таймера ввести следующий код:

If Bomba.Visible =False Then

Begin

Bomba.Visible :=True;

Bomba.Left :=Samolet.Left+5 ;

Bomba.Top:=Samolet.Top+5;

End

Else

Begin

Bomba.Top:=Bomba.Top+1;

If Bomba.top>men.Top+30 Then Bomba.Visible :=False;

End ;

  1. Проверить работу программы. Самостоятельно внести изменения в процедуру для того, чтобы баллы уменьшались при попадании в «охотника».
  2. Самостоятельно добавить проверку на окончание игры.
  3. Проект сохранить. Результат показать преподавателю.



<== предыдущая лекция | следующая лекция ==>
Задание №1 | Задание №3


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.162 сек.