Язык программирования Delphi

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    419,84 Кб
  • Опубликовано:
    2012-05-20
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Язык программирования Delphi

1.       Краткие теоретические сведения

- язык программирования, который используется в одноимённой среде разработки. Сначала язык назывался Object Pascal. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal.

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

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

Несколько лет назад рядовому программисту оставалось только мечтать о создании собственных программ, работающих в среде Windows, т. к. единственным средством разработки был Borland C++ for Windows, явно ориентированный на профессионалов, обладающих серьезными знаниями и опытом.

Бурное развитие вычислительной техники, потребность в эффективных средствах разработки программного обеспечения привели к появлению систем программирования, ориентированных на так называемую "быструю разработку", среди которых можно выделить Borland Delphi и Microsoft Visual Basic. В основе систем быстрой разработки (RAD-систем, Rapid Application Development - среда быстрой разработки приложений) лежит технология визуального проектирования и событийного программирования, суть которой заключается в том, что среда разработки берет на себя большую часть рутинной работы, оставляя программисту работу по конструированию диалоговых окон и функций обработки событий. Производительность программиста при использовании RAD-систем - фантастическая!- это среда быстрой разработки, в которой в качестве языка программирования используется язык Delphi. Язык Delphi - строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal.

В настоящее время программистам стала доступна очередная версия пакета Delphi - Borland Delphi 7 Studio. Как и предыдущие версии, Borland Delphi 7 Studio позволяет создавать самые различные программы: от простейших однооконных приложений до программ управления распределенными базами. В состав пакета включены разнообразные утилиты, обеспечивающие работу с базами данных, XML-документами, создание справочной системы, решение других задач. Отличительной особенностью седьмой версии является поддержка технологии .NET.

2. Словесный алгоритм программы

 

.1 Представление данных


В программе игровое поле представлено массивом N+2 на M+2, где N xM - размер игрового поля. Элементы массива с номерами строк от 1 до N и номерами столбцов от 1 до М соответствуют клеткам игрового поля (рис. 1), первые и последние столбцы и строки соответствуют границе игрового поля.

Рис. 1. Клетке игрового поля соответствует элемент массива.

В начале игры каждый элемент массива, соответствующий клеткам игрового поля, может содержать число от 0 до 9. Ноль соответствует пустой клетке, рядом с которой нет мин. Клеткам, в которых нет мин, но рядом с которыми мины есть, соответствуют числа от 1 до 8. Элементы массива, соответствующие клеткам, в которых находятся мины, имеют значение 9.

Элементы массива, соответствующие границе поля, содержат -3.

В качестве примера на рис. 2 изображен массив, соответствующий состоянию поля в начале игры.

Рис. 2. Массив в начале игры.

В процессе игры состояние игрового поля меняется (игрок открывает клетки и ставит флажки) и, соответственно, меняются значения элементов массива. Если игрок поставил в клетку флажок, то значение соответствующего элемента массива увеличивается на 100. Например, если флажок поставлен правильно в клетку, в которой есть мина, то значение соответствующего элемента массива станет 109. Если флажок поставлен ошибочно, например, в пустую клетку, элемент массива будет содержать число 100. Если игрок открыл клетку, то значение элемента массива увеличивается на 200. Такой способ кодирования позволяет сохранить информацию о исходном состоянии клетки.

2.2 Форма приложения


Главная (стартовая) форма игры Сапер приведена на рис. 3.

Рис. 3. Главная форма программы Сапер.

Следует обратить внимание, что размер формы не соответствует размеру игрового поля. Нужный размер формы будет установлен во время работы программы. Делает это процедура обработки события OnFormActivate, которая на основе информации о размере игрового поля (количестве клеток по вертикали и горизонтали) и клеток устанавливает значение свойств ClientHeight и ClientWidth, определяющих размер клиентской области главного окна программы.

Основное окно программы содержит компонент MainMenu1, который представляет собой главное меню программы. Значок компонента MainMenu находится на вкладке Standard (рис. 4).

Рис. 4. Компонент MainMenu.

Значок компонента MainMenu можно поместить в любое место формы, так как во время работы программы он не виден. Пункты меню появляются в верхней части формы в результате настройки меню. Для настройки меню используется редактор меню, который запускается двойным щелчком левой кнопкой мыши на значке компонента или выбором из контекстного меню компонента команды Menu Designer. В начале работы над новым меню, сразу после добавления компонента к форме, в окне редактора находится один-единственный прямоугольник - заготовка пункта меню. Чтобы превратить эту заготовку в меню, нужно в окне Object Inspector в поле Caption ввести название меню.

Если перед какой-либо буквой в названии меню ввести знак &, то во время работы программы можно будет активизировать этот пункт меню путем нажатия комбинации клавиши <Аlt> и клавиши, соответствующей символу, перед которым стоит знак &. В названии меню эта буква будет подчеркнута.

Чтобы добавить в главное меню элемент, необходимо в окне редактора меню выбрать последний (пустой) элемент меню и ввести название нового пункта.

Чтобы добавить в меню команду, необходимо выбрать пункт меню, в который нужно добавить команду, переместить указатель активного элемента меню в конец списка команд меню и ввести название команды.

На рис. 5 приведено окно редактора меню, в котором находится меню программы Сапер.

Рис. 5. Структура меню программы Сапер.

После того как будет сформирована структура меню, нужно, используя окно Object Inspector, выполнить настройку элементов меню (выбрать настраиваемый пункт меню можно в окне формы приложения или из списка объектов в верхней части окна Object Inspector). Каждый элемент меню (пункты и команды) - это объект типа TMenuitem. Свойства объектов TMenuitem (табл.1) определяют вид меню во время работы программы.

Таблица 1. Свойства объекта TMenuItem

Свойство

Определяет

Name

Имя элемента меню. Используется для доступа к свойствам

Caption

Название меню или команды

Bitmap

Значок, который отображается слева от названия элемента меню

Enabled

Признак доступности элемента меню. Если значение свойства равно False, то элемент меню недоступен, при этом название меню отображается серым цветом









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

3. Описание процедур


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

 

.1Процедура NewGame


// новая игра - генерирует новое поле

procedure NewGame ();,col : integer; // координаты клетки (индексы массива) : integer; // количество поставленных мин

k : integer; // кол-во мин в соседних клетках

begin

// Очистим эл-ты массива, соответствующие клеткам

// игрового поляrow :=1 to MR docol :=1 to MC do Pole[row,col] := 0;

// расставим мины

Randomize О; // инициализация ГСЧ (генератор случайных чисел)

n := 0; // кол-во мин:= Random(MR) + 1;:= Random(MC) + 1;(Pole[row,col] <> 9) then begin[row,col] := 9; n := n+1;;

until (n = NM);

// для каждой клетки вычислим // кол-во мин в соседних клетках

for row := 1 to MR docol := 1 to MC do(Pole[row,col] <> 9) thenk :=0 ;Pole[row-l,col-l] = 9 then k = k + 1;Pole[row-1,col] =' 9 then k = k + 1;Pole[row-1,col+1] = 9 then k = k + 1;Pole[row,col-1] = 9 then k = k + 1;Pole[row,col+1] = 9 then k = k + 1;Pole[row+1,col-1] = 9 then k = k + 1;Pole[row+1,col] = 9 then k = k + 1;Pole[row+l,col+l] = 9 then k := k + 1;[row,col] := k;; := 0; // начало игры

nMin := 0; // нет обнаруженных мин

nFlag := 0; // нет поставленных флагов

end;

После того как процедура NewGame расставит мины, процедура ShowPole выводит изображение игрового поля.

 

.2 Процедура ShowPole


// Показывает поле

Procedure ShowPoie(Canvas : TCanvas; status : integer);,col : integer;row := 1 to MR docol := 1 to MC do(Canvas, row, col, status);;

Процедура showPole выводит изображение поля последовательно, клетка за клеткой. Вывод изображения отдельной клетки выполняет процедура Kletka. Процедура Kletka используется для вывода изображения поля в начале игры, во время игры и в ее конце. В начале игры (значение параметра status = 0) процедура выводит только контур клетки, во время игры - количество мин в соседних клетках или флажок, а в конце отображает исходное состояние клетки и действия пользователя. Информацию о фазе игры процедура Kletka получает через параметр status.

 

.3 Процедура Kletka


// выводит на экран изображение клетки

Procedure Kletka(Canvas : TCanvas;, col, status : integer);

x,y : integer; // координаты области вывода

begin:= (col-1)* W + I; у := (row-1)* H + 1;status = 0 then begin.Brush.Color := clLtGray;.Rectangle(x-1,y-1,x+W,y+H);;;Pole[row,col] < 100 then.Brush.Color := clLtGray; // неоткрытые - серые.Rectangle(x-1,y-l,x+W,y+H);

// если игра завершена (status = 2), то показать мины

if (status = 2) and (Pole[row,col] = 9)Mina(Canvas, x, y) ; exit; end;

// открытая клетка.Brush.Color := clWhite; // открытые белые.Rectangle(x-1,y-l,x+W,y+H); (Pole[row,col] = 100)

then exit; // клетка открыта, но она пустая

Canvas.Font.Size := 14;.Font.Color := clBlue;.TextOut(x+3,y+2,IntToStr(Pole[row,col] -100));;;(Pole[row,col] >= 200)Flag(Canvas, x, y); (Pole[row,col] = 109)

then // на этой мине подорвались!

begin.Brush.Color := clRed;.Rectangle(x-1,y-1,x+W,y+H);;((Pole[row,col] mod 10) = 9)(status = 2) then(Canvas, x, y);;

Во время игры программа воспринимает нажатия кнопок мыши и, в соответствии с правилами игры, открывает клетки или ставит в клетки флажки. Основную работу выполняет процедура обработки события onMouseDown. Сначала процедура преобразует координаты точки, в которой игрок нажал кнопку мыши, в координаты клетки игрового поля. Затем делает необходимые изменения в массиве Pole и, если нажата правая кнопка, рисует в клетке флажок. Если нажата левая кнопка в клетке, в которой нет мины, то эта клетка открывается, на экран выводится ее содержимое. Если нажата левая кнопка в клетке, в которой есть мина, то вызывается процедура showPole, которая показывает все мины, в том числе и те, которые игрок не успел найти.

 

.4 Процедура обработки события OnMouseDown на поверхности игрового поля


// нажатие кнопки мыши на игровом поле

procedure TForm1.Form1MouseDown(Sender: TObject;: TMouseButton;: TShiftState; X, Y: Integer);, col : integer;status = 2 // игра завершенаexit;status = 0 then // первый щелчок

status := 1;

// преобразуем координаты мыши в индексы

// клетки поля:= Trunc(y/H) + 1;

col := Trunc(x/W) + 1;Button = mbLeft thenPole[row,col] = 9 then

begin // открыта клетка, в которой есть мина

Pole[row,col] := Pole[row,col] + 100;:= 2; // игра закончена(Form1.Canvas, status);elsePole[row,col] < 9 then(row,col);elseButton = mbRight thenPole[row,col] > 200 then begin

// уберем флаг и закроем клетку:= nFlag - 1;

Pole[row,col] := Pole[row,col]-200;

// уберем флаг:= (col-D* W + 1; у := (row-1)* H + 1;

Canvas.Brush.Color := clLtGray;.Rectangle(x-1,y-1,x+W,y+H);

end else// поставить в клетку флаг

nFlag := nFlag + 1; if Pole[row,col] = 9nMin := nMin + 1;[row,col]:=Pole[row,col]+200;

// поставили флаг(nMin = NM) and (nFlag = NM) then begin:= 2;

// игра закончена(Form1.Canvas, status);Kletka(Form1.Canvas, row, col, status);

end;;

3.5 Справочная информация


При выборе из меню ? команды Справка появляется справочная информация - правила игры (рис. 6)

Рис. 6. Окно справочной информации.

Примечание

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

 

.6 Процедура, обеспечивающая вывод справочной информации


// выбор из меню ? команды Справка

procedure TForm1.N3Click(Sender: TObject);: string; // файл справки: string; // раздел справки

pwHelpFile : PWideChar;

// файл справки (указатель на строку WideChar): PWideChar;

// раздел (указатель на строку WideChar)

begin:= 'saper.chm';:= 'saper_02.htm';

// выделить память длястрок GetMem(pwHelpFile, Length(HelpFile) * 2);(pwHelpTopic, Length(HelpTopic)*2);

// преобразовать ANSI-строку в WideString-строку:= StringToWideChar(HelpFile,, MAX_PATH*2);:= StringToWideChar(HelpTopic,,32);

// вывести справочную информацию.Hhopen1.OpenHelp(pwHelpFile,);

end;

 

.7 Информация О программе


При выборе из меню ? команды О программе на экране должно появиться одноименное окно (рис. 7).

Рис. 7. Окно О программе.

Чтобы программа во время своей работы могла вывести на экран окно, отличное от главного (стартового), нужно создать это окно. Делается это выбором из меню File команды New form. В результате выполнения команды New form в проект добавляется новая форма и соответствующим ей модуль.

Вид формы AboutForm после добавления необходимых компонентов приведен на рис. 8, значения ее свойств - в табл. 2.

программный обеспечение delphi

Рис. 8. Форма О программе.

Таблица 2. Значения свойств формы О программе

Свойство

Значение

Name

AboutForm

Caption

0 программе

BorderStyle

BsSingle

Borderlcons . biSystemMenu

False

Borderlcons .biMininize

False

Borderlcons . biMaximize

False


Вывод окна О программе выполняет процедура обработки события click, которое происходит в результате выбора из меню ? команды О программе.

Непосредственно вывод окна выполняет метод showModal, который выводит окно как модальный диалог.

 

.8 Процедура обработки события click, выполняющая вывод окна О программе


// выбор из меню ? команды О программе

procedure TForm1.N4Click(Sender: TObject);.Top :=(Forml.Top + Forml.Height/2 - AboutForm.Height/2);.Left :=(Form1.Left +Form1 .Width/2

AboutForm. Width/2 }; AboutForm. ShowModal;;

Примечание

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

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

procedure TAboutForm.ButtonlClick (Sender: TObject) ;:= mrOk;;

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


//модуль главной формы

unit saper_1;, Messages, SysUtils, Classes,, Controls, Forms, Dialogs,, StdCtrls, OleCtrls, HHOPENLib_TLB;= class(TForm): TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: THhopen;Form1Create(Sender: TObject);Form1Paint(Sender: TObject);Form1MouseDown(Sender: TObject; Button: TMouseButton;: TShiftState; X, Y: Integer);N1Click(Sender: TObject);N4Click(Sender: TObject);N3Click(Sender: TObject);

{ Public declarations };: TForm1;saper_2;

{$R *.DFM}

const= 10; // кол-во клеток по вертикали= 10; // кол-во клеток по горизонтали= 10; // кол-во мин= 40; // ширина клетки поля

H = 40; // высота клетки поля: array[0..MR+1, 0.. MC+1] of integer; // минное поле

// значение элемента массива:

// 0..8 - количество мин в соседних клетках

// 9 - в клетке мина

// 100..109 - клетка открыта

// 200..209 - в клетку поставлен флаг: integer; // кол-во найденных мин: integer; // кол-во поставленных флагов: integer; // 0 - начало игры; 1- игра; 2 -результат

Procedure NewGame(); forward;

// генерирует новое полеShowPole(Canvas : TCanvas; status : integer); forward;// Показывает полеKletka(Canvas : TCanvas; row, col, status : integer); forward; // выводит содержимое клетки

Procedure Open( row, col : integer); forward;// открывает текущую и все соседние клетки, в которых нет мин

Procedure Mina(Canvas : TCanvas; x, y : integer); forward; // Рисует минуFlag( Canvas : TCanvas; x, y : integer); forward;// Рисует флаг

// выводит на экран содержимое клеткиKletka(Canvas : TCanvas; row, col, status : integer);

var,y : integer; // координаты области вывода

begin:= (col-1)* W + 1;:= (row-1)* H + 1;status = 0 then.Brush.Color := clLtGray;.Rectangle(x-1,y-1,x+W,y+H);;;Pole[row,col] < 100 then.Brush.Color := clLtGray; // не открытые - серые.Rectangle(x-1,y-1,x+W,y+H);

// если игра завершена (status = 2), то показать мины

if (status = 2) and (Pole[row,col] = 9)Mina(Canvas, x, y);;;

// открываем клетку.Brush.Color := clWhite; // открытые белые.Rectangle(x-1,y-1,x+W,y+H);

if ( Pole[row,col] = 100 )exit; // клетка открыта, но она пустая

if ( Pole[row,col] >= 101) and (Pole[row,col] <= 108 ) then.Font.Size := 14;.Font.Color := clBlue;.TextOut(x+3,y+2,IntToStr(Pole[row,col] -100 ));;;( Pole[row,col] >= 200 ) then(Canvas, x, y); (Pole[row,col] = 109 ) then // на этой мине подорвались!

begin.Brush.Color := clRed;.Rectangle(x-1,y-1,x+W,y+H);;( (Pole[row,col] mod 10) = 9) and (status = 2) then(Canvas, x, y);;

// Показывает полеShowPole(Canvas : TCanvas; status : integer);,col : integer;row := 1 to MR docol := 1 to MC do(Canvas, row, col, status);

end;

// рекурсивная функция открывает текущую и все соседние

// клетки, в которых нет минOpen( row, col : integer);Pole[row,col] = 0 then[row,col] := 100;(Form1.Canvas, row,col, 1);(row,col-1);(row-1,col);(row,col+1);(row+1,col);

//примыкающие диагонально(row-1,col-1);

Open(row-1,col+1);(row+1,col-1);(row+1,col+1);(Pole[row,col] < 100) and ( Pole[row,col] <> -3 ) then[row,col] := Pole[row,col] + 100;(Form1.Canvas, row, col, 1);

end;;

// новая игра - генерирует новое поле

procedure NewGame();,col : integer; // координаты клетки

n : integer; // количество поставленных мин: integer; // кол-во мин в соседних клетках

// Очистим эл-ты массива, соответствующие клеткам

// игрового поля.row :=1 to MR docol :=1 to MC do[row,col] := 0;

// расставим мины(); // инициализация ГСЧ:= 0; // кол-во мин

repeat:= Random(MR) + 1;:= Random(MC) + 1;( Pole[row,col] <> 9) then[row,col] := 9;:= n+1;

end;( n = NM );

// для каждой клетки вычислим

// кол-во мин в соседних клетках

for row := 1 to MR docol := 1 to MC do( Pole[row,col] <> 9 ) then:=0 ;Pole[row-1,col-1] = 9 then k := k + 1;Pole[row-1,col] = 9 then k := k + 1;Pole[row-1,col+1] = 9 then k := k + 1;Pole[row,col-1] = 9 then k := k + 1;Pole[row,col+1] = 9 then k := k + 1;Pole[row+1,col-1] = 9 then k := k + 1;Pole[row+1,col] = 9 then k := k + 1;Pole[row+1,col+1] = 9 then k := k + 1;[row,col] := k;;

status := 0; // начало игры:= 0; // нет обнаруженных мин:= 0; // нет флагов;

// Рисует мину

Procedure Mina(Canvas : TCanvas; x, y : integer);Canvas do.Color := clGreen;.Color := clBlack;(x+16,y+26,x+24,y+30);(x+8,y+30,x+16,y+34);(x+24,y+30,x+32,y+34);(x+6,y+28,x+34,y+44,x+34,y+36,x+6,y+36);(x+12,y+32); LineTo(x+26,y+32);(x+8,y+36); LineTo(x+32,y+36);(x+20,y+22); LineTo(x+20,y+26);(x+8, y+30); LineTo(x+6,y+28);(x+32,y+30); LineTo(x+34,y+28);;;

// Рисует флагFlag( Canvas : TCanvas; x, y : integer);: array [0..3] of TPoint; // координаты флажка и нижней точки древка: array [0..4] of TPoint; // буква М

// зададим координаты точек флажка[0].x:=x+4; p[0].y:=y+4;[1].x:=x+30; p[1].y:=y+12;[2].x:=x+4; p[2].y:=y+20;

p[3].x:=x+4; p[3].y:=y+36; // нижняя точка древка

m[0].x:=x+8; m[0].y:=y+14;[1].x:=x+8; m[1].y:=y+8;[2].x:=x+10; m[2].y:=y+10;[3].x:=x+12; m[3].y:=y+8;[4].x:=x+12; m[4].y:=y+14;Canvas do

begin

// установим цвет кисти и карандаша

Brush.Color := clRed;.Color := clRed;(p); // флажок

// древко.Color := clBlack;(p[0].x, p[0].y);(p[3].x, p[3].y);

// буква М.Color := clWhite;(m);.Color := clBlack;

end;;

// выбор из меню ? команды О программе

procedure TForm1.N4Click(Sender: TObject);.Top := Trunc(Form1.Top + Form1.Height/2 - AboutForm.Height/2);.Left := Trunc(Form1.Left +Form1.Width/2 - AboutForm.Width/2);.ShowModal;;TForm1.Form1Create(Sender: TObject);

var,col : integer;

// В неотображаемые эл-ты массива, которые соответствуют

// клеткам по границе игрового поля запишем число -3.

// Это значение используется функцией Open для завершения

// рекурсивного процесса открытия соседних пустых клеток.

for row :=0 to MR+1 docol :=0 to MC+1 do[row,col] := -3;(); // "разбросать" мины.ClientHeight := H*MR + 1;.ClientWidth := W*MC + 1;

end;

// нажатие кнопки мыши на игровом поле

procedure TForm1.Form1MouseDown(Sender: TObject; Button: TMouseButton;: TShiftState; X, Y: Integer);, col : integer;status = 2 // игра завершенаexit;status = 0 then // первый щелчок

status := 1;

// преобразуем координаты мыши в индексы

// клетки поля:= Trunc(y/H) + 1;

col := Trunc(x/W) + 1;Button = mbLeft thenPole[row,col] = 9 then

begin // открыта клетка, в которой есть мина

Pole[row,col] := Pole[row,col] + 100;:= 2; // игра закончена(Form1.Canvas, status);if Pole[row,col] < 9 then(row,col);Button = mbRight thenPole[row,col] > 200 then

Pole[row,col] := Pole[row,col] - 200; // уберем флаг:= (col-1)* W + 1;:= (row-1)* H + 1;.Brush.Color := clLtGray;.Rectangle(x-1,y-1,x+W,y+H);

end// поставить в клетку флаг

nFlag := nFlag + 1;Pole[row,col] = 9nMin := nMin + 1;[row,col] := Pole[row,col]+ 200; // поставили флаг(nMin = NM) and (nFlag = NM) then:= 2; // игра закончена(Form1.Canvas, status);Kletka(Form1.Canvas, row, col, status);

end;;

// Выбор меню Новая игра

procedure TForm1.N1Click(Sender: TObject);();(Form1.Canvas,status);

end;

// выбор из меню ? команды Справка

procedure TForm1.N3Click(Sender: TObject);: string; // файл справки: string; // раздел справки: PWideChar; // файл справки (указатель на WideChar строку): PWideChar; // раздел (указатель на WideChar строку):= 'saper.chm';:= 'saper_02.htm';

// выделить память для WideChar строк(pwHelpFile, Length(HelpFile) * 2);(pwHelpTopic, Length(HelpTopic)*2);

// преобразовать Ansi строку в WideString строку

pwHelpFile := StringToWideChar(HelpFile,pwHelpFile,MAX_PATH*2);:= StringToWideChar(HelpTopic,pwHelpTopic,32);

// вывести справочную информацию.Hhopen1.OpenHelp(pwHelpFile,pwHelpTopic);;TForm1.Form1Paint(Sender: TObject);(Form1.Canvas, status);

end;.

// модуль формы О программеsaper 2;

interface, Messages, SysUtils, Classes, Graphics, Controls,, Dialogs, StdCtrls, saper_l;= class(TForm): TButton;: TLabel;: TLabel;ButtonlClick(Sender: TObject);

{ Private declarations }Public declarations };: TAboutForm;

{$R *.DFM}TAboutForm.ButtonlClick(Sender: TObject);:= mrOk;;.

5.Результат работы программы


Чтобы начать игру Сапер, необходимо запустить приложение saper.exe. Данное приложение аналогично игре Сапер, входящей в состав Microsoft Windows.

Пример окна программы в конце игры, после того как игрок открыл клетку, в которой находится мина, приведен на рис. 9.

Рис. 9. Окно программы Сапер.

 

Заключение


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

Проблемы

Для вывода справочной информации игра Сапер использует компонент hhopen, который физически представляет собой файл hhopen.ocx.

Если компонент в системе не зарегистрирован, то в процессе запуска программы возникает ошибка (исключение).

Для того чтобы зарегистрировать компонент, надо:

·        скопировать файл hhopen.ocx в каталог c:\windows\system или c:\windows\system32 (если программа запускается в Microsoft Windows 2000)

·        зарегистрировать компонент hhopen, для чего надо из командной строки, которая становиться доступной в результате выбора команды Пуск/Выполнить, запустить системную утилиту regsrv32, указав в качестве параметра файл hhopen.ocx

Список литературы


1.                Вальвачев А. Н, Сурков К. А, Сурков Д. А, Четырько Ю. М. Программирование на языке Delphi. Учебное пособие. - 2005.

2.       Культин Н.Б. Основы программирования в Delphi 7. СПБ: БХВ - Петербург 2002.

.        Архангельский А. Я. Программирование в Delphi 7 -М: ЗАО Издательство БИНОМ 2003.-768 с.

4.          Кэнту М. Delphi 7: Для профессионалов

Похожие работы на - Язык программирования Delphi

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!