Реферат

Реферат Технология программирования

Работа добавлена на сайт bukvasha.net: 2015-10-28

Поможем написать учебную работу

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

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

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 11.11.2024



Федеральное агентство по образованию
САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙ УНИВЕРСИТЕТ имени академика С.П. КОРОЛЕВА


Факультет заочного обучения


Кафедра динамики полета и систем управления
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовому проекту по предмету

«Технология программирования»
Выполнил студент 9651 группы: Матвеев О. В.

Руководитель проекта: Фадеенков П. В.
Самара 2009

Содержание


Введение. 3

Постановка задачи. 5

1 Анализ. 6

1.1 Объектная декомпозиция. 7

1.2 Описание абстракций. 10

1.3 Структурная схема программного продукта. 11

2 Проектирование. 12

2.1 Логическое проектирование. 13

2.2 Физическое проектирование. 14

3 Эволюция. 15

4 Модификация. 16

Заключение. 17

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

Приложение А. Исходные тексты проекта. 19

Модуль cards.pas. 20

Модуль player.pas. 22

Модуль game.pas. 24

Модуль main.pas. 27


Введение


На заре компьютерной эры очень трудно было написать большую программу, потому что возможности компьютеров были ограничены. Ограничения проистекали из объема оперативной памяти, скорости считывания информации с вторичных носителей и быстродействия процессоров. В 60-70-е годы прошлого века эффективность применения компьютеров резко возросла, цены на них стали падать, а возможности ЭВМ увеличились. В результате стало выгодно, да и необходимо создавать все больше прикладных программ повышенной сложности. В качестве основных инструментов создания программных продуктов начали применяться алгоритмические языки высокого уровня. Эти языки расширили возможности отдельных программистов и групп разработчиков, что в свою очередь привело к увеличению уровня сложности программных систем.

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

Тогда же стали появляться компьютеры еще больших, поистине гигантских возможностей. Значение структурного подхода осталось прежним, но оказалось, что структурный подход не работает, если объем программы превышает приблизительно 100000 строк. В последнее время появились десятки методов, в большинстве которых устранены очевидные недостатки структурного проектирования. Большинство этих методов представляют собой вариации на одни и те же темы и их можно разделить на три основные группы:

·        метод структурного проектирования сверху вниз;

·        метод потоков данных;

·        объектно-ориентированное проектирование.

Структурный подход не позволяет выделить абстракции и обеспечить ограничение доступа к данным; он также не предоставляет достаточных средств для организации параллелизма. Структурный метод не может обеспечить создание предельно сложных систем, и он, как правило, неэффективен в объектных и объектно-ориентированных языках программирования.

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

В основе объектно-ориентированного проектирования (ООП) лежит представление о том, что программную систему необходимо проектировать как совокупность взаимодействующих друг с другом объектов, рассматривая каждый объект как экземпляр определенного класса, причем классы образуют иерархию. Объектно-ориентированный подход отражает топологию новейших языков высокого уровня, таких как Object Pascal, C++, Java, C#  и др.

Постановка задачи


Разработать программу на произвольную тему с использованием принципов объектно-ориентированного программирования. Отразить следующие этапы проектирования: анализ, проектирование, эволюция, модификация.

В качестве программы была выбрана компьютерная реализация азартной игры «Поймай палкой мячик!».

1 Анализ


Цель этапа анализа - максимально полное описание задачи. На этом этапе выполняется анализ предметной области задачи, объектная декомпозиция разрабатываемой системы и определяются важнейшие особенности поведения объектов (описание абстракций).

 Для анализа задачи рассмотрим правила игры:

·        Игра идет летающей полкой.

·        Цель игры: не дать упасть мячику и разбить все кирпичи.

·        В начале игры игроку запускается мячик.

·        После удара мячика об кирпич, кирпич исчезает, а мячик отскакивает и летит согласно законам отражения физики.

·        Если игрок не успевает поймать мячик полкой, он проигрывает.

·        Если разбиты все кирпичи, игрок выигрывает.


1.1 Объектная декомпозиция


На основе полученного анализа выполним объектную декомпозицию программы «XPBall».  

Игровой процесс можно смоделировать, используя два объекта: «Интерфейс» (блок управления, который получает и интерпретирует команды пользователя) и  объекта – «Игра» (реализация игрового процесса), каждый со своими параметрами (рис. 1).



Рисунок 1. Объектная декомпозиция игрового процесса
Далее выполним дальнейшую декомпозицию объектов. Объект «Интерфейс» реализуется из объекта «Форма» (управляющий объект), объекта «Кнопка» и движения мыши получающих команды от пользователя (рис. 2).



Рисунок 2. Объектная декомпозиция объекта «Интерфейс»

Выполним декомпозицию объекта «Игра». Объект состоит из управляющего объекта «Движок» и объекта-потока «Поток» (рис. 3).



Рисунок 3. Декомпозиция объекта «Игра»
Выполним декомпозицию объекта «Движок». Объект состоит из объектов «Мяч», «Кирпичи» и «Планка» (рис 4).



Рисунок 4. Декомпозиция объекта «Движок»
На этом объектную декомпозицию можно закончить. В результате поэтапной декомпозиции получился набор объектов с простым поведением.

1.2 Описание абстракций


В результате объектной декомпозиции можно выделить следующие абстракции:

Объект «Мяч»: содержит свои координаты, градус полета, скорость полета, диаметр, получает сообщение «Передвинуть», «Отобразить»;

Объект «Кирпичи»:  содержит массив кирпичей с цветами, ширину и высоту одного кирпича, получает сообщение «Отобразить»;

Объект «Планка»: содержит свои координаты, высоту, ширину,  получает сообщения «Передвинуть» и «Отобразить»;

Объект «Движок»: содержит объекты «Мяч», «Кирпичи», «Планка»,  получает сообщения «Движение мышью» и «Отобразить»;

Объект «Игра»: содержит объекты «Движок» и «Поток», получает сообщения «Начать игру», «Движение мышью», «Конец игры», «Отобразить».

Объект «Форма»: содержит объекты «Кнопка» получает сообщение «Кнопка нажата».

Объект «Кнопка»: передает сообщение «Кнопка нажата» (нажатие пользователем).

1.3 Структурная схема программного продукта


Структурная схема программного продукта приведена на рис. 6.



Рисунок 6. Структрурная схема программного продукта

2 Проектирование


Проектирование различают:

·        логическое проектирование, при котором принимаемые решения практически не зависят от условий эксплуатации (операционной системы и используемого оборудования);

·        физическое проектирование, при котором приходится принимать во внимание указанные факторы.

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

Физическое проектирование включает объединение описаний Объектов в модули, выбор схемы их подключения (статическая или динамическая компоновка), определение способов взаимодействия с оборудованием, с операционной системой и/или другим программным обеспечением (например, базами данных, сетевыми программами), обеспечение синхронизации процессов для систем параллельной обработки и т.д.

2.1 Логическое проектирование


Из-за простоты  проекта основные структуры объектов уже были подробно описаны в разделе описания абстракций.

Опишем реализацию основных алгоритмов:

Алгоритм полета мяча: мяч летит до тех пор, пока не встретится с препятствием, при этом его полет просчитывается заранее. Если мяч встречается с кирпичом, то кирпич уничтожается, а мяч отражается, также как и от планки или стенки. Если же мяч долетает до самого низа, не встретив планки, то игра считается проигранной. Игра считается выигранной, если разбиты все кирпичи.

Для равномерного полета мяча вместо использования таймера реализован поток.

2.2 Физическое проектирование


Проект реализован в среде Borland Delphi 7 и предназаначена для выполнения в ОС семейства Microsoft Windows.

В проект входят следующие модули:

·        uObj.pas – модуль  содержит объекты «мяч», «планка» и «кирпичи»;

·        uEngine.pas – модуль содержит объект «Движок»;

·        uMainThread.pas – модуль содержит объект «Поток»;

·        uGame.pas – модуль содержит объект «Форма»;

·        uMenu.pas – модуль содержит объект «Меню игры»;

·        XPBall.dpr – основной файл проекта.

Исходные тексты модулей приведены в приложении А.

3 Эволюция


Это процесс поэтапной реализации и подключения классов к проекту. Процесс начинается с создания основной программы или проекта будущего программного продукта. Затем реализуются и подключаются классы, так чтобы создать грубый, но, по возможности, работающий прототип будущей системы. Он тестируется и отлаживается. Например, таким прототипом может служить система, включающая реализацию основного интерфейса программного продукта (передача сообщений в отсутствующую пока часть системы не выполняется). В результате мы получаем работоспособный прототип продукта, который может быть, например, показан заказчику для уточнения требований. Затем к системе подключается следующая группа классов, например, связанная с реализацией некоторого пункта меню. Полученный вариант также тестируется и отлаживается, и так далее, до реализации всех возможностей системы.
В данном проекте в процессе эволюции реализуем новое состояние для объекта «Игра» - «Инициализация». Данное состояние будет установлено при первом создании объекта «Движок».  

4 Модификация


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

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

Введем  состояния игры для класса TEngine. Для этого вводим переменную TheEnd.

Изменим конструктор класса, чтобы при создании объекта у него устанавливалось состояние TheEnd в False.

Как видно, изменения затронули только только внутреннюю реализацию класса TEngine, не затронув его внешний интерфейс.

Заключение


В ходе работы над курсовым проектом были изучены основные принципы объектно-ориентированного проектирования ПО. С помощью объектно-ориентированного подхода был создан проект азартной игры «XPBall»

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


1.     Буч Г. Объектно-ориентированный анализ и проектирование. М.:  1996.

2.     Фёдоров А. Особенности программирования на Borland Pascal. Киев: “Диалектика”, 1994.

3.     Гайсарян С.С. Объектно-ориентированные технологии проектирования прикладных программных систем. М.: ЦИТ. 1998.

Приложение А. Исходные тексты проекта


Модуль
XPBall
.
dpr


program XPBall;
uses

  Forms,

  uMenu in 'uMenu.pas' {fmMenu},

  uGame in 'uGame.pas' {fmGame},

  uMainThread in 'uMainThread.pas',

  uObj in 'uObj.pas',

  uEngine in 'uEngine.pas';
{$R *.res}
begin

  Application.Initialize;

  Application.CreateForm(TfmMenu, fmMenu);

  Application.CreateForm(TfmGame, fmGame);

  Application.Run;

end.

Модуль uObj.pas


unit uObj;
interface
Uses Graphics;
Const kkx = 10; kky = 10;
type

 TPlanka = class

  private

   x, y, h, w: Word;

   canvas: TCanvas;

   Procedure Draw(x, y: Word; sh: Boolean);

  public

   property widthPl: Word read w;

   function BallinP(xk, yk: Word): Boolean;

   Procedure Move(nx, ny: Word);

   Constructor Create(c: TCanvas; xp, yp, hp, wp: Word);

 end;
 TKirpichi = class

  private

   h, w: Byte;

   ar: Array[1..kkx, 1..kky] of Byte;

   canvas: TCanvas;

   procedure Draw(x, y: Word; sh: Boolean);

  public

   klkr: Integer;

   function BallinK(x, y: Word): Boolean;

   procedure DrawAll;

   Constructor Create(c: TCanvas; pH, pW: Word);

 end;
 TBall = class

  private

   canvas: TCanvas;

  public

   x, y, dgr: Word;

   spd, d: Byte;

   procedure Move(xn, yn: Word);

   Constructor Create(c: TCanvas; xb, yb, dgrb : Word; spdb, db: Byte);

 end;
implementation
// Планка
Constructor TPlanka.Create(c: TCanvas; xp, yp, hp, wp: Word);

Begin

 canvas := c; x :=  xp; y := yp; h := hp; w := wp;

 Draw(x, y, True);

End;
Procedure TPlanka.Draw(x, y: Word; sh: Boolean);

Begin

 If sh then begin

  canvas.pen.Color := clBlack;

  canvas.Brush.Color := clDkGray;

 end

 else begin

  canvas.pen.Color := clBtnFace;

  canvas.Brush.Color := clBtnFace;

 end;

 canvas.Rectangle(x, y, x + w, y + h);

end;
function TPlanka.BallinP(xk, yk: Word): Boolean;

Begin

 If (xk >= x) and (xk <= x + w) and (yk >= y) then Result := True

 else Result := False;

End;
Procedure TPlanka.Move(nx, ny: Word);

Begin

 Draw(x, y, False); x := nx; {y := ny;} Draw(x, y, True);

End;
// Кирпичи
Constructor TKirpichi.Create(c: TCanvas; pH, pW: Word);

Var n, m: Byte;

Begin

 canvas := c; h := pH; w := pW; klkr := kkx * kky;

 For n := 1 to kkx do For m := 1 to kky do ar[n, m] := Random(7) + 1;

 DrawAll;

End;
procedure TKirpichi.Draw(x, y: Word; sh: Boolean);

Begin

 If sh then begin

  canvas.pen.Color := clBlack;

  Case ar[x, y] of

   1: canvas.Brush.Color := clGreen;

   2: canvas.Brush.Color := clBlue;

   3: canvas.Brush.Color := clAqua;

   4: canvas.Brush.Color := clFuchsia;

   5: canvas.Brush.Color := clOlive;

   6: canvas.Brush.Color := clTeal;

   7: canvas.Brush.Color := clSkyBlue;

  end;

  canvas.Rectangle((x - 1) * w + 1, (y - 1) * h + 1, x * w, y * h);

 end

 else begin

  canvas.pen.Color := clBtnFace;

  canvas.Brush.Color := clBtnFace;

  canvas.Rectangle((x - 1) * w + 1, (y - 1) * h + 1, x * w, y * h);

  ar[x, y] := 0;

 end;

End;
procedure TKirpichi.DrawAll;

Var n, m: Integer;

Begin

 For n := 1 to kkx do For m := 1 to kky do If (ar[n, m] > 0) then Draw(n, m, True);

end;
function TKirpichi.BallinK(x, y: Word): Boolean;

Var n, m: Word;

Begin

 Result := False;

 n := x div w + 1; m := y div h + 1;

 If (n <= kkx) and (m <= kky) then

  If ar[n, m] > 0 then begin

   ar[n, m] := 0; Draw(n, m, False); klkr := klkr - 1;

   Result := True;

  end;

End;
// Мяч
Constructor TBall.Create(c: TCanvas; xb, yb, dgrb : Word; spdb, db: Byte);

Begin

 canvas := c; x := xb; y := yb; dgr := dgrb; spd := spdb; d := db;

 Move(x, y);

End;
procedure TBall.Move(xn, yn: Word);

Begin

 canvas.pen.Color := clBlack; canvas.Brush.Color := clBlack;

 canvas.Ellipse(xn, yn, xn + d, yn + d);

 canvas.pen.Color := clBtnFace; canvas.Brush.Color := clBtnFace;

 canvas.Ellipse(x, y, x + d, y + d);

 canvas.pen.Color := clBlack; canvas.Brush.Color := clBlack;

 canvas.Ellipse(xn, yn, xn + d, yn + d);

 x := xn; y := yn;

End;
end.

Модуль uEngine.pas



unit uEngine;
interface
Uses uObj, uMainThread, Graphics;
Type

 TEngine = class

  private

   kr: TKirpichi;

   bl: TBall;

   pl: TPlanka;

   MainThread: TMainThread;

   TheEnd: Boolean;

   procedure Victory;

   procedure Defeat;

   function MoveBall: boolean;

  public

   constructor Create(c: TCanvas);

   procedure Move;

   procedure ShowAll;

   procedure MovePl(nx, ny: Integer);

   procedure Free;

 end;
implementation
Uses Forms, Windows;
constructor TEngine.Create(c: TCanvas);

Begin

 ShowCursor(False);

 Randomize;

 kr := TKirpichi.Create(c, (Screen.Height div 2) div 10, Screen.Width div 10);

 bl := TBall.Create(c, 300, Screen.Height - 200, 215, 15, 20);

 pl := TPlanka.Create(c, Screen.Width div 2 - 75, Screen.Height - 25, 15, 150);

 TheEnd := False;

 MainThread := TMainThread.Create(False);

 MainThread.tm := 10;

 MainThread.FreeOnTerminate := True;

End;
function TEngine.MoveBall: boolean;

Var nx, ny, px, py: Word;

         n, n1, n2: Byte;

               rad: Extended;

// Отражение от вертикали

Procedure OtX;

Begin

 px := px + Round((n1 - 1) * cos(rad));

 If (bl.dgr < 180) then bl.dgr := 180 - bl.dgr else bl.dgr := 180 + (360 - bl.dgr);

 rad := Pi / (180 / bl.dgr); n1 := 1;

 nx := px + Round(n1 * cos(rad));

End;

// Отражение от горизонтали

Procedure OtY;

Begin

 py := py + Round((n2 - 1) * sin(rad));

 If (bl.dgr < 180) then bl.dgr := 360 - bl.dgr else bl.dgr := 360 - bl.dgr;

 rad := Pi / (180 / bl.dgr); n2 := 1;

 ny := py + Round(n2 * sin(rad));

End;
Begin

 Result := True;

 n := 1; px := bl.x; py := bl.y; n1 := 1; n2 := 1;

 rad := Pi / (180 / bl.dgr);

 Repeat

  nx := px + Round(n1 * cos(rad));

  ny := py + Round(n2 * sin(rad));

  If (nx + bl.d > Screen.Width) or (nx < 1) then OtX;

  If (ny + bl.d > Screen.Height) then begin  // GameOver!

   Result := False; kr.klkr := -1;

  end

  else begin

   If (ny < 1) then OtY;

   Case bl.dgr of

    1..90: begin

     If pl.BallinP(nx + bl.d div 2, ny + bl.d) or

        kr.BallinK(nx + bl.d div 2, ny + bl.d) then OtY;

     If kr.BallinK(nx + bl.d, ny + bl.d div 2) then OtX;

    end;

    91..180: begin

     If pl.BallinP(nx + bl.d div 2, ny + bl.d) or

        kr.BallinK(nx + bl.d div 2, ny + bl.d) then OtY;

     If kr.BallinK(nx, ny + bl.d div 2) then OtX;

    end;

    181..270: begin

     If kr.BallinK(nx + bl.d div 2, ny) then OtY;

     If kr.BallinK(nx, ny + bl.d div 2) then OtX;

    end;

    271..360: begin

     If kr.BallinK(nx + bl.d div 2, ny) then OtY;

     If kr.BallinK(nx + bl.d, ny + bl.d div 2) then OtX;

    end;

   end;

  end;

  n := n + 1; n1 := n1 + 1; n2 := n2 + 1;

 Until (n > bl.spd) or (kr.klkr = -1);

 bl.Move(nx, ny);

End;
procedure TEngine.Move;

Begin

 If not MoveBall then Defeat

 else If (kr.klkr = 0) then Victory;

End;
procedure TEngine.Victory;

Begin

 MainThread.tm := -1; ShowCursor(True); TheEnd := True;

 Application.MessageBox('Вы победили!', 'Игра закончена');

End;
procedure TEngine.Defeat;

Begin

 MainThread.tm := -1; ShowCursor(True); TheEnd := True;

 Application.MessageBox('Вы проиграли.', 'Игра закончена');

End;
procedure TEngine.ShowAll;

Begin

 If not TheEnd then begin

  kr.DrawAll; bl.Move(bl.x, bl.y);

 end;

End;
Procedure TEngine.MovePl(nx, ny: Integer);

Begin

 If not TheEnd then begin

  If (nx > Screen.Width - pl.widthPl) then nx := Screen.Width - pl.widthPl;

  pl.Move(nx, ny);

 end;

End;
Procedure TEngine.Free;

Begin

 MainThread.Terminate;

 bl.Free; kr.Free; pl.Free;

End;
end.


Модуль uMainThread.pas




unit uMainThread;
interface
uses

  Classes;
type

  TMainThread = class(TThread)

  private

    { Private declarations }

  public

    tm: ShortInt; // время обновления картинки

  protected

    procedure Execute; override;

  end;
implementation
uses Windows, uGame;
{ TMainThread }
procedure TMainThread.Execute;

Var tmr, a: DWord;

begin

  { Place thread code here }

  a := GetTickCount;

  Repeat

   tmr := GetTickCount;

   If (tmr - a > tm) then begin

    Synchronize(uGame.engine.Move);

    If (tm = -1) then Synchronize(uGame.fmGame.Close);

    a := GetTickCount;

   end;

  Until Terminated;

end;
end.


Модуль uGame.pas


unit uGame;
interface
uses

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

  Dialogs, uMainThread, uEngine;
type

  TfmGame = class(TForm)

    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

    procedure FormCreate(Sender: TObject);

    procedure FormPaint(Sender: TObject);

    procedure FormKeyPress(Sender: TObject; var Key: Char);

    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,

      Y: Integer);

  private

    { Private declarations }

  public

    { Public declarations }

    procedure RunG;

  end;
var

  fmGame: TfmGame;

  engine: TEngine;
implementation
uses uMenu;
{$R *.dfm}
procedure TfmGame.RunG;

Begin

 engine := TEngine.Create(fmGame.Canvas);

End;
procedure TfmGame.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin

 CanClose := False;

 engine.Free;

 fmMenu.BackInToMenu;

 Hide;

end;
procedure TfmGame.FormCreate(Sender: TObject);

begin

 Height := Screen.Height; Width := Screen.Width;

end;
procedure TfmGame.FormPaint(Sender: TObject);

begin

 engine.ShowAll;

end;
procedure TfmGame.FormKeyPress(Sender: TObject; var Key: Char);

begin

 If Key = #27 then begin

  ShowCursor(True); Key := #0; Close;

 end;

end;
procedure TfmGame.FormMouseMove(Sender: TObject; Shift: TShiftState; X,

  Y: Integer);

begin

 engine.MovePl(x, y);

end;
end.

Модуль uMenu.pas


unit uMenu;
interface
uses

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

  Dialogs, StdCtrls;
type

  TfmMenu = class(TForm)

    Button1: TButton;

    Button2: TButton;

    procedure Button2Click(Sender: TObject);

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

    procedure BackInToMenu;

  end;
var

  fmMenu: TfmMenu;
implementation
uses uGame;
{$R *.dfm}
procedure TfmMenu.BackInToMenu;

Begin

 Show;

End;
procedure TfmMenu.Button2Click(Sender: TObject);

begin

 Close;

end;
procedure TfmMenu.Button1Click(Sender: TObject);

begin

 fmGame.Show;

 Hide;

 fmGame.RunG;

end;
end.



1. Реферат на тему Influences On A Person
2. Реферат на тему Book Review Guide To Getting It On
3. Контрольная работа на тему Автоматизированные формы
4. Тесты Циклические концепции культуры
5. Реферат Мелкозубый пилорыл
6. Реферат Увага Наркоманія
7. Реферат на тему Isaiah Berlin Essay Research Paper Isaiah Berlin
8. Реферат ПРОЕКТИРОВАНИЕ ГЛАВНОЙ ВЕНТИЛЯТОРНОЙ УСТАНОВКИ В УСЛОВИЯХ ШАХТЫ ДЗЕРЖИНСКОГО
9. Реферат Понятия и цель финансовой отчетности
10. Реферат на тему Кризис феодально-крепостнической системы в России первой половины 19 века