Меню сайта
Форма входа

Категории раздела
Уроки по созданию игр [38]
Программирование игр разной сложности
Игровые алгоритмы [24]
Алгоритмы, которые уже реализованы для разных жанров игр
Графика [5]
Учимся работать с графикой в Делфи
Мультимедиа [3]
Работа с мультимедийными возможностями Делфи
Другие статьи [18]
Статьи не вошедшие не в один из разделов
Ошибки [4]
Всевозможные ошибки и пути их решения
Четверг, 09.01.2025, 06:28
Приветствую Вас Гость

Статьи по программированию

Главная » Статьи » Уроки по созданию игр

Создание Ролевой игры РПГ на Паскале и Делфи. Урок 9

Урок 9. Инфа о герое

 

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

 

Const Scroll_DELTA = 3;

 

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

Вот так запишется модифицирования процедура перемещения героя:

 

procedure  MoveHero{   dx,dy:   Integer   );

begin

if not  FreeTile(   GameMap[CurMap] .Cells [

Heroes[CurHero].x+dx,Heroes[CurHero].y+dy].Tile   )   then Exit;

inc(Heroes[CurHero].x,dx);

inc(Heroes[CurHero].y,dy);

SetHeroVisible(CurHero);

if   (abs(Heroes[CurHero].x   -   GameMap[CurMap].LocalMapLeft)   <

SCROLL_DELTA)   or

(abs(Heroes[CurHero].у   -   GameMap[CurMap].LocalMapTop)   <

SCROLL_DELTA)   then ScrollMap;

end;

 

Чтобы программа работала, нам осталось реализовать процедуру прокрутки видимой части карты ScrollMap (разместим се в модуле Map):

 

procedure  ScrollMap;

begin

GameMap[CurMap].LocalMapLeft   := Heroes[CurHero].x  -

LOCAL_MAP_WIDTH  div   2;

GameMap[CurMap].LocalMapTop   :=  Heroes[CurHero].у   -

LOCAL_MAP_HEIGHT  div  2;

end;

 

Здесь происходит изменение значения переменных LocalMapLeft/LocalMapTop, определяющих текущие координаты видимого окна.

Теперь программа ожила. Можно перемещать героя по доступному миру и бродить в запутанных лабиринтах между деревьями и камнями. Правда, никакие сведения о самом герое нам пока недоступны - точнее, они невидимы для пользователя. Вывод важнейшей информции о герое - обязаельное требование хороших игр. Поэтому введем в модуле LowLevel процедуру ShowHeroInfo, которую будем вызывать в конце процедуры ShowGame. Что нас может интересовать? Прежде всего уровень здоровья и опыта, а также текущие координаты на карче. Па первых порах такой информации будет вполне достаточно. Запрограммируем ShowHeroInfo следующим способом:

 

procedure   ShowHeroInfo(HeroNum:   Integer);

begin

TextColor( LightGray );

GoToXY(40, 2);

Write(STR_HERO_HP,Heroes[HercNum].HP, ' / ' ,Heroes[HeroNum].MaxHP);

GoToXY(40, 3);

Write(STR_HERO_XY,Heroes[HeroNum].x,    '    ,    '    ,Heroes[HeroNum].y);

end;

 

Здесь мы приблизились к задаче выделения строковых констант, которые можно быстро заменять, переводя на другие языки. Соообщения типа STR_HBRO_HP могут содержать строки типа "Здоровье:", однако они должны быть разделены по разным национальным ее кодировкам. Все строковые константы мы будем хранить в модуле Texts,

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

 

{$IF DEFINES.inc}

Unit Txts;

Interface

{$ IFDEF RUSDOS_GAME}

Const STR_HERO_HP=’ Здор / Макс.Здор’;

STR_HERO_XY=’  Координаты ’;

{$ ENDIF}

Implementation

End.

 

Строковые константы естественно должны быть выполнены в ДОС-овской кодировке. Теперь экран игры станет более дружелюбным. Далее программируем монстров.

Категория: Уроки по созданию игр | Добавил: Armageddets (24.11.2012)
Просмотров: 1176 | Теги: программирование игр, как написать игру, Создание Ролевой игры РПГ на Паскал, информация о герое, урок по созданию игр, ролевая игра | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Наш опрос
Уроки по созданию каких игр Вам интересны?
Всего ответов: 169
Мини-чат
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0