Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Практична робота №28
Тема: Створення навчальної програми у середовищі Delphi.
Мета: Навчитися користуватися основними елементами інтерфейсу середовища програмування Delphi для створення, редагування, налагодження та виконання навчальних програм (проектів).
Хід роботи
1. Запускаю середовище візуального програмування Delphi.
Клацаю на піктограмі Delphi (1 раз ЛКМ) або за допомогою каскадного меню:
Start → Programs → Borland Delphi 7 → Delphi 7.
2. Змінюю заголовок форми з „Form1” на „Англійська мова тестування”.
Властивість Caption форми (Form1).
3. Відмовляюсь від усіх системних кнопок форми.
Для цього задаю значення False в усіх позиціях властивості BorderIcons: biSystemMenu, biMinimize, biMaximize, biHelp.
4. Розташовую на формі наступні обєкти: Label1, Label2, Label3, Label4, Timer1, Timer2, MediaPlayer1, Gauge1, SpinEdit1, BitBtn1, BitBtn2, Shape1, Shape2, Shape3, Image1, Image2, Image3 та задаю їх властивості.
Для цього використовую відповідні піктограми (Label, Timer, MediaPlayer, Gauge, BitBtn, SpinEdit, Shape, Image) із сторінок Standard, Additional, System, Samples палітри компонентів Delphi. Задаю наступні значення властивостей цих обєктів: компонент Timer1: Interval 500; компонент Timer2: Interval 100; компонент MediaPlayer1: Visible False; компонент Gauge1: BackColor clInfoBk, Color clBtnFace, Font MS Sans Serif Bold 14 Yellow, ForeColor clGreen, Kind gkHorizontalBar, MaxValue 100, MinValue 0, Progress 100; компонент SpinEdit1: EditorEnabled False, MaxValue 10, MinValue 1, Value 5; компонент BitBtn1: Glyph С: \ Program Files \ Borland \ Delphi \ Images \ Buttons \ *.bmp, Caption „Готово”; компонент BitBtn2: Glyph С: \ Program Files \ Borland \ Delphi \ Images \ Buttons \ *.bmp, Caption „Вихід”; компоненти Shape1, Shape2, Shape3: Brush Color clInfoBk, Shape stRoundRect; компоненти Image1, Image2, Image3: Stretch True; компоненти Label2, Label3, Label4: Font Color Olive, Font Size 16; компонент Label1: Caption „Обовязково натисніть на кнопку Готово після розміщення малюнків !!!”, Font Color Red, Font Size 10.
5. Запрограмовую блимання повідомлення „Обовязково натисніть на кнопку Готово після розміщення малюнків !!!”.
Двічі клацаю на першому таймері (Timer1) і запрограмовую блимання повідомлення так:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Label1.Visible=True then Label1.Visible:=False else Label1.Visible:=True;
end;
6. Вводжу описи глобальних констант та змінних програми.
Для цього перед розділом реалізації implementation додаю такий програмний код:
const k=4;
a : array[1..k, 1..3] of string=(
(car.wmf, money.wmf, bomb.wmf),
(coins.wmf, clock.wmf, tennis.wmf),
(brick.wmf, building.wmf, champagne.wmf),
(dice.wmf, donkey.wmf, door.wmf));
b : array[1..k, 1..3] of string=(
(money, car, bomb), (tennis, clock, coins),
(building, champagne, brick), (dice, door, donkey));
check : array[1..k, 1..3] of integer=((2, 1, 3), (3, 2, 1), (3, 1, 2), (1, 3, 2));
var Form1 : TForm1;
i, score : integer;
shiftX, shiftY : integer;
Лист
1
5.05010201 ПР 4.1 03 28 ТЗ
Зм.
№ докум.
Арк.
Підпис
Дата
Кулик І.Я.
Пер.
Герич А.
Вик.
left1, left2, left3 : integer;
top1, top2, top3 : integer;
7. Зберігаю створену на даний момент форму у своїй папці.
Для цього вибираю команду головного меню File → Save All (Зберегти Все) або натискаю на кнопку Save All панелі інструментів. У першому рядку вікна, яке зявиться (Save Unit1 As) під заголовком Save in: (Зберегти в:), за допомогою випадаючого меню вибираю імя робочого диска, після чого знаходжу і відкриваю свою власну папку. Задаю назву для файлу тексту програми, попередньо знищивши запропоновану компютером назву Unit1.pas, PRGRM28.pas → Save. У наступному вікні Save Project1 As даю назву файлові проекту, стерши запропоновану компютером назву Project1.dpr,PRJCT28.dpr → Save. Файли проекту та тексту програми називаю різними іменами.
8. Запрограмовую процедури: створення форми FormCreate, вставляння у неї малюнків SetPicture, виведення інформації про результат тесту Information та кнопку BitBtn2.
procedure TForm1.FormCreate(Sender: TObject);
begin
i:=0;
score:=0;
left1:=Image1.Left; left2:=Image2.Left; left3:=Image3.Left;
top1:=Image1.Top; top2:=Image2.Top; top3:=Image3.Top;
SetPicture; end;
procedure SetPicture;
begin
Form1.BitBtn1.Enabled:=False;
i:=i+l;
if i > = k+1 then Information
else
begin
Form1.Label2.Caption:=b[i, 1];
Form1.Label3.Caption:=b[i, 2];
Form1.Label4.Caption:=b[i, 3];
Form1.Image1.Picture.LoadFromFile(a[i, 1]);
Form1.Image2. Picture.LoadFromFile(a[i, 2]);
Form1.Image3. Picture.LoadFromFile(a[i, 3]);
Form1.Gauge1.Progress:=Form1.Gauge1.MaxValue;
Form1.Imagel.Left:=left1; Forml.Image2.Left:=left2;
Form1.Image3.Left: =left3; Form1.Imagel.Top:=top1;
Form1.Image2.Top: =top2; Form1.Image3.Topr:=top3;
end; end;
procedure Information;
begin
Form1.Timer1.Enabled:=False;
Forml.Timer2.Enabled:=False;
score:=(score*l00) div k;
if score > 90 then Form1.MediaPlayer1.FileName:=applause.wav;
if (score > 70) and (score < 90) then Form1.MediaPlayer1.FileName:=clap.wav;
Form1.MediaPlayer1.Open;
Form1.MediaPlayer1.Play;
MessageDlg(Bи набрали + IntToStr(score) + балів зі 100, mtInformation, [mbOk], 0);
Form1.Close;
end;
Лист
2
5.05010201 ПР 4.1 03 28 ТЗ
Зм.
№ докум.
Арк.
Підпис
Дата
Кулик І.Я.
Пер.
Герич А.
Вик.
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Information; end;
Процедури Information і SetPicture не є методами класу Form1. Тому зміна властивостей будь-яких обєктів форми відбувається в них шляхом явного зазначення імені форми Form1 перед іменем відповідного обєкта. Декларації процедур Information і SetPicture вставте між описом типу TForm1 і розділом підєднаних модулів uses:
procedure Information;
procedure SetPicture;
9. Забезпечую перетягування першого малюнка (Image1) на формі, запрограмувавши опрацювання таких трьох подій для обєкта Image1: OnMouseDown (якщо натиснути мишу), OnMouseMove (якщо
переміщати мишу) та OnMouseUp (якщо відпустити мишу).
Для заповнення заготовок наведених процедур використовую закладку Events вікна інспектора обєктів першого малюнка.
procedure TForm1.Image1MouseDown(Sender: TObject; Button:
TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Image1.Tag:=l;
shiftY:=Y; shiftX:=X; end;
procedure TForm1.Image1MouseMove(Sender: TObject;
Shift: TShiftState; X,Y: Integer);
begin
if Image1.Tag=l then
begin
Image1.Top:=Image1.Top+YshiftY; Image1.Left:=Image1.Left+XshiftX;
end; end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image1.Tag:=0;
end;
10. Аналогічно запрограмовую події OnMouseDown, OnMouseMove та OnMouseUp для перетягування двох інших малюнків (Image1, Image2).
11. Створюю ще один метод форми Form1 функцію ImageInShape для перевірки розташування малюнка (обєкта Image) всередині деякої геометричної фігури (обєкта Shape).
function TForm1.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 є методом класу Form1, тому звертання до властивостей будь-яких обєктів форми Form1 здійснюється безпосередньо за допомогою імені цих обєктів. Декларацію функції вставляю у розділ опису форми type TForm1 у секцію декларацій загальнодоступних процедур після службового слова public:
function ImageInShape(Image: TImage; Shape: TShape) : Boolean;
12. Запрограмовую кнопку „Готово”, яка перевіряє правильність розташування малюнків всередині фігур.
procedure TForm1.BitBtn1Click(Sender: TObject);
Лист
3
5.05010201 ПР 4.1 03 28 ТЗ
Зм.
№ докум.
Арк.
Підпис
Дата
Кулик І.Я.
Пер.
Герич А.
Вик.
var check1 ,check2, check3 : integer;
begin
if ImageInShape(Image1, Shape1) then check1:=1;
if ImageInShape(Image1, Shape2) then check1:=2;
if ImageInShape(Image1, Shape3) then check1:=3;
if ImageInShape(Image2,Shapel) then check2:=l;
if ImageInShape(Image2,Shape2) then check2:=2;
if ImageInShape(Image2,Shape3) then check2:=3;
if ImageInShape(Image3,Shapel) then check3:=1;
if ImageInShape(Image3,Shape2) then check3:=2;
if ImageInShape(Image3,Shape3) then check3:=3;
if (check[i, l]=check1) and (check[i, 2]=check2) and (check3=check[i, 3])
then score:=score+1;
SetPicture; end;
13. Запрограмовую другий таймер, який забезпечує доступність кнопки „Готово” лише у випадку правильного розташування всіх малюнків у відведених прямокутниках та індукує час зі швидкістю, обернено пропорційною до числа в SpinEdit1.
У випадку, коли користувач не встиг розташувати малюнки у прямокутниках і натиснути на кнопку „Готово” за належний час, подається звуковий сигнал, спроба не зараховується, і відбувається перехід до наступної серії малюнків.
procedure TForml.Timer2Timer(Sender: TObject);
begin
Timer2.Interval:=SpinEdit1.Value*100;
if ( ImageInShape(Image1, Shape1) 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.Progressl;
if Gauge1.Progress=0 then
begin
MediaPlayer1.FileName:=ding.wav; MediaPlayer1.Open;
MediaPlayer1.Play; SetPicture; end; end;
14. Зберігаю виконану на даний момент роботу у своїй папці.
Для цього виконую команду: File → Save All.
15. Копіюю музичні файли ding.wav, applause.wav та clap.wav у свою робочу папку з папки С: \ Windows \ Media \ Office.
16. Копіюю малюнки car.wmf, money.wmf, bomb.wmf, coins.wmf, clock.wmf, tennis.wmf, brick.wmf, building.wmf, champagne.wmf, dice.wmf, donkey.wmf, door.wmf у свою робочу папку з папки С: \ Program Files \ Microsoft Office \ Clipart \ Popular.
17. Запускаю створену програму і досліджую її роботу.
Запустити програму на виконання можна декількома способами: виконати команду Run → Run головного меню; клацнути на кнопці Run панелі інструментів; натиснути на функціональну клавішу F9. Перетягуйте мишею малюнки всередину відповідних фігур.
18. Створюю exe файл програми.
Виконую команду головного меню Project → Build All.
19. Виходжу із середовища Delphi та запускаю створену програму.
Запускаю exe файл з іменем проекту зі своєї власної папки.
20. Демонструю створений проект викладачеві.
Лист
4
5.05010201 ПР 4.1 03 28 ТЗ
Зм.
№ докум.
Арк.
Підпис
Дата
Кулик І.Я.
Пер.
Герич А.
Вик.
21. Закриваю всі відкриті вікна. Завершую роботу.
Висновок: на практичній роботі , я навчитися користуватися основними елементами інтерфейсу середовища програмування Delphi для створення, редагування, налагодження та виконання навчальних програм (проектів).
Лист
5
5.05010201 ПР 4.1 03 28 ТЗ
Зм.
№ докум.
Арк.
Підпис
Дата
Кулик І.Я.
Пер.
Герич А.
Вик.