Тут в соседней теме зашел разговор о клонах, и я решил вынести отдельное обсуждение по ним.
Суть вопроса вот в чем. Клоном будем считать предмет, который описан единожды (описан, значит, получил конкретный набор свойств), но как объект в игре встречается минимум дважды. Тривиальный пример: монета/банкнота, совокупность которых образует деньги.
Так вот, хотелось бы знать ваше мнение: нужны ли в IF предметы-клоны?
А если нужны, то как вы видите их реализацию со стороны программиста?
И самое интересное (конкретная ситуация): на столе и на полу лежат два экземпляра объекта "нож". Как следует реагировать на команду
>взять нож
Неактивен
>взять нож
Который нож вы имеете в виду: нож или нож?
>нож
Который нож вы имеете в виду: нож или нож?
и так до бесконечности.
Караул!! ![]()
Так что, при динамическом создании таких объектов, им лучше всего давать уникальные описания (длинный нож, кривой нож) или делать их неразличимыми(чтобы они "складывались в кучку").
Т.е. каждому объекту в игре - отдельный объект, создаваемый программистом (динамически)? У меня тут сомнения: а если ОЧЕНЬ много объектов (тех же денег, допустим, миллионы номиналом в одну "деньгу"
)? Хватит ли оперативной памяти, чтоб их всех создать?
Неактивен
AlsoKorwin
Nash, мне кажется это надуманная проблема.
Ну сделайте объект песок, сделайте объект песчинка и чтобы пока песок есть этих песчинок можно было взять бесконечно, а в свойствах песчинки(денег, патронов) поставьте "количество". Или я чего-то не понимаю?
Хе-хе! Проблема не надумана. Просто все подразумевают под IF именно квесты, а там вообще нет смысла использовать клоны. И с ними никто конкретно не сталкивался.
Ладно: создаю объекты "песок" и "песчинка". Песчинок, допустим, 1000. Подхожу я, беру 332е. И что дальше? Песчинка по ходу дела и в локации осталась, и у меня
Опять же, приходится динамически генерить еще одну песчинку, в которой задавать кол-во 332, а в "старой" менять кол-во на 668. А еще нужно как-то определять, сколько я хочу взять и могу ли я столько взять и т.п.
Но почему это должен делать я?
Неактивен
Очень смешно, Гранд! ![]()
У тебя сегодня просто хорошее настроение или ты признаешь, что в RTADS проблема клонов (впрочем, называйте их как хотите) не решена, не решается и никогда не будет решена?
Неактивен
Но, собственно, проблема клонов на этом не заканчивается ![]()
Есть еще клоны-контейнеры.
Пример:
В кладовке вы видите 2 ящика.
>положить нож на ящик
>осмотреть ящик
Что скажете по этому поводу? Особенно по второй команде?
А еще меня интересует вопрос вложенности предмета в предмет. Если я хочу положить нож в ящик, обязательно ли ящик должен находиться непосредственно в локации или, допустим, он может лежать в открытом контейнере (который находится в локации). Это, скорее, не к проблеме реализации (хотя и к ней тоже: нужно правильно определять, открыт ли путь доступа к указанному предмету), а просто к теории IF.
Неактивен
Э..Я имел в виду ваше личное мнение, а не как оно реализовано в TADS
Т.е. стоит ли позволять игроку ложить нож в ящик, который непосредственно в локации не находится (т.е. находится, но внутри другого контейнера. Или вообще на третьем и более уровне вложенности).
Неактивен
Никаких ограничений.
Я ожидал услышать только твое мнение. Просто тогда полная фраза для парсера будет выглядеть так:
>положить нож в ящик на подставке на столе
Или нет?
Неактивен
Можно просто:
>положить нож в ящик
Если будет неясно какой ящик, придется уточнить
Конечно, в таком случае придется уточнять, ведь мы говорим о клонах-контейнерах. Имелось в виду, что есть стол, на нем подставка, и есть 3 ящика: на полу, на столе и на подставке. Т.е. просто указанием "положить в ящик" мы ничего не добьемся, так как решили раньше, что можно брать все, что доступно, а в данном случае все три ящика равноодинаково доступны.
Извини, я непоследователен. Это надо было указать раньше ![]()
Неактивен