MasterK прислал мне следующую структуру платформы (это картинка около 5КБ):
http://www.taplap.ru/olegus/stuff/tex.gif
Лично мне она малопонятна и не отвечает на некоторые вопросы.
Мое видение платформы таково. Это визуальная среда, в котором в виде дерева представлены следующие составные части (объекты):
Локации
Предметы
Персонажи
Словари
и т.д.
Каждый объект имеет ряд свойств, а также собственный модуль, в котором имеется ряд процедур, использующихся при обращении к этому объекту. Процедуры делятся на "системные" и "пользовательские". Системные процедуры вызываются автоматически при возникновении того или иного случая.
Например, в модуле локации "Кузница" имеется системная процедура "ВходВЛокацию". Она вызывается в тот момент, когда игрок пытается зайти в кузницу. Содержимое этой процедуры автор игры может прописать самостоятельно, например, указав, что если на игроке не надет фартук, то кузнец его не пускает.
В модуле предмета может быть системная процедура "ДействияСПредметом", где автор прописывает все то, что игрок может совершить с этим предметом.
Некоторые свойства представлены в виде списка. Например, у локации есть список декораций, которые игрок может осмотреть, список выходов для перемещения в другие локации и т.п.
Локация
|
+—Кузница
| +—Описания
| +—Выходы
| | +—ВнутреннийДвор
| | +—Погреб
| |
| +—Декорации
| +—Стол
| +—Горн
| +—Наковальня
|
+—ВнутреннийДвор
+—Погреб
+—КрышаКузницы
Неактивен
Я вот как себе это вижу. Олегус написал, что он просто делает ОДНУ процедуру во всей проге (на паскале, как я понял) и вся игрушка находится в этой процедуре, в виде громадного case. Я-то думал что я извращенец раз такое стал делать в с++, а оказывается - люди так вполне работают, и всё пашет.
Платформа не должна различать локации и объекты, давайте сокращать всё что только можно. Локация - это объект, в котором содержатся персонажи (тоже объекты), как и карман - это всего-лишь объект, в котором тоже что-то может содержаться. Все объекты снабжены обработчиками событий и возможностью помещать в них что-то ещё...
Настоятельно рекомендую прислушаться к моей системе алиасов, её нужно встроить в наши словари. Пусть каждое слово в словаре можно будет снабдить алисаом: Вася (человек, живой) -тогда можно будет создавать обработчики событий, срабатывающие не на конкретные объекты, а на классы... Тогда легче реализовать наследование. "Кухня" имеет алиас "локация". А в "локации" прописан отклик на команду "вошёл человк". Вася входит в кухню и хотя ты не прописывал ничего конкретно для кухни, она поймёт, что в неё вошёл "человк" и сделает все необходимые манипуляции над ним.
Простая для понимания вещь может и не родится, но зато будет мощная в деле. А для слабоумных писателишков можно будет сделать визуальную надстройку над языком.
Неактивен