Главная страница
Навигация по странице:

  • Sender

  • Picture

  • Proportiona

  • AutoSize

  • Timer

  • Shape

  • Порядок выполнения: Создать и сохранить новый проект. Разместить на форме два компонента Image

  • Interval

  • З адание №4

  • ттттт. Практическая работа Работа с интерфейсом среды программирования Delphi. Создание простого проекта. Запуск программ на выполнение


    Скачать 2.63 Mb.
    НазваниеПрактическая работа Работа с интерфейсом среды программирования Delphi. Создание простого проекта. Запуск программ на выполнение
    Анкорттттт
    Дата30.01.2022
    Размер2.63 Mb.
    Формат файлаdoc
    Имя файла0018f8f0-cdfb5c43.doc
    ТипПрактическая работа
    #346059
    страница3 из 16
    1   2   3   4   5   6   7   8   9   ...   16

    Практическая работа № 3 Программирование событий 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 (xy0) and (y

    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

    1. Модифицировать разработанное приложение: добавить еще один «летательный» объект, скорость и направление движения объектов должна быть различна. Программа должна добавлять баллы при попадании в любой из объектов. Оба объекта могут сбрасывать «бомбы»


    Задание №2

    1. Разработать игру «Клавиатурный тренажер», который работает следующим образом:

    2. сверху вниз «падает» буква( метка с одной буквой, код буквы -случайное число от 192 до 223). Если буква «упала», то сверху начинает падать другая буква;

    3. игрок должен нажать соответствующую клавишу на клавиатуре;

    4. программа должна регистрировать количество ошибок (клавиша нажата неверно или буква «упала» и кнопка не была нажата);

    5. если количество ошибок превысит 10, то игрок проиграл.


    Задание №3

    1. Расположить на форме таймер, фигуру «круг» и фигуру «прямоугольник». Разработать приложение, которое работает следующим образом:

    2. прямоугольник выполняет роль лапты, он перемещается влево и вправо при нажатии клавиш.  

    3. круг - это мячик, который постоянно прямолинейно двигается, при столкновении с границами формы или лаптой меняет свое направление на противоположное.


    З адание №4
    Разработать приложение «Колобок», которое должно работать следующим образом:

    • «колобок» постоянно жует (открывает /закрывает рот) и прямолинейно движется;

    • при нажатии клавиш   ↓ ↑ «колобок» меняет направление движения и «смотрит» туда, куда движется.


    Контрольные вопросы

        1. В каких случаях используется таймер? Что определяет свойство Interval?

        2. Как остановить работу таймера?

        3. Как определить код нажатой клавиши?

        4. На какие события реагирует компонент Shape?


    Домашнее задание.

    Выполнить отчет по проделанной работе.

    Содержание отчета.

    1. Задание.

    2. Блок – схема.

    3. Листинг программа.

    4. Интерфейс программы.

    5. Тесты.
    1   2   3   4   5   6   7   8   9   ...   16


    написать администратору сайта