Отправляет email-рассылки с помощью сервиса Sendsay

Создание ролевой компьютерной игры 56) Работа магазина

Школа программирования 56) Работа магазина На очереди - задача кодирования работы магазина. Код оригинальной DOS-версии соответствующей процедуры GoToShop (она вызывается автоматически при вступлении на клетку с магазином) на первый взгляд весьма объемен, однако припомним, что в нем происходило. Первая часть отведена формированию списка предметов, что вообще не требует значимых усилий по ее модификации, а далее герой лишь взаимодействует с продавцом, указывая ему либо товар, который он хочет приобрести, ли...

2008-05-27 15:55:43 + Комментировать

Создание ролевой компьютерной игры 55) Работа с инвентарем

Школа программирования 55) Программирование ролевой игры: Работа с инвентарем Работа с инвентарем должна выполняться в отдельной форме, на которой расположим список и две кнопки "Использовать" и "Бросить. А поле-метка MoneyLabel будет ответственно за отображение текущей наличности. Тем самым мы полностью дублируем задачу, решаемую DOS-версией кода. Создадим новую форму, назовем ее InvForm. Разместим на ней список и назовем его ListBox. Добавим также метку MoneyLabel для вывода текущей суммы денег, кнопку U...

2008-03-30 16:46:56 + Комментировать

Создание ролевой компьютерной игры 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...

2008-02-09 13:08:14 + Комментировать

Создание ролевой компьютерной игры 53) Рисуем героев и монстров

Школа программирования 53) Рисуем героев и монстров Мы научились рисовать карту, и теперь аналогичным образом запрограммируем отображение персонажа, монстров и предметов. Нам потребуются две переменные для образов "текущего" героя, которым управляем, и героя/ев, не выбранного на данный момент (в DOS-игре они разделялись цветами, белым и желтым. Подготовим эти два изображения 32*32 пикселя в файлах h1.bmp и h2.bmp - с черным фоном, который будет считаться "прозрачным. Их определения будут храниться в модуле...

2007-11-19 11:47:54 + Комментировать

Создание ролевой компьютерной игры 52) Отображение карты в Windows

Школа программирования 52) Программирование ролевой игры: Отображение карты в Windows Мы не будем, как уже говорилось, в данной теме останавливаться на технике быстрого графического вывода, а воспользуемся стандартными возможностями и компонентами Delphi, в частности, компонентом PaintBox и его канвой для отображения карты и игрового мира. Интересующихся техникой быстрого спрайтового вывода в рамках обычного окна Windows со стандартными элементами управления (в отличие от графических библиотек DirectX/Open...

2007-08-16 14:31:58 + Комментировать

Создание ролевой компьютерной игры 51) Генерация героя в Windows

Школа программирования 51) Генерация героя в Windows Очередной шаг - переделка процедуры GenerateHero, которая у нас реализована в модуле LowLevel и поэтому требует ручного перепрограммирования. В ней последовательно происходит выбор различных параметров и настроек героя, которые мы вполне можем представить в виде последовательных модальных окон, в каждом из которых предлагаются варианты выбора. Поступим так с расой и классом героя - создадим в рамках текущего проекта новую форму RCForm и разместим на ней ...

2007-07-09 13:52:16 + Комментировать

Создание ролевой компьютерной игры 50) Переносим в Windows

Школа программирования 50) Программирование ролевой игры: Продолжаем перенос в Windows Теперь, когда пустая форма у нас запускается и весь код компилируется без проблем, возьмемся непосредственно за игровую логику. Добавим на форму меню с одним главным разделом "Игра. В нем реализуем также всего два пункта - "Новая" (назовем этот пункт NewGameItem) и "Выход. Обработку выбора пункта "Выход" можно создать сразу, выполнив в нем, например, единственную команду закрытия формы Close, а что делать при запуске нов...

2007-05-17 17:51:42 + Комментировать

Создание ролевой компьютерной игры 164) Продолжаем перенос в Windows

Школа программирования 164) Программирование ролевой игры: Продолжаем перенос в Windows Предыдущий выпуск по ролевой игре, был N 159. * Обращаю внимание - мой почтовый ящик из-за спама сменился. Новый - в конце рассылки. Кроме того, на адреса домена мэйл ру от меня письма не уходят, поэтому если пишете мне, то на мейл ру я ответить вам не смогу. * Перенос в Дельфи. Итак, компилятор добрался до модуля LowLevel, и сообщает об отсутствии в разделе реализации всех необходимых процедур и функций. Форма программ...

2007-04-23 15:54:52 + Комментировать

Создание ролевой компьютерной игры 48) Переходим в Windows

Школа программирования 48) Программирование ролевой игры: Начинаем перенос в Windows Процесс переноса игры в Delphi не составит особого труда. Ведь на самом деле нам придется видоизменить лишь модули LowLevel и Main, а весь остальной код должен поо идее скомпилироваться без каких-либо проблем. Определенлные усилия потребуются лишь при формировании красивой картинки игрового пространства - пещеры, героев, монстров и других элементов, а также по адаптации цикла обработки клавиатуры в Main к интерфейсу взаимо...

2007-03-29 12:07:44 + Комментировать

Создание ролевой компьютерной игры 47) Завершаем с квестами

Школа программирования 47) Программирование ролевой игры: Завершаем с квестами Как нам различать, передан предмет или нет? Это непростой вопрос, так как передавать предмет может один игрок, а обращаться к пославшему за наградой - другой. То есть информация о выполнении промежуточного этапа должна храниться в описании квеста. Сделать это можно, например, указав ноль в качестве значения индекса целевого персонажа (адресата) TargetId. { - } procedure CallQuest(hn, mn: Integer); var i,j,n: Integer; begin n = 0...

2007-03-12 14:11:38 + Комментировать

Рекомендуем подписаться: