Моделирование логических игровых программ средствами Delphi

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

КУРСОВАЯ РАБОТА

по дисциплине «Основы алгоритмизации и программирования»

Тема: «Моделирование логических игровых программ средствами Delphi»

Реферат

Курсовая работа: ___ с., 10 рис., 7 источников, 2 прил., 5 табл.

СРЕДА DELPHI, ГРАФИЧЕСКАЯ ПРОГРАММА, ПОСТРОЕНИЕ ФРАКТАЛА, ВЕРОЯТНОСТНЫЕ РАСПРЕДЕЛЕНИЯ

Объект исследования — применение среды программирования Borland Delphi с целью изучения возможности отображения графической информации, построения фракталов.

Предмет исследования — среда Borland Delphi и ее графические средства для построения фрактальных множеств.

Цель работы — написать программу на Borland Delphi для построения изображения листа папоротника при помощи вероятностных распределений с использованием средств для отображения графической информации.

Основой для выполнения работы стала справочная, научная и учебная литература.

При выполнении работы использовался метод: анализ научно-методической литературы, проектов.

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

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

delphi среда программа графический

Содержание

  • Введение
  • 1. Теоретическая часть
  • 1.1 Постановка задачи
  • 1.2 Математическая модель фрактала «Лист папоротника»
  • 1.3 Алгоритм решения задачи
  • 1.4 Блок-схема алгоритма решения задачи
  • 2. Практическая часть
  • 2.1 Описание объектов, свойств, методов
  • 2.2 Формы и основные модули текста программы в среде Delphi
  • 2.3 Результаты тестирования программного продукта
  • 2.4 Анализ результатов тестирования программы
  • Заключение
  • Список использованых источников
  • Приложения

Введение

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

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

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

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

Фрактамл (лат. fractus — дроблёный, сломанный, разбитый) — геометрическая фигура, обладающая свойством самоподобия, то есть составленная из нескольких частей, каждая из которых подобна всей фигуре вцелом.

Роль фракталов в машинной графике сегодня достаточно велика. Они приходят на помощь, например, когда требуется, с помощью нескольких коэффициентов, задать линии и поверхности очень сложной формы. С точки зрения машинной графики, фрактальная геометрия незаменима при генерации искусственных облаков, гор, деревьев, поверхности моря. Фактически это способ легкого представления сложных объектов, образы которых весьма похожи на природные [1].

В качестве примера фрактальных структур мы рассмотрим множество или фрактал «Лист папоротника» — один из тех объектов, которые удобно строить при помощи вероятностных распределений.

Объект исследования — применение среды программирования Borland Delphi с целью изучения возможности отображения графической информации, построения фракталов.

Предмет исследования — среда Borland Delphi и ее графические средства для построения фрактальных множеств.

Цель работы — написать программу на Borland Delphi для построения изображения листа папоротника при помощи вероятностных распределений с использованием средств для отображения графической информации.

Для достижения данной цели в исследовании необходимо решить следующие задачи:

· осуществить постановку задачи;

· создать блок-схемы алгоритмов;

· осуществить описание объектов, свойств, методов;

· разработать формы и текст программы;

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

Основой для выполнения работы стала справочная, научная и учебная литература.

Основным методом исследования был выбран общенаучный метод анализа.

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

К работе прилагается электронный носитель информации.

1. Теоретическая часть

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

Задачей курсовой работы является: построение фрактала «Лист папоротника».

Для достижения данной цели необходимо составить приложение в среде Delphi. Приложение должно строить изображение фрактала «лист папоротника» с использованием графических средств среды Delphi при помощью метода многократных итераций (повторений).

1.2 Математическая модель фрактала «Лист папоротника»

Для построения фрактала используется подход, называемый методом итерируемых функций или IFS-методом (аббревиатура IFS происходит от английских слов iterated function system). IFS-метод основан на аффинных (от лат. affinis — родственный) преобразованиях координат точек по формулам:

X=ax+by+e, (1. 1)

где a, b, e-заданные коэффициенты, x, y-текущие координаты, X-вновь вычисленная координата.

Y=cx+dy+f, (1. 2)

где c, d, f — заданные коэффициенты, x, y — текущие координаты, Y — вновь вычисленная координата [2].

Основная идея этого метода заключается в том, чтобы, зафиксировав какую-либо начальную точку, далее циклически совершать афинное преобразование системы координат, в которой точка строится. То есть, если на определённом шаге цикла имеется точка, А с координатами (х, y), то при следующей итерации цикла изображается точка В, чьи координаты имеют вид (ax+by+e, cx+dy+f). Таким образом наблюдается явное выражение «новой» системы координат (точки В) через «старую» (точку А).

В свою очередь коэффициенты преобразования систем координат выбираются в зависимости от попадания некоторой случайной величины в соответствующий диапазон значений [3].

1.3 Алгоритм решения задачи

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

А) Константа iterations отвечает за количество итераций (повторений) случайного рисования точки как мельчайшей составляющей изображения листа папоротника. Остальные переменные отвечают за размеры и координаты изображения.

Б) В теле процедуры создадим систему, которая задаст масштаб и координаты фрактала. Зададим исходные данные для итерируемой точки.

В) При помощи цикла for реализуем выполнение итераций.

Г) В теле процедуры используем случайное преобразование координаты точки. Выберем диапазоны для случайной величины (от 0 до 0. 85 — соответствует преобразованию множества точек, отвечающих за «густоту» и «высоту» листа папоротника, от 0. 85 до 0. 92 — рисует листики слева от стебля, от 0. 92 до 0. 99 — рисует листики справа от стебля, остальные диапазоны — изображение стебля). Координаты точки в разных диапазонах преобразуются по формулам: X=ax+by+e, Y=cx+dy+f. Логическое выполнение программы осуществляют операторы if и else.

2) Выведем результат на графический компонент Image.

1.4 Блок-схема алгоритма решения задачи

На рисунке 1.1 приведена блок-схема алгоритма построения фрактала «Лист папоротника».

Рисунок 1. 1 - блок-схема алгоритма построения фрактала

2. Практическая часть

2.1 Описание объектов, свойств, методов

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

Компонент Button

Компонент Button представляет собой командную кнопку [4]. Свойства компонента приведены в таблице 2.1.

Таблица 2.1 Свойства компонента Button (командная кнопка)

Name

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

Caption

Текст на кнопке

Left

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

Top

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

Height

Высота кнопки

Width

Ширина кнопки

Enabled

Признак доступности кнопки. Если значение свойства равно True, то кнопка доступна. Если значение свойства равно False, то кнопка не доступна, например, в результате щелчка на кнопке событие Click не возникает

Visible

Позволяет скрыть кнопку (False) или сделать ее видимой (True)

Hint

Подсказка — текст, который появляется рядом с указателем мыши при позиционировании указателя на командной кнопке

ShowHint

Разрешает (True) или запрещает (False) отображение подсказки при позиционировании указателя на кнопке

Компонент Image

Компонент представляет собой некоторую ограниченную поверхность с канвой, на которую можно заносить изображения. Компонент намного богаче по своим возможностям и удобнее, чем обычное рисование на канве [5].

Свойства компонента приведены в таблице 2.2.

Таблица 2.2 — Свойства компонента Image

Picture

Изображение отображающееся в поле компонента

Width, Height

Размеры компонента. Если эти размеры меньше размера иллюстрации, а значение свойств Strech, AutoSize и Proportional равны False, то отображается часть изображения.

Proportional

позволяет автоматически масштабировать картинки без искажения. Для выполнения масштабирования, значение свойства AutoSize должно быть равным False

Strech

позволяет автоматически масштабировать (сжимать или растягивать) изображение в соответствии с размером компонента Image. Если размер компонента не пропорционален размеру изображения, то изображение будет искажено

AutoSize

позволяет автоматически изменять размер компонента в соответствии с размером изображения

Center

позволяет определять расположение изображения в поле компонента Image по горизонтали, если ширина картинки меньше ширины компонента. Если свойства равно False, то изображение прижато к правой границе, если True то изображение располагается по центру

Canvas

поверхность, позволяющая вывести графику

Transparent

указывает прозрачный цвет фона изображения

Свойство Canvas

Canvas представляет из себя область компонента, на которой можно создавать, хранить и модифицировать графическое изображение [4].

Свойства класса TCanvas приведены в таблице 2.3.

Таблица 2.3 — Свойства класса TCanvas.

Pen

Карандаш. Определяет цвет, стиль и толщинц линии, которую рисует, например метод Lineto

PenPos

Положение (координаты) карандаша

Brush

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

Font

Шрифт. Определяет шрифт, который используется для вывода текста, например методом TextOut.

Таблица 2.4 — Meтоды класса TCanvas:

Lineto (x, y)

Рисует линию из текущей точки в точку с указанными координатами (перемещение указателя текущей точки в нужную обеспечивает метод Moveto). Цвет динии определяется свойством Pen. Color.

Rectangle (x1,y1, x2, y2)

Рисует прямоугольник. Параметры x1, y1указывают координаты верхней левой точки, аx2, y2 координаты нижней правой точки. Цвет границы прямоугольника определяет свойство Pen. Color, цвет закраски области Ї свойствоBrush. Color.

RoundRect (x1, y1, x2, y2, x3, y3)

Рисует прямоугольник со скругленными углами. Параметры x1, y1 указывают координаты верхней левой точки, x2, y2 координаты нижней правой точки, а x3, y3 радиус скругления. Цвет границы прямоугольника определяет свойство Pen. Color, цветзакраски области Ї свойство Brush. Color.

Ellipse (x1, y1, x2, y2)

Рисует эллиспс (окружность). Параметры x1, y1указывают координаты верхней левой точки, аx2, y2 координаты нижней правой точки прямоугольника в который вписана окружность. Цвет границы прямоугольника определяет

свойство Pen. Color, цвет закраски области Їсвойство Brush. Color.

Arc (x1, y1, x2, y2, x3, y3, x4, y4)

Рисует дугу. Параметры x1, y1, x2 и y2 задают эллипс, частью которого является дуга, параметры x3, y3, x4 и y4 Ї начальную и конечную точку дуги. Цвет дуги определяет свойство Pen. Color.

Pie (x1,y1,x2,y2,x3,y3,x4,y4)

Рисует сектор. Параметры x1, y1, x2 и y2 задают эллипс, частью которого является сектор, параметры x3, y3, x4 и y4 Їграницы сектора. Цвет границы сектора определяет свойствоPen. Color, цвет закраски сектора Ї свойствоBrush. Color.

FrameRect (aRect)

Рисует контур прямоугольника. ПараметрaRect (тип TRect) определяет положение и размер прямоугольника. Цвет контура определяет свойство Brush. Color.

Polyline (points, n)

Рисует ломаную линию. Points Ї массив типаTPoint. Каждый элемент массива представляет собой запись, поля x и y которые содержат координаты точки перегиба ломаной. n Їколичество звеньев ломаной. МетодPolyline вычерчивает ломанную линию, последовательно соединяя прямые точки, координаты которых находятся в массиве: перевую со второй, вторую с третьей, третью с четвертой и т. д.

Компонент Label

Данный компонент предназначен для отображения текстовой информации. Задать текст, отображаемый в поле компонента можно как во время разработки формы, так и во время работы программы, присвоив значение свойству Text [6]. Свойства компонента приведены в таблице 2.4.

Таблица 2.5 — Свойства компонента Label

Name

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

Text

содержит отображаемый текст

Location

Положение компонента на поверхности формы

Size

Размер компонента (поля отображения текста)

Font

Шрифт, используемый для отображения текста

ForeColor

Цвет текста, отображаемого в поле компонента

BackColor

Цвет закраски области вывода текста

TextAlign

Способ выравнивания (расположения) текста в поле компонента. На практике используют выравнивание по левой и верхней границам (TopLeft), по середине (TopCentre) и по центру (MiddleCenter)

BorderStyle

Вид рамки (границы) компонента. По умолчанию вокруг поля Label отсутствует (значение свойства равно None). Граница компонента может быть обычной (Fixed3D) или тонкой (FixedSingle)

2.2 Формы и основные модули текста программы в среде Delphi

При решении поставленной задачи будут использованы следующие объекты:

Рисунок 2. 1 - объекты главной формы

Button — командная кнопка;

Image — компонента для вывода графической информации;

Рисунок 2. 2 - объекты дополнительной формы

Label — информационные метки;

Основная форма приложения имеет вид:

Рисунок 2. 3 - вид основной формы программы

Дополнительная форма выглядит так:

Рисунок 2. 4 - вид дополнительной формы программы

Основной модуль текста программы:

procedure gf;

const

iterations = 500 000; // Кол-во итераций

var

t, x, y: real;

p: real; // Случайная величина

k: longint;

mid_x, mid_y, radius: integer;

begin

mid_x: = form1. width div 2;

mid_y: = form1. height — 200; // Масштабирование и координирование изображения

radius: = trunc (0.1 * mid_y);

randomize;

x: = 1. 0;

y: = 0. 0;

for k: = 1 to iterations do

begin

p: = random;

t: = x;

if p <= 0. 85 then // Построение верхней части листа

begin

x: = 0. 84 * x — 0. 045 * y;

y: = 0. 045 * t + 0. 86 * y + 1. 6;

end

else

if p <= 0. 92 then // Построение левого листа

begin

x: = 0. 25 * x — 0. 26 * y;

y: = 0. 23 * t + 0. 25 * y + 1. 6;

end

else

if p <= 0. 99 then // Построение стебля

begin

x: = - 0. 135 * x + 0. 28 * y;

y: = 0. 26 * t + 0. 245 * y + 0. 44;

end

else

begin

x: = 0. 0;

y: = 0. 16 * y;

end;

Form1. image1. Canvas. Pixels [mid_x+round (radius*x), mid_y-round (radius*y) +35]: =clGreen // Вывод изображения

end;

end;

2.3 Результаты тестирования программного продукта

Кратко о программе:

· Код главной формы находится в Unit1. pas (Приложение А)

· Кнопка «Очистить форму» становится доступной только после нажатия на кнопку «Изобразить фрактал».

· Изображение фрактала «Лист папоротника» получается при нажатии кнопки «Изобразить фрактал». При этом данная кнопка становится не активной, т.к. в повторных итерациях нет необходимости. Кнопка «Очистить форму» становится доступной.

· Канва компонента Image очищается нажатием на кнопку «Очистить форму».

· При нажатии кнопки «Об авторе» главная форма становится невидимой, а дополнительная, содержащая информацию об создателе приложения появляется на экране.

· Код второй формы находится в Unit2. pas (Приложение Б)

· Кнопка «Вернуться назад» возвращает пользователя на исходную форму.

· Закрыть приложение можно, нажав на кнопку «Закрыть», стандартно располагающуюся в верхнем правом углу программы.

Для открытия программы нужно запустить файл Project1. exe.

Программа выглядит так:

Рисунок 2. 5 - визуальное представление программы

1. Для получения изображения листа папоротника нужно нажать кнопку «Изобразить фрактал».

Рисунок 2. 6 - результат нажатия кнопки «Изобразить фрактал»

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

Рисунок 2. 7 - при очистке формы

3. Так же можно узнать информацию об авторе данного приложения, нажав на кнопку «Об авторе».

Рисунок 2. 8 - информация о создателе приложения

4. При нажатии кнопки «Вернуться назад» пользователь переместится на главную форму.

Рисунок 2. 9 - Вернуться назад

5. Закрытие программы осуществляется нажатием на кнопку «Закрыть», стандартно располагающуюся в верхнем правом углу программы.

2.4 Анализ результатов тестирования программы

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

При запуске приложения все кнопки, вкладки, команды меню работают правильно.

Заключение

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

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

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

1. Сжатие изображений и информации

2. Сокрытие информации на изображении, в звуке

3. Шифрование данных с помощью фрактальных алгоритмов

4. Создание фрактальной музыки

5. Моделирование систем [7].

Данное приложение можно использовать для ознакомления с графическими средствами среды программирования Borland Delphi, а также для приобретения представлений о практическом применении фрактальных множеств.

Приложение можно доработать и использовать для создания более сложных фракталов.

Таким образом, поставленные цели были достигнуты, цели работы были выполнены.

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

1. http: //ru. wikipedia. org/wiki/Фрактал

2. http: //www. kv. by/index2002491201. htm

3. http: //www. opita. net/node/597

4. Бобровский С. И. Delphi 7. Учебный курс / С. И. Бобровский. — Санкт-Петербург: Питер, 2011. — 736 с.

5. Бугров Я. С. Высшая математика / Я. С. Бугров, С. М. Никольский. — Москва: Дрофа, 2004. — 288 с.

6. Культин Н. Б. Основы программирования в Delphi 8 для Microsoft. net Framework. Самоучитель. — Санкт-Петербург, 2004. — 400с.

7. Кроновер Р. М. Фракталы и хаос в динамических системах. Основы теории. / Р. М Кроновер. — Москва: Постмаркет, 2010. — 352 с.

Приложения

Приложение А

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

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, ExtCtrls, XPMan;

type

TForm1 = class (TForm)

Button1: TButton;

Button2: TButton;

image1: TImage;

xpmanifest1: TXPManifest;

Button3: TButton;

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure Button3Click (Sender: TObject);

procedure FormCreate (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *. dfm}

uses unit2;

procedure gf;

const

iterations = 500 000; // Кол-во итераций

var

t, x, y: real;

p: real; // Случайная величина

k: longint;

mid_x, mid_y, radius: integer;

begin

mid_x: = form1. width div 2;

mid_y: = form1. height — 200; // Масштабирование и координирование изображения

radius: = trunc (0.1 * mid_y);

randomize;

x: = 1. 0;

y: = 0. 0;

for k: = 1 to iterations do

begin

p: = random;

t: = x;

if p <= 0. 85 then // Построение верхней части листа

begin

x: = 0. 84 * x — 0. 045 * y;

y: = 0. 045 * t + 0. 86 * y + 1. 6;

end

else

if p <= 0. 92 then // Построение левого листа

begin

x: = 0. 25 * x — 0. 26 * y;

y: = 0. 23 * t + 0. 25 * y + 1. 6;

end

else

if p <= 0. 99 then // Построение стебля

begin

x: = - 0. 135 * x + 0. 28 * y;

y: = 0. 26 * t + 0. 245 * y + 0. 44;

end

else

begin

x: = 0. 0;

y: = 0. 16 * y;

end;

Form1. image1. Canvas. Pixels [mid_x+round (radius*x), mid_y-round (radius*y) +35]: =clGreen

end; // Вывод изображения

end;

procedure TForm1. Button1Click (Sender: TObject); // Инициализация построения фрактала

begin

gf;

button1. enabled: =false;

Button3. Enabled: =True;

end;

procedure TForm1. Button2Click (Sender: TObject); // Кнопка «Об авторе»

begin

form1. Visible: =false;

form2. show;

end;

procedure TForm1. Button3Click (Sender: TObject); // Кнопка «Очистить форму»

begin

image1. Canvas. Rectangle (0,0,ClientHeight, ClientWidth);

Button3. Enabled: =False;

Button1. Enabled: =True;

end;

procedure TForm1. FormCreate (Sender: TObject); // Исходные параметры формы

begin

Button3. Enabled: =False;

image1. Canvas. Rectangle (0,0,ClientHeight, ClientWidth);

Form1. BorderIcons: = [biSystemMenu, biMinimize];

end;

end.

Приложение Б

Вторая форма

unit Unit2;

interface

uses

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

Dialogs, StdCtrls, jpeg, ExtCtrls;

type

TForm2 = class (TForm)

Label1: TLabel;

Button1: TButton;

label2: TLabel;

procedure Button1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

{$R *. dfm}

uses unit1;

procedure TForm2. Button1Click (Sender: TObject); // Кнопка «Вернуться назад»

begin

form2. Visible: =false;

form1. show;

end;

end.

ПоказатьСвернуть
Заполнить форму текущей работой