Народы, вот у нас много человек писало на всяких левых языках типа бейсика, паскаля и даже экшнскрипта. Я пробовал на С++. Внимание, вопрос.
Как у вас там всё было устроено, и как устраивать надо? Чисто конкретно программёрский вопрос. Как представлена карта? Двуменрый массив чтоли? Если да то как вверх и вниз ходить? Трёхмерный чтоли? Как вы обрабатываете команды и где находятся обработчики? У меня мелькает картинка, что в самой дубовой слепленной абы побыстрее игрушке каждая локация - это функция:
function Kuhnya()
begin
command:=WaitForCommand();
case command of
'юг': Gostinnaya();
'север': Say('сюда нельзя')
end;
end
Ну что-то в этом роде. Каждая комната - это вот такая функция. Мне бы узнать как сам каркас программы устраивается. Думаю, и всем будет интересно посмотреть кто и как делает.
А?
Неактивен
Думаю, все же, что для ИФ будет полезен более объектно-ориентированный подход. Не надо привязывать обработку команд к отдельным комнатам. Тем более не надо сваливать их все в одну кучу. Возьмем, например, Гидру
Комнаты - объекты (впрочем, как и все остальное). В каждом комната-объекте хранятся ссылки на др. комнаты-объекты по направлениям. Выглядит так:
SquareRoom.Map={S:RoundRoom,W:CorridorRoom}
Т.е. здесь SquareRoom, RoundRoom, CorridorRoom - это комнаты-объекты.
Само же движение игрока вместе с необходимыми проверками происходит там, где оно и должно происходить - в обработчике глагола "идти". (кстати, глаголы - тоже объекты. Очень удобно).
Вообще, получается достаточно четкая структура.
Получаем от игрока строку команды. Разбираем ее и узнаем, какие объекты в ней упоминаются. Т.е. получаем объект - глагол, объект актер, объект предмет...
Затем просто вызываем спец. ф-ию у объекта глагола, передав ей остальные объекты. А уж она должна все необходимое проделать.
Примерно так.
А вообще, если интересно, смотрите исходники - они на Питоне, а Питон один из самых самоописательных языков, так что особых проблем с пониманием возникнуть не должно.
Неактивен
Да лениво пересказывать алгоритмы. Это же просто один к одному по исходникам читать - какой смысл?
В Hydra все объекты - контейнеры. Очень удобно. Взято, конечно, из информа. Игрок - контейнер. В нем содержится инвентарь. Сам игрок содержится в контейнере комнате, в кот. содержатся др. предметы, кот. тоже могут быть контейнерами.
Хотя, наверное, стоит разделить находиться В чем-то и находиться НА чем-то, а то возникают определенные проблемы, как с той стиральной машинкой, В которую можно ложить предметы и НА кот. можно ложить что-нибудь...
Неактивен