KURSACh.doc

Введение

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

Впервые игра Lines появилась в 1992 году в России. Ее разработали специалисты из компании GAMOS. Игра была создана еще для MS DOS и носила название Color LinesВот ее заставка:

Если приглядеться по внимательнее, то на скриншоте можно прочитать: игру придумал и написал Олег Демин, а графику для игры создали Игорь Ивкин и Геннадий Денисов. Именно благодаря им, тысячи людей во всем мире играют в Lines.

Одной из мер, позволивших поднять коэффициент повторного кода выше 90% и автоматизировать создание крупных программ, стала концепция объектного программирования. Для её реализации появились языки объектно-ориентированного программирования. Одним из таких языков программирования является Object Pascal – язык среды программирования Delphi.

Среда Delphi включает в себя полный набор визуальных инструментов для скоростной разработки приложений (RAD — rapid application development), поддерживающей разработку пользовательского интерфейса и подключение к корпоративным базам данных. VCL — библиотека визуальных компонент, включает в себя стандартные объекты построения пользовательского интерфейса, объекты управления данными, графические объекты, объекты мультимедиа, диалоги и объекты управления файлами, управление DDE и OLE.

Я воспользовалась средой программирования Delphi для написания приложения ОС Windows «Линии». Это несложная игра, доступная для любого человека, обладающего начальными навыками пользования компьютером.

1. Анализ технического задания

1.1 Анализ исходных данных.

Тема курсовой работы: приложение ОС Windows

«Линии».

Заданием к курсовой работе являются:

1.​ Разработка оконного интерфейса программы;

2.​ Разработка программы;

3.​ Программа должна быть разработана на языке высокого уровня в Object Pascal в среде визуально разработки приложений Borland Delphi.

Перед разработкой данной работы необходимо выбрать, как будет осуществляться управление движениями шариков. На мой взгляд, намного проще управлять с помощью компьютерной мыши, так как, если пользоваться только клавиатурой, то появляется путаница в управлении.

Приложение «Линии» должно иметь следующие функции:

1.​ Предоставлять пользователю возможность сохранить свою игру и в дальнейшем её продолжить;

2.​ Иметь наглядную таблицу с результатами, чтобы сравнивать рекорды разных игроков;

3.​ В поле игры осуществлять показ набранных очков и количество уничтоженных линий;

4.​ Выдавать ошибку в случае попытки загрузить несуществующую игру;

Программа курсовой работы должна содержать сведения о выполнившем ее студенте и окно, содержащее описание всех функций, выполняемых «Линиями».

1.2 Выбранные компоненты Delphi:

TForm — форма, представляет собой окно приложения.

Некоторые свойства:

Name – имя объекта;

Caption – заголовок окна;

Left, Top — положение окна по X и Y

Width, Height — размеры окна по X и Y

Color – цвет фона окна;

Некоторые обработчики событий:

OnCreate – действия при создании окна:

OnClose — действия при закрытии окна:

OnPaint – действия при перерисовке окна.

Некоторые методы:

Close – закрыть окно;

Hide – свернуть окно;

Show – показать окно.

TMainMenu помещает главное меню в программу. При помещении TMainMenu на форму это выглядит, как просто иконка. Иконки данного типа называют невидимым (невизуальным) компонентом, поскольку они невидимы во время выполнения программы.

Создание меню включает три шага:

1) Помещение TMainMenu на форму,

2) Вызов Дизайнера Меню через свойство Items в Инспекторе Объектов,

3) Определение пунктов меню в Дизайнере Меню.

TStatusBar необходим для отображения в поле игры количества очков и собранных линий.

TImage отображает графическое изображение на форме. Воспринимает форматы BMP, ICO, WMF.

Компонент ImageList представляет собой набор изображений одинаковых размеров, на которые можно ссылаться по индексам, начинающимся с 0. Теперь рассмотрим основные свойства TimageList:

Height — высота изображений в списке;

Wight — ширина изображений в списке;

AllocBy — Определяет количество изображений, на которое увеличивается список для добавления новых изображений;

Count – Определяет число изображений в списке. Свойство толькр для чтения.

В закладке TDialog находятся компоненты OpenDialog и SaveDialog, которые являются основой почти всех программ. Компонент OpenDialog открывает файл, а SaveDialog сохраняет текущее состояние программы (в привычной для пользователя форме обозначает пункт «Сохранить файл как…»).

2. Разработка алгоритмов.

В данном алгоритме входные данные представляет собой сигналы, поступающие с мыши, а выходные данные – изменение соответствующих параметров в поле игры.

Самое основное действие в алгоритме, как и в самой игре – передвижение шариков и проверка их на упорядоченность.

Алгоритм позволяет сохранять прогресс в игре каждого пользователя и показывать успехи в таблице рекордов.

Кроме того, алгоритм может сохранять игру, и в дальнейшем её открывать.

Процедура обнуляет матрицы в соответствии со значениями переменных m,w,r.

 3.​ Руководство программиста.

Пакет Delphi предназначен для создания больших программ, которые неудобно размещать в одном файле. В связи с этим программа формируется из нескольких файлов. Любая программа в Delphi состоит из файла проекта (файл с расширением dpr) и одного или нескольких модулей (файлы с расширением pas). Каждый из таких файлов описывает программную единицу Object Pascal.

Файл проекта представляет собой программу, написанную на языке Object Pascal и предназначенную для обработки компилятором. Эта программа автоматически создается Delphi.

Модули предназначены для размещения в них фрагментов программ. Текст модуля тоже сформирован Delphi, но программист может изменять его, придавая программе нужную функциональность.

После служебного слова Uses в каждом модуле идет перечисление тех модулей, к которым может обращаться данный модуль в процессе своей работы, что значительно облегчает задачу программиста при написании программы.

Проект данной работы состоит из главной формы, в которой описаны все функции, выполняемые приложением «Линии».

Таблица 1. – Используемые формы и модули.

Название

Описание

Размер

Unit1.pas

Главный модуль

485 Кb

Unit2.pas

Модуль таблицы

2 Kb

Unit3.pas

Модуль рекордов

1Kb

Unit1.dfm

Главная форма

485 Kb

Unit2.dfm

Форма таблицы

2Kb

Unit3.dfm

Форма рекордов

1Kb

Project1.dpr

Файл проекта

1 Kb

Project1.res

Файл ресурсов

20 Kb

Основной частью программы является файл с расширением dpr. При компиляции программы Delphi создает файлы с расширениями pas, dfm и dcu для каждого модуля: pas – файл содержит копию текста из окна кода программы, в файле с расширением dfm хранится описание содержимого окна программы, а в dcu-файле – результат преобразования в машинные инструкции текста из обоих файлов. Файлы dcu создаются компилятором и дают необходимую базу для работы компоновщика, который преобразует их в единый загружаемый файл с расширением exe.

Разрабатываемая мной программа должна предусматривать некорректные действия пользователя и выводить сообщения о них. В Delphi предусмотрены сообщения на такие ошибки пользователя.

Глобальные переменные программы:

x,y,:integer– координаты шарика;

c:integer – цвет шарика;

i,j:integer – вспомогательные координаты;

sc,nl:integer – набранные очки.

Главный модуль содержит следующие программные элементы:

​ Класс формы TForm1.

​ Обработчики событий.

​ procedure Init(m,w,r:boolean) — Инициализация, заполняем массивы нулями

​ procedure CreateSpheres(x,y,c:integer) — Создаем шарик с координатами x,y и цветом c

​ procedure NewSpheres(quantity:integer) — Создаем шарики с случайными позициями

​  procedure ClickSpheres(Sender: TObject) — Щелчок на шарике

​  procedure Wave(x1,y1,x2,y2:integer) — Распространение волны

​  procedure Way(x1,y1,x2,y2:integer) — Нахождение пути от (x1, y1) до (x2, y2)

​  procedure Move(x1,y1,x2,y2:integer) — Движение шарика по найденному пути

​  procedure Pause(milliseconds:integer) — Пауза

​  procedure DestroySpheres(x,y,k,i,j:integer) — Удаление k шариков, где i, j вспомогательные координаты для направления

​  procedure Data(sc,nl:integer) — Очки

​  procedure DestroyLines — Поиск линий

​  procedure Restart — Новая игра

​ Методы:

function EmptyPos(Pole:Desk):integer — Количество пустых позиций (для проверки проигрыша)

function ExitMap(x,y:integer):Boolean — Выход за границы поля

function FindLine(x,y,i,j:integer):integer — Поиск линии с координат x,y

function FindSphere(x,y:integer):TImage — Поиск Image’a с координатами x,y

procedure FormCreate(Sender: TObject); — Обработчик события при создании формы

Листинг программы расположен в приложении А.

4. Руководство пользователя

Назначение программы: программа, разработанная в курсовой работе, предназначена для развлечения и досуга пользователей. Приложение «Линии» обладает простейшими функциями, как движение цветных шариков, сохранение и загрузка игры, наличие таблицы рекордов.

Системные требования:

1)​ ОС Windows XP\Vista.

2)​ Объём оперативной памяти 64Мб

3)​ Свободное место на жёстком диске 1 Мб.

Для запуска программы достаточно скопировать файл с расширением .exe в любую папку, расположенную на жестком диске и запустить его (для деинсталляции достаточно лишь удалить файл расширением .exe с диска).

После запуска программы открывается окно главной формы и в поле игры появляется три шарика разного цвета в случайно выбранных клетках (рисунок Б.1) – можно начинать игру.

Для работы с главным меню:

1.​ Выход из программы осуществляется либо нажатием ALT+X, либо Файл – Выход.(рисунок Б.2)

2.​ Для вызова окна о разработавшем программу студенте (рисунок Б.3) нужно в меню нажать Справка – О программе.

Работа с памятью:

1. Чтобы сохранить текущую игру, нужно на главном меню кликнуть закладку «Игра», а далее в открывшемся списке – «Сохранить игру».

2.​ Чтобы открыть сохранённую ранее игру, находим в той же закладке «Игра» пункт «Загрузить игру».

3.​ Чтобы сбросить текущую игру, и начать заново, кликаем по пункту «Новая игра».

Для вызова таблицы рекордов в меню выбираем соответствующий пункт после чего появится таблица (Рисунок Б4.).

«Линии» выводит сообщения об ошибке при попытке выполнения некорректных действий (рисунок Б.5).

К некорректным действиям относятся:

1. Попытка передвигать шарики, когда не остаётся свободных позиций.

Заключение

В процессе выполнения курсовой работы было разработано приложение ОС Windows «Линии» в среде программирования Borland Delphi.

С помощью разработанной программы можно выполнять простые арифметические и довольно сложные инженерные расчеты: производить вычисления тригонометрических функций, натуральных и десятичных логарифмов, возводить числа в степень, извлекать корни, вести историю вычислений и преобразовывать числа из десятичной системы счисления в двоичную и шестнадцатеричную. При этом сама программа занимает очень мало места на диске, не требует установки и высоких системных требований.

В дальнейшем к калькулятору может быть добавлено выполнение арифметических действий над числами в различных системах счисления.

Список использованных источников

1.​ Фаронов В.В. Delphi. Программирование на языке высокого уровня. – Питер, СПб, 2005г.

2.​ Справочная система среды Delphi.

3.​  Зубов, А. Программирование на Delphi. Трюки и эффекты / А. Зубов. — СПб: Питер, 2005.

4.​  Delphi 7. Наиболее полное руководство / А. Хомоненко, В. Гофман, Е. Мещеряков, В. Никифоров. — СПб: БХВ, 2008.

Приложение А.

(обязательное)

Листинг программы

1.​ Модуль Unit1. Pas

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, Buttons, Menus, ComCtrls;

type Desk=array [0..8,0..8] of integer;

type

TForm1 = class(TForm)

Area: TImage;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

StatusBar1: TStatusBar;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

N11: TMenuItem;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

N7: TMenuItem;

procedure Init(m,w,r:boolean); //Инициализация, заполняем массивы нулями

procedure CreateSpheres(x,y,c:integer); //Создаем шарик с координатами x,y и цветом c

procedure NewSpheres(quantity:integer); //Создем шарики с случайными позициями

procedure ClickSpheres(Sender: TObject); //Щелчок на шарике

procedure Wave(x1,y1,x2,y2:integer); //Распространение волны

procedure Way(x1,y1,x2,y2:integer); //Нахождение пути от (x1, y1) до (x2, y2)

procedure Move(x1,y1,x2,y2:integer); //Движение шарика по найденному пути

procedure Pause(milliseconds:integer); //Пауза

procedure DestroySpheres(x,y,k,i,j:integer);//Удаление k шариков, где i, j вспомогательные координаты для направления

procedure Data(sc,nl:integer); //Очки

procedure DestroyLines; //Поиск линий

procedure Restart; //Новая игра

function EmptyPos(Pole:Desk):integer; //Количество пустых позиций (для проверки проигрыша)

function ExitMap(x,y:integer):boolean; //Выход за границы поля

function FindLine(x,y,i,j:integer):integer; //Поиск линии с координат x,y

function FindSphere(x,y:integer):TImage; //Поиск Image’a с координатами x,y

procedure FormCreate(Sender: TObject);

procedure AreaMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

procedure N6Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N11Click(Sender: TObject);

procedure N7Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

Road,WaveMap,Map:Desk;

clisp:boolean;

xsp,ysp:integer;

numlines,score:integer;

RoadFlag,DestroyFlag:boolean;

implementation

uses Unit2, Unit3;

{$R *.dfm}

procedure TForm1.Init(m,w,r:boolean);

var

x,y:integer;

begin

for y:=0 to 8 do begin

for x:=0 to 8 do begin

if m=true then Map[x,y]:=0;

if w=true then WaveMap[x,y]:=0;

if r=true then Road[x,y]:=0;

end;

end;

end;

procedure TForm1.CreateSpheres(x,y,c:integer);

begin

with TImage.Create(self) do begin

Autosize:=true; TransParent:=true;

Left:=x; Top:=y;

Picture.LoadFromFile(‘Bitmaps\’+inttostr(c)+’.bmp’);

parent:=form1;

Onclick:=ClickSpheres;

end;

end;

procedure TForm1.NewSpheres(quantity:integer);

var

i,c,x,y:integer;

label Return;

begin

Randomize;

if EmptyPos(Map)>3 then begin

for i:=1 to Quantity do begin

Return:

x:=random(9);

y:=random(9);

c:=random(7)+1;

if Map[x,y]=0 then begin

Map[x,y]:=c;

CreateSpheres(x*30,y*30,c);

end else goto Return;

end;

end else begin

showmessage(‘Вы проиграли.’);

Form3.Show;

Restart;

NewSpheres(3);

end;

end;

function TForm1.ExitMap(x,y:integer):boolean;

begin

ExitMap:=false;

if (x>=0) and (x<=8) and (y>=0) and (y<=8) then ExitMap:=true;

end;

procedure TForm1.Wave(x1,y1,x2,y2:integer);

var

x,y,k:integer;

flag:boolean;

begin

flag:=true;

for y:=0 to 8 do begin

for x:=0 to 8 do begin

if Map[x,y]>0 then WaveMap[x,y]:=-1 else WaveMap[x,y]:=0;

end;

end;

k:=1; WaveMap[x1,y1]:=k;

while flag do begin

flag:=false;

for y:=0 to 8 do begin

for x:=0 to 8 do begin

if WaveMap[x,y]=k then begin

if (WaveMap[x-1,y]=0) and (Exitmap(x-1,y)=true) then begin

WaveMap[x-1,y]:=k+1;

flag:=true;

end;

if (WaveMap[x+1,y]=0) and (Exitmap(x+1,y)=true) then begin

WaveMap[x+1,y]:=k+1;

flag:=true;

end;

if (WaveMap[x,y-1]=0) and (Exitmap(x,y-1)=true) then begin

WaveMap[x,y-1]:=k+1;

flag:=true;

end;

if (WaveMap[x,y+1]=0) and (Exitmap(x,y+1)=true) then begin

WaveMap[x,y+1]:=k+1;

flag:=true;

end;

end;

end;

end;

if WaveMap[x2,y2]>0 then flag:=false else k:=k+1;

end;

end;

procedure TForm1.Way(x1,y1,x2,y2:integer);

var

k:integer;

begin

k:=WaveMap[x2,y2];

Road[x2,y2]:=k-WaveMap[x1,y1]+1;

if (ExitMap(x2-1,y2)=true) and (WaveMap[x2-1,y2]=k-1) then Way(x1,y1,x2-1,y2) else

if (ExitMap(x2+1,y2)=true) and (WaveMap[x2+1,y2]=k-1) then Way(x1,y1,x2+1,y2) else

if (ExitMap(x2,y2-1)=true) and (WaveMap[x2,y2-1]=k-1) then Way(x1,y1,x2,y2-1) else

if (ExitMap(x2,y2+1)=true) and (WaveMap[x2,y2+1]=k-1) then Way(x1,y1,x2,y2+1);

end;

function TForm1.FindSphere(x,y:integer):TImage;

var

i:integer;

begin

for i:=0 to ComponentCount-1 do begin

if (Components[i] is TImage) and (Timage(Components[i]).Name<>’Area’) and (Timage(Components[i]).Left=x) and (Timage(Components[i]).top=y) then begin

Result:=Timage(Components[i]);

exit;

end;

end;

end;

procedure TForm1.Move(x1,y1,x2,y2:integer);

var

Image:Timage;

x,y,i:integer;

begin

RoadFlag:=false;

init(false,true,true);

Image:=FindSphere(x1*30,y1*30);

Wave(x1,y1,x2,y2);

if WaveMap[x2,y2]>0 then begin

RoadFlag:=true;

Way(x1,y1,x2,y2);

x:=x1;

y:=y1;

repeat

Pause(50);

if Road[x-1,y]-Road[x,y]=1 then begin

x:=x-1;

end else

if Road[x+1,y]-Road[x,y]=1 then begin

x:=x+1;

end else

if Road[x,y-1]-Road[x,y]=1 then begin

y:=y-1;

end else

if Road[x,y+1]-Road[x,y]=1 then begin

y:=y+1;

end;

Image.Left:=x*30;

Image.Top:=y*30;

until (x=x2) and (y=y2);

Map[x2,y2]:=Map[x1,y1];

Map[x1,y1]:=0;

end;

end;

procedure TForm1.ClickSpheres(Sender: TObject);

begin

clisp:=true;

xsp:=(sender as TImage).Left div 30;

ysp:=(sender as TImage).top div 30;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

score:=0;

numlines:=0;

Init(true,true,true);

NewSpheres(3);

end;

procedure TForm1.Pause(milliseconds:integer);

begin

application.ProcessMessages;

sleep(milliseconds);

end;

procedure TForm1.DestroySpheres(x,y,k,i,j:integer);

var

n,dx,dy:integer;

image:TImage;

begin

n:=0; dx:=x; dy:=y;

while n<>k do begin

image:=FindSphere(dx*30,dy*30); image.Destroy;

application.ProcessMessages;

Map[dx,dy]:=0;

n:=n+1; dx:=dx+i; dy:=dy+j;

end;

Data(k,1);

DestroyFlag:=true;

end;

function TForm1.FindLine(x,y,i,j:integer):integer;

var

dx,dy,k:integer;

begin

dx:=x; dy:=y; k:=0;

while Map[x,y]=Map[dx,dy] do begin

if ExitMap(dx,dy)=true then begin

dx:=dx+i;

dy:=dy+j;

k:=k+1;

end else break;

end;

result:=k;

end;

procedure TForm1.DestroyLines;

var

x,y,k,i,j:integer;

begin

DestroyFlag:=false;

for y:=0 to 8 do begin

for x:=0 to 8 do begin

if Map[x,y]<>0 then begin

if FindLine(x,y,1,0)>3 then DestroySpheres(x,y,FindLine(x,y,1,0),1,0) else

if FindLine(x,y,1,1)>3 then DestroySpheres(x,y,FindLine(x,y,1,1),1,1)else

if FindLine(x,y,0,1)>3 then DestroySpheres(x,y,FindLine(x,y,0,1),0,1) else

if FindLine(x,y,-1,1)>3 then DestroySpheres(x,y,FindLine(x,y,-1,1),-1,1);

end;

end;

end;

end;

function TForm1.EmptyPos(Pole:Desk):integer;

var

x,y,e:integer;

begin

e:=0;

for y:=0 to 8 do begin

for x:=0 to 8 do begin

if Pole[x,y]=0 then e:=e+1;

end;

end;

result:=e;

end;

procedure TForm1.Data(sc,nl:integer);

begin

numlines:=numlines+nl;

score:=score+sc;

Statusbar1.Panels[0].Text:=’Уничтожено линий: ‘+inttostr(numlines);

Statusbar1.Panels[1].Text:=’Очки: ‘+inttostr(score);

end;

procedure TForm1.AreaMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

if clisp=true then begin

clisp:=false;

Move(xsp,ysp,x div 30,y div 30);

if RoadFlag=true then begin

Pause(100);

DestroyLines;

Pause(150);

if DestroyFlag=false then begin

NewSpheres(3);

DestroyLines;

end;

end;

RoadFlag:=false;

end;

end;

procedure TForm1.N6Click(Sender: TObject);

begin

form1.Close;

end;

procedure TForm1.Restart;

var

i:integer;

label Return;

begin

init(true,true,true);

score:=0;

numlines:=0;

Return:

for i:=0 to ComponentCount-1 do begin

if (Components[i] is TImage) and (Timage(Components[i]).Name<>’Area’) then begin

Timage(Components[i]).Destroy;

goto Return;

end;

end;

Statusbar1.Panels[0].Text:=’Уничтожено линий: 0′;

Statusbar1.Panels[1].Text:=’Очки: 0′;

end;

procedure TForm1.N3Click(Sender: TObject);

begin

Restart;

NewSpheres(3);

end;

procedure TForm1.N4Click(Sender: TObject);

var

F:File;

begin

if SaveDialog1.Execute then begin

//if FileExists(SaveDialog1.FileName) then

// if Application.MessageBox(‘Такой файл уже существует. Перезаписать?’,’Вопрос’,mb_YesNo) <> 6 then Exit;

AssignFile(f,SaveDialog1.FileName+’.sav’);

{$I-} ReWrite(f,1); {$I+}

//ReWrite(f);

//WriteLn(F,);

end;

if IOResult <> 0 then begin

Application.MessageBox(‘Ошибка записи файла!’,’Ошибка’,mb_ok);

Exit;

end;

end;

procedure TForm1.N5Click(Sender: TObject);

var

f:File;

s:string;

begin

S:=OpenDialog1.FileName ;

AssignFile(f,s);

{$I-} Reset(f,1); {$I+}

if IOResult <> 0 then begin

Application.MessageBox(‘Ошибка чтения файла или файл отсутствует!’,’Ошибка’,mb_ok);

Exit;

end;

end;

procedure TForm1.N11Click(Sender: TObject);

begin

showmessage(‘Автор программы: Буянов Алексей);

end;

procedure TForm1.N7Click(Sender: TObject);

begin

Form2.Show;

end;

end.

2.Модуль Unit2. Pas

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, jpeg, ExtCtrls;

type

TForm2 = class(TForm)

Image1: TImage;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

uses Unit1, Unit3;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);

begin

close;

end;

procedure TForm2.Button2Click(Sender: TObject);

begin

if application.Messagebox (‘Удалить рекорды?’,’information’,mb_yesno)= id_yes then

begin

Label1.Caption:=‘—‘;

Label2.Caption:=‘—‘;

Label3.Caption:=‘—‘;

Label4.Caption:=‘—‘;

Label5.Caption:=‘—‘;

Label6.Caption:=‘—‘;

end;

end;

end.

3.Модуль Unit3. Pas

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm3 = class(TForm)

Edit1: TEdit;

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

uses Unit1, Unit2;

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);

begin

if strtoint(Form2.Label4.caption)> score then

begin

Form2.label5.Caption:=inttostr(score);

Form2.Label2.Caption:=Edit1.text;

end;

if strtoint (Form2.Label5.Caption)>score then

begin Form2.Label6.Caption:=inttostr(score);

Form2.Label3.Caption:=Form3.Edit1.Text;

end;

Form2.Label1.Caption:=Form3.Edit1.Text;

Form2.Label4.Caption:=inttostr(score);

close;

end;

procedure TForm3.Button2Click(Sender: TObject);

begin

close;

end;

end.