Аналогично запрограммируйте соответствующие события для перетягивания двух других рисунков.
Создайте еще один метод формы TForm1 - функцию Image1.Shape для проверки расположения рисунка (объекта Image) в середине некоторой геометрической фигуры (объекта Shape).
function TForm1.Image1.Shape (Image: TImage; Shape: TShape): Boolean; Begin if (Image.Left >= Shape.Left) and (Image.Left+Image.Width <= Shape.Left+Shape.Width) and (Image.Top >= Shape.Top) and (Image.Top+Image.Height <= Shape.Top+Shape.Height) then Image1.Shape:=True {Рисунок есть в середине фигуры} else Image1.Shape:=False; {Рисунок есть вне фигуры} end;
Функция Image1.Shape является методом класса Form1, поэтому обращение к свойствам любых объектов формы Form1 осуществляется непосредственно с помощью имени этих объектов, например, Image.Top. Объявление функции вставьте в раздел описания формы type Tform1 в секцию деклараций общедоступных процедур после ключевого слова public:
function ImageInShape(Image:TImage; Shape:TShape):Boolean:
11. 3апрограмуйте кнопку "Готово", которая проверяет правильность расположения рисунков в середине фигур:
procedure Tform1.BitBtn1Click(Sender: TObject); var check1,check2,checks:integer; Begin {Где находится первый рисунок?} if ImageInShape(Image1,Shape1) then check1:=1; {B 1-ой фигуре} if ImageInShape(Image1,Shape2) then check1:=2; {Bо 2-ой фигуре} if ImageInShape(Image1,Shape3) then check1:=3; {B 3-ей фигуре} {Где находится второй рисунок?} if ImageInShape(Image2,Shape1) then check2:=1; {В 1-ой фигуре} if ImageInShape(Image2,Shape2) then check2:=2; {Во 2-ой фигуре} if ImageInShape(Image2,Shape3) then check2:=3; {B 3-ей фигуре} {Где находится третий рисунок?} if ImageInShape(Image3,Shape1) then check3:=1; {В 1-ой фигуре} if ImageInShape{Image3,Shape2) then check3:=2; {Во 2-ой фигуре} if ImageInShape(Image3,Shape3) then check3:=3; {B 3-ей фигуре} {Если рисунки расположены правильно} if (check[i,1]=check1) and (check[i,2]=check2) and (check3=check[i,3]) then score:=score+1; {то считаем удачные попытки} SetPicture; {Устанавливаем новые рисунки} end;
12. Запрограммируйте второй таймер, который обеспечивает доступность кнопки "Готово" лишь в случае правильного размещения всех рисунков в отведенных прямоугольниках и изменяет время со скоростью, обратно пропорциональной к числу в SpinEdit1. В случае, когда пользователь не успел расположить рисунки в прямоугольниках и нажать на кнопку "Готово" за отведенное время, подается звук "ДІНГ", попытка не засчитывается, и происходит переход к следующей серии рисунков.
procedure Tform1.Timer2Timer(Sender: TObject); Begin {Задаем скорость движения индикатора } timer2.interval:=SpinEdit1.Value*100; {Если один из рисунков попал в первый прямоугольник} if (ImageInShape(Image1,Snape1) or ImageInShape(Image2,Shape1) or ImageInShape(Image3, Shape1)) and {и один из рисунков попал во второй прямоугольник} (ImageInShape(Image1,Shape2) or ImageInShape(Image2,Shape2) or ImageInShape(Image3,Shape2)) and {и один из рисунков попал в третий прямоугольник} (ImageInShape(Image1,Shape3) or ImageInShape(Image2,Shape3) or ImageInShape(Image3,Shape3)) {то кнопка "Готово" становится доступной:} then BitBtn1.Enabled:=True; Gauge1.progress:=Gauge1.progress-1; {Работает индикатор времени} if gauge1.progress=0 then {Если время исчерпано} Begin MediaPlayer1.FileName:='ding.wav'; MediaPlayer1.Open; MediaPlayer1.Play; {Подаем звук "ДІНГ"} SetPicture; {Меняем серию рисунков} end; end;
Сохраните программу и проект в рабочей папке.
14. Скопируйте музыкальные файлы ding.wav, applause.wav и clap.wav (или другие файлы, которые предложит преподаватель) в свою рабочую папку из папок C:\WINDOWS\MEDIA\Office97 или C:\WINNT\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\ media \ cagcat10 (либо любой другой, предложенной преподавателем).
Запустите программу. Перетягивайте мышью рисунки в середину соответствующих фигур. Закончите работу.
Продемонстрируйте созданную форму преподавателю. Закончите работу.
|