Как сделать игру в delphi

Создать игру, Конструкторы игр, Игровые движки, Разработка игр, Игровые ресурсы

Как сделать игру в delphi. Смотреть фото Как сделать игру в delphi. Смотреть картинку Как сделать игру в delphi. Картинка про Как сделать игру в delphi. Фото Как сделать игру в delphiКак сделать игру в delphi. Смотреть фото Как сделать игру в delphi. Смотреть картинку Как сделать игру в delphi. Картинка про Как сделать игру в delphi. Фото Как сделать игру в delphi

10 Лучших пользователей

/—>

Партнеры сайта
.

Как сделать игру в delphi. Смотреть фото Как сделать игру в delphi. Смотреть картинку Как сделать игру в delphi. Картинка про Как сделать игру в delphi. Фото Как сделать игру в delphiКак сделать игру в delphi. Смотреть фото Как сделать игру в delphi. Смотреть картинку Как сделать игру в delphi. Картинка про Как сделать игру в delphi. Фото Как сделать игру в delphi

Учимся писать игру на Delphi

Что такое ЛКИ-Creator?

В самом деле, почему за основу мы взяли Delphi, а не, скажем, С++?
Не хотелось бы вдаваться в спор о том, какой из двух языков лучше; и так куча форумов в интернете полна ругани на эту тему. У обоих языков есть свои преимущества. Вот какие достоинства Delphi заставили нас выбрать именно его:
• Программу на Delphi намного легче понимать и отлаживать, особенно для не очень опытного программиста. Освоить Delphi можно за несколько часов, а вот привыкнуть к С++ гораздо сложнее.
• Работая с Delphi, мы можем немалую часть работы выполнить «мышкой», просто расставив нужные элементы интерфейса по экрану. Аналогичные средства Visual C несколько менее удобны для начинающего.
Конечно, у С++ тоже есть свое преимущество: для него есть больше библиотек с готовым кодом. Но, во-первых, в последнее время Delphi его догоняет, а во-вторых, для этого-то нам и пригодится ЛКИ-Creator.
Популярное мнение, будто бы программы на С работают намного быстрее, нежели на Delphi, уже давно не соответствует действительности. Оно отстало от жизни примерно лет на 7-8. Тесты показывают, что код, создаваемый Delphi, обычно не отстает от кода Visual C, а зачастую его превосходит.

Что нужно знать, чтобы начать работу?

Подготовка к работе

Эта строка велит нашему движку запуститься, а также сообщает ему, что он расположен на форме Form1.
C закрытием формы будет не сложнее:

Класс TStarEscortWorld
TStarEscortWorld = class(TLKIGameWorld)
сonstructor Create(aTick : integer;
aEngine : TLKI2dEngine);
function Process(Tick : integer) : boolean; override;
end;

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

Задаем начальные значения

Конструктор игрового мира

constructor TStarEscortWorld.Create(aTick : integer;
aEngine : TLKI2dEngine);
var i : integer;
begin
// Размеры и координаты
inherited Create(aTick, aEngine, 0, 0,
15000, 3000);
StartX := 1000;
StartY := 1100;
// Грузим картинки
AddSprite(‘Ship.bmp’,2,true,5); //0
AddSprite(‘st1.bmp’); //1
AddSprite(‘st2.bmp’); //2
AddSprite(‘st3.bmp’); //3
AddSprite(‘st4.bmp’); //4
AddSprite(‘st5.bmp’); //5
AddSprite(‘Base.bmp’); //6
AddSprite(‘Trans.bmp’,1,true,5); //7
AddSprite(‘Rocket.bmp’,1,true,5); //8
AddSprite(‘Alien1.bmp’,2,true,5); //9
AddSprite(‘Alien2.bmp’,1); //10
AddSprite(‘Missile1.bmp’,1,true,5); //11
AddSprite(‘Bang1.bmp’); //12
AddSprite(‘Bang2.bmp’); //13
AddSprite(‘Bang3.bmp’); //14

// Наш корабль
AddObj(true, 1, 1150, 1250, 30, 0, 150, 13);
Objects[0].AlwaysShow := true;
TurnObj(0, 90, true);
// Транспорт
AddObj(true, 2, 1590, 1350, 6, 7, 150, 12);
TurnObj(1, 90);
// Звезды
for i:=0 to 1700 do
AddObj(false, 0, Random(14950), Random(2950),
0, Random(5)+1, 1);
// Базы
AddObj(false, 0, 1170, 1350, 0, 6, 1000);
AddObj(false, 0, 10000, 1350, 0, 6, 1000);
end;

function TStarEscortWorld.Process(Tick : integer) : boolean;
var i,j : integer;
c : integer;
pr : boolean;
ax, ay, dfight, dtrans : integer;
begin

// Чтение клавиатурных команд
Engine.ReadImmediateKBD;

// Прежде всего остального обрабатываем
// выход из программы
if Engine.Keys[DIK_ESCAPE] then

begin Engine.Deactivate;
Result := false;
Form1.Close;
exit;
end;

if Objects[1].x = 9750 then
begin
if NTxt

Источник

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

Если захотите узнать стоимость SEO услуг, то посетите сайт netsend.ru.

Как всегда открываем Delphi и создаем новый проект. Сразу кидаем на форму компонент DrawGrid с закладки Additional. У него нам нужно изменить ряд свойств:

В итоге у вас должно получиться что то похожие.

Как сделать игру в delphi. Смотреть фото Как сделать игру в delphi. Смотреть картинку Как сделать игру в delphi. Картинка про Как сделать игру в delphi. Фото Как сделать игру в delphi

Теперь мы должны произвольно присвоить каждой ячейке определенный цвет. Всего цветов у нас будет 3 (красный, зеленый и синий).

Переходим в код и выше ключевого слова var вставляем вот такой код

const
MAX_COLORS = 3;
const
PossibleColors : array [0..MAX_COLORS-1] of TColor = (clRed, clBlue, clGreen);

Далее, нам понадобиться создать двухмерный массив, в ячейках которого будут храниться цвета соответствующих квадратов. т.к. размер игровой области у нас 20 на 20, соответственно и массив у нас будет такой же размерности. Но для начала давайте объявим парочку констант в которых будет храниться размер игровой области. Опять же над ключевым словом var напишем следующий код:

Const
MAX_COLUMNS = 20;
MAX_ROWS = 20;

А теперь создадим массив. Делать мы это будем после ключевого слова var т.е. сразу же после:

var
Form1: TForm1;

ColorOfBrick : array [0..MAX_COLUMNs, 0..MAX_ROWS] of TColor;

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

procedure AssignBrickColors;

procedure TForm1.AssignBrickColors;
var
i, j : integer;
begin
for i := 0 to Form1.DrawGrid1.ColCount-1 do
for j := 0 to Form1.DrawGrid1.RowCount-1 do
ColorOfBrick[i][j] := PossibleColors[Random(MAX_COLORS)]
end;

Конечно же при запуске, также необходимо начинать новую игру, поэтому создаем обработчик событий onCreate на форме, опять же между begin end пишем:

Ну и напоследок создайте обработчик событий OnDrawCell на компоненте DrawGrid напишите там

DrawGrid1.Canvas.Brush.Color := ColorOfBrick[ACol][ARow];
DrawGrid1.Canvas.FillRect(Rect)

Запускаем проект, вот что получилось у меня:

Источник

Как сделать игру в delphi

Как сделать игру в delphi. Смотреть фото Как сделать игру в delphi. Смотреть картинку Как сделать игру в delphi. Картинка про Как сделать игру в delphi. Фото Как сделать игру в delphi

Как сделать игру в delphi. Смотреть фото Как сделать игру в delphi. Смотреть картинку Как сделать игру в delphi. Картинка про Как сделать игру в delphi. Фото Как сделать игру в delphi

Как сделать игру в delphi. Смотреть фото Как сделать игру в delphi. Смотреть картинку Как сделать игру в delphi. Картинка про Как сделать игру в delphi. Фото Как сделать игру в delphi

Далее, например при создании формы пишем начальные данные:
Upravlenie:=true;

Затем заходим в событие формы отвечающее за управление персонажем (form1.OnKeyPress, OnkeyDown или OnKeyUp) и весь имеющийся там код ставим внутри нашей проверки:

if Upravlenie=true then
begin
.
Имеющийся весь там код
.
end;

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

Вот в общем-то и все.

Как сделать игру в delphi. Смотреть фото Как сделать игру в delphi. Смотреть картинку Как сделать игру в delphi. Картинка про Как сделать игру в delphi. Фото Как сделать игру в delphi

Как сделать игру в delphi. Смотреть фото Как сделать игру в delphi. Смотреть картинку Как сделать игру в delphi. Картинка про Как сделать игру в delphi. Фото Как сделать игру в delphi

Как сделать игру в delphi. Смотреть фото Как сделать игру в delphi. Смотреть картинку Как сделать игру в delphi. Картинка про Как сделать игру в delphi. Фото Как сделать игру в delphi

Как сделать игру в delphi. Смотреть фото Как сделать игру в delphi. Смотреть картинку Как сделать игру в delphi. Картинка про Как сделать игру в delphi. Фото Как сделать игру в delphi

Как сделать игру в delphi. Смотреть фото Как сделать игру в delphi. Смотреть картинку Как сделать игру в delphi. Картинка про Как сделать игру в delphi. Фото Как сделать игру в delphi

Как сделать игру в delphi. Смотреть фото Как сделать игру в delphi. Смотреть картинку Как сделать игру в delphi. Картинка про Как сделать игру в delphi. Фото Как сделать игру в delphi

Как сделать игру в delphi. Смотреть фото Как сделать игру в delphi. Смотреть картинку Как сделать игру в delphi. Картинка про Как сделать игру в delphi. Фото Как сделать игру в delphi

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

for i:=0 to 9 do
for j:=0 to 9 do
form1.canvas.Draw(i*32,j*32,Images[i]).

var
Images:array[0..9] of TBitmap;

Ну и нагрузить в этот массив все нужные картинки

Источник

Внимание! Этот документ ещё не опубликован.

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

Часть II.
Основные функции класса TFastDIB.

Так как класс TFastDIB является объектом, то его необходимо создавать при начале и уничтожать в конце работы. Осуществляется это при помощи функций Create и Destroy. Создавать объект необходимо сразу как возникает необходимость работы с ним, но только один раз, иначе создастся новый объект, а прошлый потеряется в памяти компьютера. Уничтожать так же следует только после того, как объект уже не используется и никогда уже не будет использован.

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

Пример создания, отрисовки и уничтожения переменной типа TFastDIB:

Пример создания, загрузки, отрисовки и уничтожения переменной типа TFastDIB:

Примечание: с помощью этой функции можно загружать графические данные только формата *.bmp.

Так же предусмотрена возможность сохранения результата с помощью функции SaveToFile.

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

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

Система игрового движка.
Теперь мы рассмотрим как же все-таки делаются все игры, и как нам начать делать свой собственный рабочий движок.

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

Всю работу графической системы можно разделить на три части: создание графических устройств, их проверка и отрисовка, уничтожение графических устройств. Т.е. все это можно описать в 3-х функциях:
CreateGraphicsDevices;
CheckGraphicsDevices;
DestroyGraphicsDevices;

Рассмотрим каждую функцию поподробнее:

CreateGraphicsDevices;
Здесь происходит установка нужного режима экрана, создание главной поверхности, загрузка текстур, создание других необходимых графических устройств. Чем же является «главная поверхность»? По сути дела это тот же TFastDIB, но главная она из-за того, что все объекты, весь интерфейс, все спец-эффекты рисуются именно на ней, а она уже в конце проверки графики рисуется на поверхности формы и отображает весь результат на экране.

(здесь последует продолжение статьи, но чуть позже)

Источник

Самоучитель по Delphi 7 для начинающих с примерами

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

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

Запуск программы посредством нажатия одной кнопки

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

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

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

Создание самой простой программы в Delphi достаточно легкое и состоит из таких шагов:

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

Компоненты Delphi

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

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

Среди основных компонентов, отвечающих за отображение текста, стоит выделить такие элементы, как Button, Memo, Label, Edit. В инспекторе объектов для каждого из этих элементов можно установить необходимые свойства. Для определения положения зачастую применяются такие основные свойства:

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

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

События Delphi

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

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

Работая с Инспектором объекта, стоит обратить внимание на то, что в нем есть две вкладки: Свойства и События. В процессе перехода на вкладку События при необходимости реализации такого процесса, как создание обработчика события, необходимо выполнить двойной щелчок на необходимом событии.

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

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

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

Константы, переменные и их виды

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

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

Что же касается постоянной величины, то ее часто именуют в виде константы. Что же касается процесса описания констант, то оно является полностью аналогичным процессу описания переменным. Но здесь вместо слова Var применяется слово Const. Здесь можно навести такой пример:

Что же касается типов данных, то в Delphi в первую очередь выделяются числа и строки.

В качестве строки выступает определенная последовательность символов, которые находятся в одинарных кавычках. При этом не обязательно, чтобы в строке были символы, так как она и вовсе может быть пустой. Среди наиболее востребованных строковых типов стоит обратить внимание на String. В этом типе может находится определенное количество символов, общим объемом до 2 Гб.

В том случае, если есть необходимость в ограничении количества символов, то сразу после слова String в квадратных скобках нужно указать максимально возможное количество символов. Если мы имеет дело с одиночными символами, то в данном случае лучше использовать тип данных Char.

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

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

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

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

Что же касается логического типа данных, то здесь выделяют тип Boolean, который может иметь только два значения: Ложь или Истина. Поэтому теперь, зная основные компоненты, особенности создания событий и типы данных, можно в среде программирования Delphi создавать самые простые программы.

Структурные и собственные типы данных

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

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

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

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

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

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

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

Что же касается множества, то сюда принадлежит определенная группа компонентов, которая зачастую объединяется посредством использования одного и того же имени. Стоит обратить внимание на то, что в одном множестве может быть не больше, чем 256 элементов.

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

Рассматривая программную среду Delphi, стоит обратить внимание на то, что в ней применяются:

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

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

Связано это с тем, что в языке программирования Delphi все действия осуществляются с учетом приоритета следования, а не в определенном порядке. Например, такие операции, как деление и умножение, имеют приоритет намного выше, нежели вычитание и сложение.

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

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

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

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *