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

9. Аналогично запрограммируйте соответствующие события для перетягивания двух других рисунков.

10. Создайте еще один метод формы tForml - функцию ImageInShapeдля проверки расположения рисунка (объекта Image) в середине некоторой геометрической фигуры (объекта Shape).

function TForml.ImageInShape (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

ImageInShape := True (Рисунок в середине фигуры}

else

ImageInShape := False; (Рисунок вне фигуры}

end;

Функция ImageInShape является методом класса Forml, поэтому обращение к свойствам любых объектов формы Forml осуществляется непосредственно с помощью имени этих объектов, например, Image.Top. Декларацию функции вставьте в раздел описания формы type TForml в раздел деклараций общедоступных процедур после служебного слова public:

function ImageInShape(Image: TImageShape: TShape): Boolean;

11*.Запрограммируйте кнопку "Готово", проверяющую правильность расположения рисунков в середине фигур и выводящую информационное окно с сообщением "Правильно!" или "Неправильно!":

procedure TForml.BitBtnlClick(Sender: TObject);

begin

{Останавливаем оба таймера}

Timerl.Enabled := False; {Останавливаем мигания Labell}

{Останавливаем индикатор времени}

Timer2.Enabled := False;

if ImageInShape(Image1,Shape2) and

ImageInShape(Image2,Shape3) and

ImageInShape(Image3 ,Shape1) then begin

{Считываем файл громкого аплодирования}

MediaPlayer1.FileName := 'applause.wav';

MediaPlayer1.Open; {Открываем плеер}

MediaPlayer1.Play; {Воссоздаем звук}

{Открываем окно сообщения "Правильно!"}

MessageDlg('Правильно', mtInformation, [mbOk], 0);

end else begin

MediaPlayer1.FileName := 'ding.wav';

MediaPlayer1.Open;

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

MessageDlg('He правильно!', mtInformation, [mbOk], 0);

{Включаем оба таймера и индикатор времени}

Timerl.Enabled := True; Timer2.Enabled := True; Gaugel.Progress := 100;

end;

end;

11**.Запрограммируйте кнопку "Готово", проверяющую правильность расположения рисунков в середине фигур:

procedure TForml.BitBtnlClick(Sender : Tobject);

var checkl, check2, check3 : integer; begin .

{Где находится первый рисунок?}

{B 1-ой фигуре}

if ImageInShape(Imagel,Shapel) then checkl := 1;

{Bo 2-ой фигуре}

if ImageInShape(Imagel,Shape2) then checkl := 2;

{B З-ей фигуре}

if ImageInShape(Imagel,Shape3) then checkl := 3;

{Где находится второй рисунок?}

{B 1-ой фигуре}

if ImageInShape(Image2,Shapel) then check2 := 1;

{Bo 2-ой фигуре]

if ImageInShape(Image2,Shape2) then check2 := 2;

{B З-ей фигуре}

if ImageInShape(Image2,Shape3) then check2 := 3;

{Где находится третий рисунок?}

{B 1-ой фигуре}

if ImageInShape(Image3,Shapel) then check3 := 1;

{Bo 2-ой фигуре}

if ImageInShape(Image3,Shape2) then check3 := 2;

{B З-ей фигуре}

if ImageInShape(Image3,Shape3) then check3 := 3;

{Если рисунки расположены правильно}

if (check[i, 1] = checkl) and (check[i, 2] = check2)

and (check[i, 3] = check3) then {считаем удачные попытки}

score := score + 1;

SetPicture; {Устанавливаем новые рисунки} end;