Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

0    0    #1
19.03.2002 09:21

Namor
Участник
Откуда: Довольно Средняя Азия
Зарегистрирован: 03.05.2001
Сообщений: 33
Вебсайт

Устройство программы на стандартном языке

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

Как у вас там всё было устроено, и как устраивать надо? Чисто конкретно программёрский вопрос. Как представлена карта? Двуменрый массив чтоли? Если да то как вверх и вниз ходить?  Трёхмерный чтоли? Как вы обрабатываете команды и где находятся обработчики? У меня мелькает картинка, что в самой дубовой слепленной абы побыстрее игрушке каждая локация - это функция:

function Kuhnya()
begin
  command:=WaitForCommand();
  case command of
     'юг': Gostinnaya();
     'север': Say('сюда нельзя')
  end;
end

Ну что-то в этом роде. Каждая комната - это вот такая функция. Мне бы узнать как сам каркас программы устраивается. Думаю, и всем будет интересно посмотреть кто и как делает.

А?

Неактивен

0    0    #2
02.08.2002 11:27

WildWizard
Участник
Откуда: Россия, Красноярск
Зарегистрирован: 01.03.2001
Сообщений: 450
Вебсайт

Nobody expects the Spa.. Oh, never&&mind.

Re: Устройство программы на стандартном языке

Думаю, все же, что для ИФ будет полезен более объектно-ориентированный подход. Не надо привязывать обработку команд к отдельным комнатам. Тем более не надо сваливать их все в одну кучу. Возьмем, например, Гидру smile
Комнаты - объекты (впрочем, как и все остальное). В каждом комната-объекте хранятся ссылки на др. комнаты-объекты по направлениям. Выглядит так:
SquareRoom.Map={S:RoundRoom,W:CorridorRoom}
Т.е. здесь SquareRoom, RoundRoom, CorridorRoom - это комнаты-объекты.
Само же движение игрока вместе с необходимыми проверками происходит там, где оно и должно происходить - в обработчике глагола "идти". (кстати, глаголы - тоже объекты. Очень удобно).
Вообще, получается достаточно четкая структура.
Получаем от игрока строку команды. Разбираем ее и узнаем, какие объекты в ней упоминаются. Т.е. получаем объект - глагол, объект актер, объект предмет...
Затем просто вызываем спец. ф-ию у объекта глагола, передав ей остальные объекты. А уж она должна все необходимое проделать.
Примерно так.
А вообще, если интересно, смотрите исходники - они на Питоне, а Питон один из самых самоописательных языков, так что особых проблем с пониманием возникнуть не должно.

Неактивен

0    0    #3
08.08.2002 14:22

WildWizard
Участник
Откуда: Россия, Красноярск
Зарегистрирован: 01.03.2001
Сообщений: 450
Вебсайт

Nobody expects the Spa.. Oh, never&&mind.

Re: Устройство программы на стандартном языке

Да лениво пересказывать алгоритмы. Это же просто один к одному по исходникам читать - какой смысл?

В Hydra все объекты - контейнеры. Очень удобно. Взято, конечно, из информа. Игрок - контейнер. В нем содержится инвентарь. Сам игрок содержится в контейнере комнате, в кот. содержатся др. предметы, кот. тоже могут быть контейнерами.
Хотя, наверное, стоит разделить находиться В чем-то и находиться НА чем-то, а то возникают определенные проблемы, как с той стиральной машинкой, В которую можно ложить предметы и НА кот. можно ложить что-нибудь...

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru