Особенности работы в среде программирования Delphi

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

Особенности работы в среде программирования Delphi

Оглавление

Введение

Глава 1. Работа в Delphi

Глава 2: Структура программы

Глава 3. Описание структуры программы

Заключение

Рецензия

Введение

- что это?

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

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

Несколько лет назад рядовому программисту оставалось только мечтать о создании собственных программ, работающих в среде Windows, т.к. единственным средством разработки был Borland C++ for Windows, явно ориентированный на профессионалов, обладающих серьезными знаниями и опытом.- это среда быстрой разработки, в которой в качестве языка программирования используется язык Delphi. Язык Delphi - строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal.

Существует четыре варианта пакета Borland Delphi 7 Studio: Personal, Professional, Enterprise и Architect. Каждый из этих комплектов включает стандартный набор средств, обеспечивающих разработку высокоэффективных программ различного назначения, в том числе для работы с базами данных. Вместе с тем, чем выше уровень комплекта (от Personal до Architect), тем большие возможности он предоставляет программисту. Так, комплект Enterprise позволяет разрабатывать приложения работы с удаленными базами данных (например, InterBase), а комплект Personal - нет.

Историческая справка

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

Для удобства и наглядности восприятия материала необходимо ввести несколько важных обозначений, которые буду в дальнейшем использоваться. Ф - фасадная сторона, Т - тыл, П - правая, Л - левая, В - верх, Н - низ. В процессе сборки фасадная грань может меняться в зависимости от ситуации, а какого цвета она будет - это решение придется принимать самостоятельно. Цвет любой стороны всегда должны определять только центральные кубики, именно к ним необходимо будет присоединять еще восемь секторов того же цвета. В последующем мы будем обозначать их теми же символами, что и грани, только строчными буквами - ф, т, п, л, в, н. Кубики, составляющие ребра головоломки имеют два цвета, поэтому будем обозначать их двумя буквами - фп - фронтальный правый, пв - правый верхний, фн - фронтальный нижний и так далее. Угловые, имеющие три цвета - соответственно фпв, флн

язык программирование delphi программа


Теперь необходимо символизировать операции, которые необходимо будет выполнять в процессе сборки. Самая простая - это поворот грани по часовой стрелке на 90 градусов, обозначим как и сами грани - Ф, П. Л, В, Н, Т. Если предусматривается поворот на 90 градусов, но против часовой стрелки, то это будет выглядеть так: Ф`, П` и т.д. Двойной поворот - Ф2, П2… Но в процессе сборки потребуется перемещать и среднюю грань кубика, еще и с позиции различных сторон. Обозначим этот процесс, например, Сл - поворот среднего слоя со стороны левой грани. Буква О будет означать поворот всего куба, Оп - оборот относительно правой стороны. Можно использовать и матричную запись процесса сборки в виде схем со стрелками, указывающими направление поворота граней.

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

Этап 1. Необходимо собрать крест верхней грани. Определяем ее цвет по центральному квадрату. Допустим он синего цвета. Теперь нам необходимо со всех сторон подогнать к нему квадраты того же цвета, чтобы получился крест. Находим расположение таких квадратов и поворотами соответствующих граней перемещаем их вниз. После чего, начинаем перемещать нижнюю грань таким образом, чтобы нужный нам сектор оказался под тем местом на верхней грани, куда он должен переместиться. Разворачиваем сторону, где он расположен на 180 градусов, и квадрат устанавливается на свое место на верхней грани. Аналогичным образом подгоняем все четыре квадрата, итог - крест на верхней стороне кубика. Алгоритм действий: Н - П - Ф` - П` или Ф` - Н`с - Ф - Нс.

Этап 2. Попробуем установить на свои места угловые квадраты верхней грани так, чтобы они совпадали одним из цветов с выбранной фасадной стороной. Начинаем обязательно с левого относительно фасада угла. В нашем случае /верхняя сторона синяя/, выбрав за фасад, например, красный цвет /то есть центральный кубик фасада - красный/, нужно в верхнем левом углу поставить квадрат таким образом, чтобы на верхней стороне оказался синий, а на фасадной - красный цвета. Подгоняется это все довольно просто, точно так же как указано в первом этапе. Необходимо следить только за верхним слоем под синей гранью, что происходит в остальных двух - пока Вас не должно беспокоить. Таким образом, полностью собирается верхняя синяя сторона кубика рубика и первый слой под ней, то есть линии верхнего слоя с каждой стороны имеют один и тот же цвет. Поворачиваем верхнюю грань так, чтобы цвета верхнего слоя совпадали с цветами центральных квадратов каждой боковой грани, образуя недорисованную букву "Т". Алгоритм действий: Л - Ф` - Ф` - П` - Н - Л` - Н` - Ф - Н - Н - П - Ф.

Этап 3. Сборка второго пояса. Чтобы перевести квадрат, выведенный на фасадную сторону в нужное место во втором поясе: либо слева либо справа, действие обозначается по начальным буквам На Лево, На Право, то есть НЛ и НП. В этом случае, как и на предыдущих этапах, нужный квадрат сначала отыскивается, затем переводится на сторону Н. Далее Н двигается до совпадения квадрата и той грани, на которой он должен занять место, и, повернув ее, поставить сектор на свое место. Произведя такие операции с каждым квадратом второго пояса, мы получим его полностью собранным по цветам. Алгоритм действий: Н - Л - Н` - Л` - Н` - Ф` - Н - Ф или Н` - П` - Н - П - Н - Ф - Н` - Ф`.

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

Этап 5. Ориентирование двух бортовых кубиков фасадной грани. При совершении последовательности операций не стоит бояться, что собранные пояса и верхняя грань изначально разрушаются. /ПСн/4. При правильном окончании процесса ориентирования все вернется на свои места. Алгоритм действий: П - Сн - В/В`, В2/ - /ПСн/4.

Этап 6. Устанавливаем нижние угловые кубики фасадной стороны. Здесь используется восьми - ходовой процесс, чистый алгоритм, позволяющий при нескольких повторениях автоматический установить кубики на свои места. После пятого этапа нетрудно заметить, что хотя бы один из искомых угловых квадратов стал на свое место, то есть все три цвета на нем соответствуют цветам примыкающих граней, хотя и не совпадают с ними. Поверните кубик рубик так, чтобы указанный сектор находится в левом нижнем углу фасадной грани, и производим алгоритмическую последовательность действий столько раз, сколько потребуется, чтобы все нижние угловые квадраты оказались на своих местах. В результате может получиться следующее: либо все они останутся не ориентированными по цвету, либо один - два угловых квадрата окажутся полностью на местах в конечной положении. Алгоритм действий: П` - Ф` - Л` - Ф - П - Ф` - Л - Ф или Ф` - Л` - Ф - П` - Ф` - Л - Ф - П.

Этап 7. Это окончательная ориентация установленных на свои места, но не совпадающих по цвету с прилежащими гранями, нижних угловых квадратов фасадной стороны. И снова он представляет собой неоднократно повторяемый алгоритм действий. При этом не стоит обращать внимание на разрушение уже собранных частей кубика рубика - при правильной последовательности манипуляций с гранями все возвращается на свои места. Ориентируйте кубик рубик в руках таким образом, чтобы квадрат, который нужно развернуть, оказался в правом верхнем углу фасадной грани. И тут снова в работу включается неизменный восьми - шаговый алгоритм действий, разворачивающий квадрат на 1/3 сектора. Если при первой последовательности манипуляций он не стал как надо - алгоритм повторяется. Еще один переворот на 1/3 сектора и последняя грань стала одного цвета. Итог - кубик рубик собран! Алгоритм действий: П - Ф` - П` - Ф - П - Ф` - П` - Ф. Повторяется от одного до трех раз.


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

Глава 1. Работа в Delphi


Запускается Delphi обычным образом, т.е. выбором из меню Borland Delphi 7 команды Delphi 7 (рис.1).

Рис.1. Запуск Delphi

Вид экрана после запуска Delphi несколько необычен (рис.2). Вместо одного окна на экране появляются пять:

·              главное окно - Delphi 7;

·              окно стартовой формы - Form 1;

·              окно редактора свойств объектов - Object Inspector;

·              окно просмотра списка объектов - Object TreeView;

·              окно редактора кода - Unitl. pas.

Окно редактора кода почти полностью закрыто окном стартовой формы.

Рис.2. Вид экрана после запуска Delphi

В главном окне (рис.3) находится меню команд, панели инструментов и палитра компонентов.

Окно стартовой формы (Forml) представляет собой заготовку главного окна разрабатываемого приложения.

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

Рис.3. Главное окно

Окно Object Inspector (рис.4) - окно редактора свойств объектов предназначено для редактирования значений свойств объектов. В терминологии визуального проектирования объекты - это диалоговые окна и элементы управления (поля ввода и вывода, командные кнопки, переключатели и др.). Свойства объекта - это характеристики, определяющие вид, положение и поведение объекта. Например, свойства width и Height задают размер (ширину и высоту) формы, свойства тор и Left - положение формы на экране, свойство caption - текст заголовка.

Рис.4. На вкладке Properties перечислены свойства объекта и указаны их значения

Рис.5. Окно редактора кода

В окне редактора кода (рис.5), которое можно увидеть, отодвинув в сторону окно формы, следует набирать текст программы. В начале работы над новым проектом это окно редактора кода содержит сформированный Delphi шаблон программы.

Глава 2. Структура программы


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

Стартовая форма создается путем изменения значений свойств формы Form1 и добавления к форме необходимых компонентов (полей ввода и вывода текста, командных кнопок).

Свойства формы (табл.1) определяют ее внешний вид: размер, положение на экране, текст заголовка, вид рамки.

Для просмотра и изменения значений свойств формы и ее компонентов используется окно Object Inspector. В верхней части окна Object Inspector указано имя объекта, значения свойств которого отображается в данный момент. В левой колонке вкладки Properties (Свойства) перечислены свойства объекта, а в правой - указаны их значения.

Таблица 1. Свойства формы (объекта mform)

Свойство

Описание

Name

Имя формы. В программе имя формы используется для управления формой и доступа к компонентам формы

Caption

Текст заголовка

Width

Ширина формы

Height

Высота формы

Top

Расстояние от верхней границы формы до верхней границы экрана

Left

Расстояние от левой границы формы до левой границы экрана

Вид границы. Граница может быть обычной (bsSizeable), тонкой (bs Single) или отсутствовать (bsNone). Если у окна обычная граница, то во время работы программы пользователь может при помощи мыши изменить размер окна. Изменить размер окна с тонкой границей нельзя. Если граница отсутствует, то на экран во время работы программы будет выведено окно без заголовка. Положение и размер такого окна-во время работы программы изменить нельзя

Borderlcons Icon Color Font

Кнопки управления окном. Значение свойства определяет, какие кнопки управления окном будут доступны пользователю во время работы программы. Значение свойства задается путем присвоения значений уточняющим свойствам biSystemMenu, biMinimaze, biMaximaze И biHelp. Свойство biSystemMenu определяет доступность кнопки Свернуть и кнопки системного меню, biMinimaze - кнопки Свернуть, biMaximaze - кнопки Развернуть, biHelp - кнопки вывода справочной информации Значок в заголовке диалогового окна, обозначающий кнопку вывода системного меню Цвет фона. Цвет можно задать, указав название цвета или привязку к текущей цветовой схеме операционной системы. Во втором случае цвет определяется текущей цветовой схемой, выбранным компонентом привязки и меняется при изменении цветовой схемы операционной системы Шрифт. Шрифт, используемый "по умолчанию" компонентами, находящимися на поверхности формы. Изменение свойства Font формы приводит к автоматическому изменению свойства Font компонента, располагающегося на поверхности формы. То есть компоненты наследуют свойство Font от формы (имеется возможность запретить наследование)


При создании формы в первую очередь следует изменить значение свойства caption (Заголовок).

Аналогичным образом можно установить значения свойств Height и width, которые определяют высоту и ширину формы. Размер формы и ее положение на экране, а также размер других элементов управления и их положение на поверхности формы задают в пикселах, т.е. точках экрана. Свойствам Height и width надо присвоить значения 250 и 330 соответственно.

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

Рис.2. Установка значения свойства путем ввода значения

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

При выборе некоторых свойств, например, Borderstyle, справа от текущего значения свойства появляется значок раскрывающегося списка. Очевидно, что значение таких свойств можно задать путем выбора из списка (рис.3).

Некоторые свойства являются сложными, т.е. их значение определяется совокупностью значений других (уточняющих) свойств. Перед именами сложных свойств стоит значок "+", при щелчке на котором раскрывается список уточняющих свойств (рис.4). Например, свойство BorderIcons определяет, какие кнопки управления окном будут доступны во время работы программы. Так, если свойству biMaximize присвоить значение False, то во время работы программы кнопки Развернуть в заголовке окна не будет.

Рис.3. Установка значения свойства путем выбора из списка

Рис.4. Раскрытый список вложенных свойств сложного свойства BorderIcons

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

В табл.2 перечислены свойства формы разрабатываемой программы, которые следует изменить. Остальные свойства оставлены без изменения и в таблице не приведены.

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

Свойство

Значение

Caption

Скорость бега

Height

250

Width

330

BorderStyle

bsSingle

BorderIcons. biMinimize

False

BorderIcons. biMaximize

False

Font. Size

10


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

Рис. 5. Так выглядит форма после установки значений свойств

События

Событие

Происходит

OnClick

При щелчке кнопкой мыши

OnDblClick

При двойном щелчке кнопкой мыши

OnMouseDown

При нажатии кнопки мыши

OnMouseUp

При отпускании кнопки мыши

OnMouseMove

При перемещении мыши

OnKeyPress

При нажатии клавиши клавиатуры

OnKeyDown

При нажатии клавиши клавиатуры. События OnKeyDown и OnKeyPress - это чередующиеся, повторяющиеся события, которые происходят до тех пор, пока не будет отпущена удерживаемая клавиша (в этот момент происходит событие OnKeyUp)

OnKeyUp

При отпускании нажатой клавиши клавиатуры

OnCreate

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

OnPaint

При появлении окна на экране в начале работы программы, после появления части окна, которая, например, была закрыта другим окном, и в других случаях

OnEnter

При получении элементом управления фокуса

OnExit

При потере элементом управления фокуса

Листинг 1. Процедура обработки события OnClick на кнопке Button1 (Вычислить)

// нажатие кнопки Вычислить

procedure TForm1. ButtonlClick (Sender: TObject);

var: integer; // дистанция, метров: real; // время как дробное число: integer; // время, минуты

sek: integer; // время, секунды

v: real; // скорость

// получить исходные данные из полей ввода

dist: = StrToint (Edit1. Text); t: = StrToFloat (Edit2. Text);

// предварительные преобразования: = Trunc (t); // кол-во минут - это целая часть числа t: = Trunc (t*100) mod 100;

// кол-во секунд - это дробная часть

// числа t

// вычисление: = (dist/1000) / ( (min*60 + sek) /3600);

// вывод результата. Caption: = 'Дистанция: '+ Edit1. Text

+ ' м' + #13 + 'Время: ' + IntToStr (min)

+ ' мин ' + IntToStr (sek) + ' сек ' + #13 +

'Скорость: ' + FloatToStrF (v,ffFixed,4,2) + ' км/час';

end;

Листинг 2. Процедура обработки события Onclick на кнопке Button2 (Завершить)

// нажатие кнопки Завершить

procedure TForm1. Button2Click (Sender: TObject);

begin. Close; // закрыть главное окно программы

end;

Глава 3. Описание структуры программы


Скриншоты




program kubik;

uses,in 'Main. pas',in 'About. pas' {Form2},in 'Rules. pas' {Form3},in 'Resul. pas' {Form4},in 'OpenF. pas' {Form1};

{$R *. RES}. Initialize;. CreateForm (TMainF, MainF);. CreateForm (TForm2, Form2);. CreateForm (TForm3, Form3);. CreateForm (TForm4, Form4);. CreateForm (TForm1, Form1);.run;.

unit About;

interface, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,;= class (TForm): TMemo;

{ Private declarations }

{ Public declarations };: TForm2;

{$R *. DFM}.

{$A+,B-,C+,D+,E-,F-,G+,H+, I+,J+,K-,L+,M-,N+,O+,P+,Q-,R-,S-,T-,U-,V+,W-,X+,Y-,Z1}

{$MINSTACKSIZE $00004000}

{$MAXSTACKSIZE $00100000}

{$IMAGEBASE $00400000}

{$APPTYPE GUI}

unit Main;

interface, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,, Buttons, ToolWin, Menus, Grids,About,Rules,Resul, ExtCtrls,OpenF;= class (TForm): TDrawGrid;: TMainMenu;: TStatusBar;: TToolBar;: TToolButton;: TSpeedButton;: TToolButton;: TSpeedButton;: TToolButton;: TSpeedButton;: TToolButton;: TSpeedButton;: TToolButton;: TSpeedButton;: TToolButton;: TSpeedButton;: TToolButton;: TSpeedButton;: TToolButton;: TSpeedButton;: TToolButton;: TSpeedButton;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TSpeedButton;: TMenuItem;: TMenuItem;: TMenuItem;: TImage;: TTimer;Exit1Click (Sender: TObject);SpeedButton10Click (Sender: TObject);About1Click (Sender: TObject);SpeedButton9Click (Sender: TObject);Rules1Click (Sender: TObject);DrawGrid1DrawCell (Sender: TObject; Col, Row: Integer;: TRect; State: TGridDrawState);DrawGrid1MouseDown (Sender: TObject; Button: TMouseButton;: TShiftState; X, Y: Integer);SpeedButton5Click (Sender: TObject);Easy1Click (Sender: TObject);Normal1Click (Sender: TObject);Hard1Click (Sender: TObject);DrawGrid1MouseMove (Sender: TObject; Shift: TShiftState; X,: Integer);SpeedButton4Click (Sender: TObject);Restart1Click (Sender: TObject);SpeedButton7Click (Sender: TObject);Redo1Click (Sender: TObject);SpeedButton6Click (Sender: TObject);Undo1Click (Sender: TObject);FormCreate (Sender: TObject);SpeedButton11Click (Sender: TObject);Results1Click (Sender: TObject);SpeedButton8Click (Sender: TObject);Timer1Timer (Sender: TObject);Pause1Click (Sender: TObject);SpeedButton3Click (Sender: TObject);Save1Click (Sender: TObject);SpeedButton2Click (Sender: TObject);Load1Click (Sender: TObject);

{ Private declarations }

{ Public declarations };= 'Amounts of steps: ';= 'Time: ';= record: string [16];: integer;: integer;;= record: string [10];: integer;: integer;: array [0.3,0.3] of boolean;;= array [1.10] of TBestResult;: TSav;: string;: file of TSav;: TMainF;,fi,un,re,ka: array [0.3,0.3] of boolean;,aRow: integer;,moz,mog: boolean;: Trect;,g,tep: integer;,nam: string;: file of TBestforlevel;: TBestForLevel;: TBestForLevel;,m,clok,rest: boolean; // for Pause: integer;,st: string;: boolean;

{$R *. DFM}

{запись лучшего результата в файл}

procedure Perebor (n: string);,k,j: integer;(Fileb,'Best. res');(FileB);(FileB,g-2);(FileB,BestForLevel);: = BestForLevel;i: = 10 downto 1 do beginstep <= BestForLevel [i]. Step then: = i;j: = k + 1 to 10 do begin[j]. Name: = Bfl [j-1]. Name;[j]. Step: = Bfl [j-1]. Step;[j]. Time: = Bfl [j-1]. Time;;j: = 1 to k - 1 do begin[j]. Name: = Bfl [j]. Name;[j]. Step: = Bfl [j]. Step;[j]. Time: = Bfl [j]. Time;;[k]. Name: = n;[k]. Step: = step;[k]. Time: = ctime;(FileB,g-2);(FileB,BestForLevel);;;(FileB);;

{проверка состояния игры - т. е нет ли выигрыша}

procedure Manipulate (x,y: integer);,j,kol: integer;: = 0;i: = 0 to 3 do[x, i]: = not ar [x, i];i: = 0 to 3 do[i,y]: = not ar [i,y];[x,y]: = not ar [x,y];i: = 0 to 3 do beginj: = 0 to 3 do begin[i,j]: = ar [i,j];;;i: = 0 to 3 do beginj: = 0 to 3 do beginnot ar [i,j] then kol: = kol + 1;;;kol = 16 then beginstep = 0 then exit;: = false;. DrawGrid1. Enabled: = false;. StatusBar1. Panels [0]. Text: =st0+' 0';. StatusBar1. Panels [1]. text: =st1+IntToStr (0);MessageDlg ('Congratulation!!! You finish the Game!!! Will you save your result? ',mtCustom, [mbYes,mbNo],0) =mrYes then. DrawGrid1. Repaint;: = false;(Fileb,'Best. res');(FileB);(FileB,g-2);(FileB,BestForLevel);(FileB);step > BestForLevel [10]. Step then MessageDlg ('Sorry! But your result very small for saving! ',mtCustom, [mbYes],0)begin('Please. ','. Input your Name!!! ',nam);(nam);;begin

exit;;;;

{создание новой игры; к - сложность, она выражается в том сколько оперций запутывания игрового поля произойдет при его создании}

procedure NewGame (k: integer);, i,r,c: integer;MainF. SpeedButton8. ParentFont then begin: = true;: = 0;: = true;: = 00;: = false;: = false;. DrawGrid1. Enabled: = true;. DrawGrid1. Color: = clBlue;. DrawGrid1. Repaint;. StatusBar1. Panels [0]. Text: =st0+' 0';i: =1 to 3*k do: =random (3);: =random (3);(c,r);. DrawGrid1. Repaint;;i: =0 to 3 doj: =0 to 3 do[i,j]: =ar [i,j];;

end;;;

{выход из приложения}

procedure TMainF. Exit1Click (Sender: TObject);;;

{выход из приложения}TMainF. SpeedButton10Click (Sender: TObject);

begin;;

{показывает форму информации о приложении}

procedure TMainF. About1Click (Sender: TObject);. Form2. ShowModal;;

{показывает форму информации о приложении}

procedure TMainF. SpeedButton9Click (Sender: TObject);. Form2. ShowModal;;

{показывает форму правил игры}TMainF.rules1Click (Sender: TObject);. Form3. ShowModal;;

{перерисовка клетки на игровом поле}

procedure TMainF. DrawGrid1DrawCell (Sender: TObject; Col, Row: Integer;: TRect; State: TGridDrawState);DrawGrid1. Canvas doar [col,row] then Brush. Color: = clTealBrush. Color: = clBlue;(Rect);

end;;

{перерисовка клетки на игровом поле по клику на ней мышкой}

procedure TMainF. DrawGrid1MouseDown (Sender: TObject; Button: TMouseButton;: TShiftState; X, Y: Integer);,b: integer;,j: integer;: = true;: = step + 1;: = step;(step: 3,ster);. StatusBar1. Panels [0]. Text: =st0+ster;: = true;: = false;. MouseToCell (x,y,A,B);i: = 0 to 3 do beginj: = 0 to 3 do begin[i,j]: =ar [i,j];;;(A,B);. DrawGrid1. Repaint;

end;

{показывет форму с лучшими результатами}

procedure TMainF. SpeedButton5Click (Sender: TObject);: integer;g = 0 then g: = 2;g = 2 then Form4. Label1. Caption: = ' Easy';g = 3 then Form4. Label1. Caption: = ' Normal';g = 4 then Form4. Label1. Caption: = ' Hard ';. StrGrid. Cells [0,0]: ='The Name: ';. StrGrid. Cells [1,0]: ='Steps: ';. StrGrid. Cells [2,0]: ='Time: ';(Fileb,'Best. res');(FileB);(FileB,g - 2);(FileB,BestForLevel);i: = 1 to 10 do begin. StrGrid. Cells [0, i]: = BestForLevel [i]. Name; // // // // . StrGrid. Cells [1, i]: = IntToStr (BestForLevel [i]. Step);. StrGrid. Cells [2, i]: = IntToStr (BestForLevel [i]. Time);;(FileB);. Form4. ShowModal;

end;

{создание новой игры с минимальной сложностью}

procedure TMainF. Easy1Click (Sender: TObject);: = 2;(g);;

{создание новой игры со средней сложностью}

procedure TMainF. Normal1Click (Sender: TObject);: = 3;(g);;

{создание новой игры с максимальной сложностью}

procedure TMainF. Hard1Click (Sender: TObject);: = 4;(g);;

procedure TMainF. DrawGrid1MouseMove (Sender: TObject; Shift: TShiftState; X,: Integer);. Cursor: =crHandPoint;

end;

{сбрасывает игровое поле в состояние при начале игры}

procedure Restartf;,j: integer;rest then begin: =0;(step: 3,ster);. StatusBar1. Panels [0]. Text: =st0+ster;: = false;: = false;MainF. DrawGrid1. Canvas doi: =0 to 3 doj: =0 to 3 do[i,j]: = fi [i,j];;;. DrawGrid1. Repaint;

end;;;

{сбрасывает игровое поле в состояние при начале игры}

procedure TMainF. SpeedButton4Click (Sender: TObject);

begin;;

{сбрасывает игровое поле в состояние при начале игры}

procedure TMainF. Restart1Click (Sender: TObject);

begin;;

{возвращает отмененный с помощью undo ход}

procedure RedoN;,j: integer;: = true;: = step - 1;: = step;(step: 3,ster);. StatusBar1. Panels [0]. Text: =st0+ster;i: =0 to 3 do beginj: =0 to 3 do begin[i,j]: = fi [i,j];;;i: =0 to 3 do beginj: =0 to 3 do begin[i,j]: = un [i,j];;;;i: =0 to 3 do beginj: =0 to 3 do begin[i,j]: = re [i,j];;;: = true;: = tep;(step: 3,ster);. StatusBar1. Panels [0]. Text: =st0+ster;

end;

{отменяет последний ход}UndoF;

var,j: integer;: = step + 1;: = step;(step: 3,ster);. StatusBar1. Panels [0]. Text: =st0+ster;i: =0 to 3 do beginj: =0 to 3 do begin[i,j]: = fi [i,j];;;i: =0 to 3 do beginj: =0 to 3 do begin[i,j]: = ka [i,j];;;;i: =0 to 3 do beginj: =0 to 3 do begin[i,j]: = re [i,j];;;: = true;: = tep;(step: 3,ster);. StatusBar1. Panels [0]. Text: =st0+ster;

end;

{возвращает отмененный с помощью undo ход}

procedure TMainF. SpeedButton7Click (Sender: TObject);moz then;

end;

{возвращает отмененный с помощью undo ход}

procedure TMainF. Redo1Click (Sender: TObject);moz then;;

{отменяет последний ход}TMainF. SpeedButton6Click (Sender: TObject);mog then;;

{отменяет последний ход}TMainF. Undo1Click (Sender: TObject);mog then;;TMainF. FormCreate (Sender: TObject);: integer;: = 2;: = false;not FileExists ('best. res') then begin(FileB,'best. res');(FileB);i: = 1 to 10 do begin[i]. name: = 'UnKnown';[i]. time: = 0;[i]. step: = 9999;;i: = 1 to 3 do(FileB,Bestforlevel);(FileB);;not FileExists ('saving. sav') then begin(Fild,'saving. sav');(Fild);(FilD);;;;

{начинает новую игру}TMainF. SpeedButton11Click (Sender: TObject);

begin(g);;

{показывет лучшие результаты}

procedure TMainF. Results1Click (Sender: TObject);i: integer;g = 0 then g: = 2;g = 2 then Form4. Label1. Caption: = ' Easy';g = 3 then Form4. Label1. Caption: = ' Normal';g = 4 then Form4. Label1. Caption: = ' Hard ';. StrGrid. Cells [0,0]: ='The Name: ';. StrGrid. Cells [1,0]: ='Steps: ';. StrGrid. Cells [2,0]: ='Time: ';(Fileb,'Best. res');(FileB);(FileB,g - 2);(FileB,BestForLevel);i: = 1 to 10 do begin. StrGrid. Cells [0, i]: = BestForLevel [i]. Name; // // // // . StrGrid. Cells [1, i]: = IntToStr (BestForLevel [i]. Step);. StrGrid. Cells [2, i]: = IntToStr (BestForLevel [i]. Time);;(FileB);. Form4. ShowModal;

end;

{ставит игру на паузу - т. е перекрывет игровое поле картинкой и останавливает время}

procedure Pause;MainF. SpeedButton8. ParentFont then begin. DrawGrid1. Visible: = false;. Image1. Visible: = true;. SpeedButton8. ParentFont: = false;: = moz;: = mog;: = false;: = false;: = false;: = False;begin. DrawGrid1. Visible: = true;. Image1. Visible: = false;. SpeedButton8. ParentFont: = true;: = k;: = m;: = true;: = true;

end;;

{ставит игру на паузу - т. е перекрывет игровое поле картинкой и останавливает время}

procedure TMainF. SpeedButton8Click (Sender: TObject);

begin;;

{считает время с начала текщуей партии}

procedure TMainF. Timer1Timer (Sender: TObject);clok then begin(ctime);. Panels [1]. text: =st1+IntToStr (ctime);

end;;

{ствит игру на паузу - т. е перекрывет игровое поле картинкой и останавливает время}

procedure TMainF. Pause1Click (Sender: TObject);

begin;;

{сохраняет текущее состояние игры в файл}

procedure savve;,j,n: integer;: Tsav;seve then begin: = false;. StringGrid1. RowCount: = Form1. StringGrid1. RowCount + 1;('Enter the name for your save: ',' Please!!! ',named);(Fild,'Saving. sav');(Fild);: = FileSize (Fild);: = n;(Fild,0);not n = 0 then begini: =0 to n do begin: = i;(FilD, i);(Fild,sa);sa. neme = named then begin('The save with this name already exist! ','Input another name: ',named);sa. neme = named then j: = n+1;;;;;i = n then seek (Fild,FileSize (Fild));j = n + 1 then seek (Fild, i);. neme: = named;. stepd: = step;. timed: = ctime;i: = 0 to 3 do beginj: = 0 to 3 do begin. mas [i,j]: = ar [i,j];;;(Fild,asa);(Fild);: = true;;

end;

{загружает игру из файла}

procedure lodde;,n,j: integer;,b,k: integer;: string;(Fild,'saving. sav');(Fild);: = FileSize (Fild);. StringGrid1. RowCount: = k;(Fild);: = false;(Fild,'saving. sav');(Fild);: = FileSize (Fild);n = 0 then exit;(Fild,0);i: = 0 to n-1 do begin(Fild,sa);. StringGrid1. Cells [0, i]: = sa. neme;;. ShowModal;(Fild,y1);(FilD,sa);sa. neme <> '' then begin: = sa. stepd;: = sa. timed;i: = 0 to 3 do beginj: = 0 to 3 do begin[i,j]: = sa. mas [i,j];[i,j]: = ar [i,j];;;: = true;. StatusBar1. Panels [0]. Text: = st0+' '+ IntToStr (step);. DrawGrid1. Repaint;. DrawGrid1. Enabled: = true;;(Fild);: = true;

end;

{сохраняет текущее состояние игры в файл}

procedure TMainF. SpeedButton3Click (Sender: TObject);

begin;;

{сохраняет текущее состояние игры в файл}

procedure TMainF. Save1Click (Sender: TObject);;;

{загружает игру из файла}TMainF. SpeedButton2Click (Sender: TObject);;;

{загружает игру из файла}TMainF. Load1Click (Sender: TObject);;;.

unit OpenF;

interface, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,, Grids;= class (TForm): TStringGrid;: TLabel;: TLabel;StringGrid1MouseDown (Sender: TObject; Button: TMouseButton;: TShiftState; X, Y: Integer);StringGrid1Click (Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm1;,y1: integer;

{$R *. DFM}TForm1. StringGrid1MouseDown (Sender: TObject;: TMouseButton; Shift: TShiftState; X, Y: Integer);. MouseToCell (x,y,x1,y1);;TForm1. StringGrid1Click (Sender: TObject);;;.

unit Resul;

interface, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,, StdCtrls;= class (TForm): TStringGrid;: TLabel;

{ Private declarations }

{ Public declarations };: TForm4;

{$R *. DFM}.

unit Rules;

interface, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,;= class (TForm): TMemo;

{ Private declarations }

{ Public declarations };: TForm3;

{$R *. DFM}.

[Compiler]

[Linker]=0=0=1=0=16384=1048576=4194304=

[Directories]====VCLX30; VCL30; VCLDB30; VCLDBX30; INETDB30; INET30; VCLSMP30; QRPT30; TEEUI30; TEEDB30; TEE30; DSS30; IBEVNT30===0

[Parameters]==

[Version Info]=0=0=1=0=0=0=0=0=0=0=0=1049=1251

[Version Info Keys]===1.0.0.0======1.0.0.0

Comments=

 


Заключение


Я считаю, что при выполнении своей работы я достигла поставленной цели по разработке и введению в действие программы, написанной на языке Delphi.

Все задачи мною решены:

ü  разработана структура моей программы.

ü  в необходимом объеме самостоятельно освоены нужные программы: Delphi.

ü  оформление удовлетворяет основным требованиям;

Программа протестирована.

В дальнейшем я хотела бы более подробно изучить язык программирования Delphi и еще какие-нибудь интересные языки, как Java, C++, и создать более интересные программы, а если быть более точным - игру для мобильного телефона.

Список используемой литературы

1.      Самоучитель Delphi, Максим Кузнецов, Игорь Симдянов <http://oz.by/books/more.phtml?id=1011462&partner=w3partoz&isw=1024&ish=768>.560 стр., 2004 г. Издательство: BHV <http://oz.by/producer/more1203.html>.

.        Самоучитель Delphi 4, Д. Котеров. Издательство - БХВ-Петербург Год издпния - 1/1/2001

.        Самоучитель Delphi 5. Колисниченко Д.Н., Наука и техника - 2005, 567 стр.

.        Фленов М.Е. Библия Delphi

.        Ковтанюк Ю.С. Программирование на Turbo Pascal

.        Ремнев Анатолий Курс Delphi для начинающих. Полигон нестандартных задач

Рецензия

 

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

Больших успехов Вероника достигла в изучении PHP и Delphi. У нее есть несколько самостоятельно написанных работ на этом языке.

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

Для разработки этой игры автор работы освоила в необходимом объеме такой язык программирования, как Delphi и протестировала эту игру.

Нет сомнения, что данная работа будет интересна всем, кто с помощью Delphi хочет организовать общение между друзьями.

Похожие работы на - Особенности работы в среде программирования Delphi

 

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