- •5. Дважды щелкните на первом таймере и запрограммируйте мигание сообщения «Обязательно нажмите на кнопку «Готово» после размещения рисунков!!» так:
- •6*. Введите описание глобальных переменных программы:
- •6**. Введите описания глобальных констант и переменных программы:
- •7*.Запрограммируйте кнопку BitBtn2 как кнопку закрытия окна командой close.
- •7**.Запрограммируйте процедуры: создания формы FormCreate, вставки в неё рисунков SctPicture, вывод информации о результате теста Information и кнопку BitBtn2:
- •9. Аналогично запрограммируйте соответствующие события для перетягивания двух других рисунков.
- •10. Создайте еще один метод формы tForml - функцию ImageInShapeдля проверки расположения рисунка (объекта Image) в середине некоторой геометрической фигуры (объекта Shape).
- •11*.Запрограммируйте кнопку "Готово", проверяющую правильность расположения рисунков в середине фигур и выводящую информационное окно с сообщением "Правильно!" или "Неправильно!":
- •11**.Запрограммируйте кнопку "Готово", проверяющую правильность расположения рисунков в середине фигур:
- •12*.Запрограммируйте второй таймер, обеспечивающий индикацию времени выполнения от 100 до 0% со скоростью, обратно пропорциональной числу в SpinEditl.
- •13. Сохраните программу и проект в своей папке.
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;