www.gcmsite.ru

Новости Программы PHP-скрипты Статьи Числа
Услуги Резюме Игры Автомобили Поиск

СИСТЕМНОЕ И ВЕБ-ПРОГРАММИРОВАНИЕ
компьютерная техника, игры

Чувство пространства в текстовых играх.
Разработка текстовых игр.

Дата написания: 11.06.2001

Как организовать и правильно обрабатывать структуру внутреннего мира игры? Данная статья расскажет об одном из вариантов решения проблемы... Для описания программного кода будет использоваться Borland Pascal 7.0

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

например
                      N U
 #############        |/
 # 1 | 2 | 3 #     W--+--E
 #########---#       /|
         # 4 #      D S
         #####
из первой комнаты можно идти только на восток из второй - на запад и на восток из третьей - на запад и на юг из четвертой - только на север

Вопрос: по какому принципу вы писали передвижение между локациями?
Ответ: Смотрим, сколько будет у нас комнат. Например, 100. Тогда

..................
 z: array[1..100] of record
                       s,n,u,d,w,e : integer;
                       что-то еще : как-то еще;
                     end;
..................

..................
for i:= 1 to 100 do 
  begin
    z[i].s := 0;
    z[i].n := 0;
    z[i].w := 0;
    z[i].e := 0;
    z[i].u := 0;
    z[i].d := 0;
  end;
..................
Ноль означает, что выхода в этом направлении нет. Пример, 2 комнаты, из 1 есть выход на юг, а из 2 - на север.
..................
  z[1].s := 2;
  z[2].n := 1;
..................
В каждой комнате можно идти только в одном направлении. Получилась замкнутая система комнат. Движок с этим справляется.
Что-то еще - это элемент (массив), отвечающий за количество предметов на локации. У меня по умолчанию используется 20. Т.е. более этого числа предметов мы не сможем положить на локацию.

Вопрос: как перейти из одной комнаты в другую?
Ответ: Все очень просто. Например, мы находимся в комнате 2, т.е. MyLocation = 2
Хотим идти на север

  if z.[MyLocation].n >0
    then MyLocation := z.[MyLocation].n
    else WriteLn('Нет пути...')

Вопрос: Есть ли смысл использовать динамические структуры и насколько критичен код программы к скорости выполнения?
Ответ: Нет, динамика здесь не нужна. С помощью простых массивов можно реализовать все, что захочется. Насчет скорости... Игры данного жанра не требуют скорости обновления экрана 30-90 кадров в секунду, хотя код программы работает очень быстро!


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

Интересные материалы на сайте:

Автор, разработчик: Шаров Евгений   (gcmsite@yandex.ru)
(c) 2000-2020 GCM-Site - системное и веб-программирование
Цитирование материалов сайта возможно только при наличии гиперссылки