Вы хотите создать клон Диабло или Морровинд?
Разработка оригинальной ролевой компьютерной игры на TurboPascal/Delphi.
Материал полностью готов, поэтому тема в рассылке будет раскрыта до конца.
Статистика
0 за неделю
Создание ролевой компьютерной игры 56) Работа магазина
Школа программирования 56) Работа магазина На очереди - задача кодирования работы магазина. Код оригинальной DOS-версии соответствующей процедуры GoToShop (она вызывается автоматически при вступлении на клетку с магазином) на первый взгляд весьма объемен, однако припомним, что в нем происходило. Первая часть отведена формированию списка предметов, что вообще не требует значимых усилий по ее модификации, а далее герой лишь взаимодействует с продавцом, указывая ему либо товар, который он хочет приобрести, ли...
Создание ролевой компьютерной игры 55) Работа с инвентарем
Школа программирования 55) Программирование ролевой игры: Работа с инвентарем Работа с инвентарем должна выполняться в отдельной форме, на которой расположим список и две кнопки "Использовать" и "Бросить. А поле-метка MoneyLabel будет ответственно за отображение текущей наличности. Тем самым мы полностью дублируем задачу, решаемую DOS-версией кода. Создадим новую форму, назовем ее InvForm. Разместим на ней список и назовем его ListBox. Добавим также метку MoneyLabel для вывода текущей суммы денег, кнопку U...
Создание ролевой компьютерной игры 54) Клавиатурное управление, сохранение/восстановление
Школа программирования 54) Клавиатурное управление, сохранение и восстановление Теперь нам надо реализовать механизм управления игрой с помощью клавиатуры. Для этого перенесем цикл анализа нажатий клавиш модуля Main в обработчик отпускания клавиш нашей формы OnKeyUp. Начнем с базовых клавиш-стрелок перемещения: // - procedure TGameForm.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin case Key of VK_LEFT: MoveHero( -1,0 ); VK_RIGHT: MoveHero( +1,0 ); VK_UP: MoveHero( 0-1 ); VK_DOWN: Move...
Создание ролевой компьютерной игры 53) Рисуем героев и монстров
Школа программирования 53) Рисуем героев и монстров Мы научились рисовать карту, и теперь аналогичным образом запрограммируем отображение персонажа, монстров и предметов. Нам потребуются две переменные для образов "текущего" героя, которым управляем, и героя/ев, не выбранного на данный момент (в DOS-игре они разделялись цветами, белым и желтым. Подготовим эти два изображения 32*32 пикселя в файлах h1.bmp и h2.bmp - с черным фоном, который будет считаться "прозрачным. Их определения будут храниться в модуле...
Создание ролевой компьютерной игры 52) Отображение карты в Windows
Школа программирования 52) Программирование ролевой игры: Отображение карты в Windows Мы не будем, как уже говорилось, в данной теме останавливаться на технике быстрого графического вывода, а воспользуемся стандартными возможностями и компонентами Delphi, в частности, компонентом PaintBox и его канвой для отображения карты и игрового мира. Интересующихся техникой быстрого спрайтового вывода в рамках обычного окна Windows со стандартными элементами управления (в отличие от графических библиотек DirectX/Open...
Создание ролевой компьютерной игры 51) Генерация героя в Windows
Школа программирования 51) Генерация героя в Windows Очередной шаг - переделка процедуры GenerateHero, которая у нас реализована в модуле LowLevel и поэтому требует ручного перепрограммирования. В ней последовательно происходит выбор различных параметров и настроек героя, которые мы вполне можем представить в виде последовательных модальных окон, в каждом из которых предлагаются варианты выбора. Поступим так с расой и классом героя - создадим в рамках текущего проекта новую форму RCForm и разместим на ней ...
Создание ролевой компьютерной игры 50) Переносим в Windows
Школа программирования 50) Программирование ролевой игры: Продолжаем перенос в Windows Теперь, когда пустая форма у нас запускается и весь код компилируется без проблем, возьмемся непосредственно за игровую логику. Добавим на форму меню с одним главным разделом "Игра. В нем реализуем также всего два пункта - "Новая" (назовем этот пункт NewGameItem) и "Выход. Обработку выбора пункта "Выход" можно создать сразу, выполнив в нем, например, единственную команду закрытия формы Close, а что делать при запуске нов...
Создание ролевой компьютерной игры 164) Продолжаем перенос в Windows
Школа программирования 164) Программирование ролевой игры: Продолжаем перенос в Windows Предыдущий выпуск по ролевой игре, был N 159. * Обращаю внимание - мой почтовый ящик из-за спама сменился. Новый - в конце рассылки. Кроме того, на адреса домена мэйл ру от меня письма не уходят, поэтому если пишете мне, то на мейл ру я ответить вам не смогу. * Перенос в Дельфи. Итак, компилятор добрался до модуля LowLevel, и сообщает об отсутствии в разделе реализации всех необходимых процедур и функций. Форма программ...
Создание ролевой компьютерной игры 48) Переходим в Windows
Школа программирования 48) Программирование ролевой игры: Начинаем перенос в Windows Процесс переноса игры в Delphi не составит особого труда. Ведь на самом деле нам придется видоизменить лишь модули LowLevel и Main, а весь остальной код должен поо идее скомпилироваться без каких-либо проблем. Определенлные усилия потребуются лишь при формировании красивой картинки игрового пространства - пещеры, героев, монстров и других элементов, а также по адаптации цикла обработки клавиатуры в Main к интерфейсу взаимо...
Создание ролевой компьютерной игры 47) Завершаем с квестами
Школа программирования 47) Программирование ролевой игры: Завершаем с квестами Как нам различать, передан предмет или нет? Это непростой вопрос, так как передавать предмет может один игрок, а обращаться к пославшему за наградой - другой. То есть информация о выполнении промежуточного этапа должна храниться в описании квеста. Сделать это можно, например, указав ноль в качестве значения индекса целевого персонажа (адресата) TargetId. { - } procedure CallQuest(hn, mn: Integer); var i,j,n: Integer; begin n = 0...