Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРоект6.rtf
Скачиваний:
29
Добавлен:
11.04.2015
Размер:
2.61 Mб
Скачать

12*.Запрограммируйте второй таймер, обеспечивающий индикацию времени выполнения от 100 до 0% со скоростью, обратно пропорциональной числу в SpinEditl.

Если пользователь не успел расположить рисунки в прямоугольниках и нажать на кнопку "Готово" в заданное время, подается звук "ДИНГ" и открывается информационное окно с сообщением "Попробуйте ещё раз!".

procedure TForml.Timer2Timer(Sender: TObject);

begin

{Задаем скорость движения индикатора} timer2.interval := SpinEditl.value * 100;

{Работает индикатор времени}

gauge1.progress := gauge1.progress - 1;

if gauge1.progress = 0 then {Если время исчерпано}

begin

Timer1.Enabled := False;

Timer2.Enabled := False;

MediaPlayer1.FileName := 'ding.wav';

MediaPlayer1.Open;

MediaPlayer1.Play; {Подаемзвук"ДИНГ"}

MessageDlg('nonpo6yUTe еще раз!', mtInformation,

[mbOk], 0);

Timer1.Enabled := True;

Timer2.Enabled := True;

Gauge1.Progress := 100;

end; end;

12**.Запрограммируйте второй таймер, обеспечивающий доступность кнопки "Готово" лишь в случае правильного размещения всех рисунков в отведенных прямоугольниках и показывающий время со скоростью, обратно пропорциональной числу в SpinEditl.

В случае, если пользователь не успел расположить рисунки в прямоугольниках и нажать на кнопку "Готово" за надлежащее время, подается звук "ДИНГ", попытка не засчитывается, и про-.исходит переход к следующей серии рисунков.

procedureTForml.Timer2Timer(Sender: TObject); begin

{Задаем скорость движения индикатора } timer2.interval := SpinEditl.value'* 100;

{Если один из рисунков находится в первом прямоугольнике} if ( ImageInShape(Imagel,Shapel) or

ImageInShape(Image2,Shapel) or ImageInShape(Image3,Shapel)) and

{u один из рисунков находится во втором прямоугольнике} ( ImageInShape(Imagel,Shape2) or

ImageInShape(Image2,Shape2) or ImageInShape(Image3,Shape2)) and

{u один из рисунков находится в третьем прямоугольнике} ( ImageInShape(Imagel,Shape3) or

ImageInShape(Image2,Shape3) or

ImageInShape(Image3,Shape3)) o кнопка "Готово" становится доступной:} then BitBtnl.Enabled := True; {Работает индикатор времени} gaugel.progress:=gaugel.progress-l; if gaugel.progress = 0 then {Если времяисчерпано}

begin

MediaPlayerl.FileName := 'ding.wav';

MediaPlayer 1. Open;

MediaPlayerl.Play; {Подаем звук "ДИНГ"}

SetPicture; {Меняем серию рисунков}

end; end;

13. Сохраните программу и проект в своей папке.

14. Скопируйте музыкальные файлы ding.wav, applause.wav и clap.wav в свою папку из папок C:\WINDOWS\MEDIA\ Office97 и C:\WINDOWS\MEDIA соответственно.

15**.Скопируйте рисунки car.wmf, money.wmf, bomb.wmf, coins.wmf, clock.wmf, tennis.wmf, brick.wmf, building.wmf, champgne.wmf, dice.wmf, donkey.wmf, door.wmf в свою папку из папки C:\Program Files\Microsoft Office\Clipart\ Popular.

16. Запустите программу. Перетягивайте мышью рисунки на середину соответствующих фигур.

17. Создайте ехе-файл программы и поупражняйтесь с ней.

Контрольные вопросы задания:

Задача 6.1. Обеспечьте возможность перетягивания рисунков лишь левой клавишей мыши (см. пункт 8).

Задача 6.2. Увеличьте вдвое частоту мигания текста "Обязательно нажмите на кнопку "Готово" после размещения рисунков!!".

Задача 6.3. Поменяйте тип (свойство Kind) индикатора состояния на gkPie, gkNeedle и т.п., скорректировав форму и расположение объектов.

Задача 6.4. Замените в программе индикатор состояния типа Gauge на индикатор типа ProgressBar.

Задача 6.5.** Обеспечьте (кроме подсчета баллов) индикацию оценки за тест. Диапазону 100-86 баллов поставьте в соответствие оценку "5", диапазону 78-85 баллов - оценку "4", 51-77 - оценку "3", меньшее 51 балла — оценку "2". Подберите звуковые эффекты для разных оценок.

Задача 6.6. В версии программы, предназначенной для контроля знаний, подберите самую удачную скорость движения индикатора времени и сделайте объект SpinEdit1 недоступным для внесения изменений.

Задача 6.7. В версии программы, предназначенной для контроля знаний, удалите объект SpinEditl и задайте самую удачную скорость движения индикатора времени непосредственно в проекте.

Задача 6.8.** Увеличьте количество серий рисунков и подписей к ним.