Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_rab7_D.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
274.94 Кб
Скачать
  1. Аналогічно запрограмуйте перетаскування двох інших малюнків.

  2. Створіть ще одну функцію 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;

  1. Запрограмуйте кнопку «Далі» для перевірки правильності розташування малюнків і для формування наступних малюнків

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;

  1. Запрограмуйте другий таймер, який забезпечує індикацію часу від 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;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]