
- •Лабораторна робота № 7.
- •Виконання роботи
- •Двічі клацніть на піктограмі першого таймера і запрограмуйте миготіння повідомлення «Обов’язково натисніть кнопку «Далі» після розміщення малюнків!!»:
- •Введіть опис глобальних змінних модуля:
- •Введіть опис глобальних констант програми:
- •Запрограмуйте процедури: створення форми FormCreate, Вставки в неї малюнків SetPicture, виведення інформації про результати тестів Information і кнопку Ex:
- •Аналогічно запрограмуйте перетаскування двох інших малюнків.
- •Створіть ще одну функцію Position1, для перевірки, чи знаходиться малюнок на даній фігурі, чи ні.
- •Запрограмуйте кнопку «Далі» для перевірки правильності розташування малюнків і для формування наступних малюнків
- •Запрограмуйте другий таймер, який забезпечує індикацію часу від 100% до 0%, зворотно пропорційно числу в SpinEditl. Кнопка «Далі» повинна бути активною, якщо всі малюнки розставлені.
- •Збережіть програму в своїй папці.
- •Створіть ехе-файл програми.
- •Закрийте Delphi, запустіть створену програму.
- •Продемонструйте створену програму викладачеві.
- •Оформіть звіт по лабораторній роботі: тема і мета роботи; послідовність виконання роботи, завданняння роздані на лабораторній роботі.
Аналогічно запрограмуйте перетаскування двох інших малюнків.
Створіть ще одну функцію Position1, для перевірки, чи знаходиться малюнок на даній фігурі, чи ні.
function position1(img:Timage;Shape:Tshape):boolean;
begin
//результат функції буде дорівнювати TRUE якщо малюнок буде знаходитись в середені фігури, інакше результат функуції буде FALSE
if ((img.Left>shape.Left)and(img.top>shape.top))and (((img.Left+img.Width)<(shape.Left+shape.Width))and((img.top+img.height)<(shape.top+shape.height))) then
position1:=true
else
position1:=false;
end;
Запрограмуйте кнопку «Далі» для перевірки правильності розташування малюнків і для формування наступних малюнків
procedure Tmain.OkClick(Sender: TObject);
var
check1,check2,check3:integer;
begin
check1:=0;
check2:=0;
check3:=0;
//Аналізуємо розташування малюнків
//Якщо перший мал. знаходиться на першій фігурі то запамятовуємо номер фігури
if position1(im1,P1) then check1:=1;
//Якщо перший мал. знаходиться на другій фігурі то запамятовуємо номер фігури
if position1(im1,P2) then check1:=2;
//Якщо перший мал. знаход. на третій фігурі то запамятовуємо номер фігури
if position1(im1,P3) then check1:=3;
//Аналогічно прораховуємо для двух інших малюнків
if position1(im2,P1) then check2:=1;
if position1(im2,P2) then check2:=2;
if position1(im2,P3) then check2:=3;
if position1(im3,P1) then check3:=1;
if position1(im3,P2) then check3:=2;
if position1(im3,P3) then check3:=3;
//якщо перший малюнок на своєму містці, то результат буде дорівнювати 0
if check1=checkf[n,1] then check1:=0;
//якщо другий малюнок на своєму містці, то результат буде дорівнювати 0
if check2=checkf[n,2] then check2:=0;
//якщо третій малюнок на своєму містці, то результат буде дорівнювати 0
if check3=checkf[n,3] then check3:=0;
//якщо всі малюнки розташовані правильно то добавляємо бал
if (check1=0)and(check2=0)and(check3=0) then
score:=score+1;
//генеруємо нові малюнки
SetPicture;
end;
Запрограмуйте другий таймер, який забезпечує індикацію часу від 100% до 0%, зворотно пропорційно числу в SpinEditl. Кнопка «Далі» повинна бути активною, якщо всі малюнки розставлені.
Якщо користувач не встиг розмістити малюнки за даний йому проміжок часу то він повинен почути звук «Дзінь» і побачити повідомлення про закінчення часу.
procedure Tmain.Timer2Timer(Sender: TObject);
begin
if (position1(im1,P1)or position1(im1,P2)or position1(im1,P3))and
(position1(im2,P1)or position1(im2,P2)or position1(im2,P3))and
(position1(im3,P1)or position1(im3,P2)or position1(im3,P3))
//якщо всі малюнки розставлені , то дозволяємо використання кнопки «Далі »
then ok.Enabled:=true
//в іншому випадку забороняємо
else ok.Enabled:=false;
//вираховуємо данні для індикатора часу
timer2.Interval:=SpinEdit1.Value*100;
progr.Position:=progr.Position-1;
//якщо час закінчився то
if progr.Position=0 then
begin
//зупиняємо таймер
timer2.Enabled:=false;
//запускаємо звук
play.FileName:=dir+'\ding.wav'; play.Open; play.Play;
//виводимо повідомлення
messagedlg('Вибачте, але ви не вклалися у даний вам проміжок часу…'+#13+'Довчіть англійську мову і спробуйте ще раз!',mtInformation,[mbOk],0);
//вимикаємо програму
main.Close;
end;
end;