Я хочу парсер с блэкджеком и «девушками с низкой социальной ответственностью».
Можно ли, чтобы от основного текста игры, допустим слева, была карта. Но, не статичная картинка, а на которой отображалось перемещение игрока, — ну как в обычных играх.
Ещё, как сделать перемещение по названию локаций, а не по сторонам света?
Отредактировано Kephra (28.08.2018 04:12)
Неактивен
Можно. Если это RInform + Glulx или метапарсер инстеда. Но никто это пока не делал.
Если подробнее, то в инстеде это просто ещё никто не делал, а в Inform такую сложность смогли написать только после появления Inform 7 (AFAIK).
Для Inform 7 (и как подсказку по алгоритмам) можно почитать код Kerkerkruip.
UPD: не заметил, что это раздел про RTADS :-) это вуду ещё сложнее, потому что HTML-TADS это урезанный HTML 3.2, очень старый и ограниченный для такого. Там нет возможности собирать одно изображение из нескольких, то есть, это будет одна большая карта из мелких тайлов и у каждого тайла по два варианта - без игрока и когда игрок на нём стоит. Если в игре кроме игрока ещё и перемещаются монстры, и их тоже хочется показывать на карте, то это ещё больше вариаций для тайлов и ещё больше размер игры. И это будет не слева, а в тексте игры, потому что опять же в TADS-HTML нет позиционирования блоков.
Отредактировано Oreolek (28.08.2018 10:18)
Неактивен
«И это будет не слева, а в тексте игры, потому что опять же в TADS-HTML нет позиционирования блоков.»
А как же Тетрис Grandrey'a? Там динамичная «карта» по центру, а текст справа.
Отредактировано Kephra (28.08.2018 13:22)
Неактивен
Если без картинок, то подойдет как в тетрисе. Нарисовать программно цветные квадраты-локации допустим с их названиями в центре, где нахождение игрока будет окрашивать квадрат-локацию в другой цвет. Картинка прилагается. Что-то похожее на «майнд-карты».
Отредактировано Kephra (28.08.2018 13:12)
Неактивен
А как же Тетрис Grandrey'a? Там «карта» по центру, а текст слева.
Хм, я и забыл про таблицы. Есть такой вариант, через баннер с левым позиционированием. Он будет слева всего текста, шириной в четверть окна, высота как повезёт. В нём выводить таблицу как у Гранда с чётким размером ячеек 10x10 и менять фон bgcolor:
<banner align=left width="25%"><table border=0 align=center> <tr><td> <table border=1 align=center> цикл по строкам <tr> цикл по клеткам <td bgcolor=RGB фон клетки width=10 height=10> </td> </table> </td></table></banner>
Отредактировано Oreolek (28.08.2018 13:50)
Неактивен
Kephra написал:
Можно ли, чтобы от основного текста игры, допустим слева, была карта. Но, не статичная картинка, а на которой отображалось перемещение игрока, — ну как в обычных играх.
С учётом того, что текстовые парсерные игры были одними из первых, это ещё большой вопрос, кого считать обычными, а кого выпендрёжниками. :-)
Объявляете функцию отрисовки карты и вызываете её как демона, обычно это стоит делать прямо в функции глобальной инициализации init().
Сама функция отрисовывает баннер с нужным позиционированием, сверяясь после каждого хода с игровой ситуацией. В зависимости от ваших потребностей можно использовать разные способы отрисовки карты внутри данного баннера:
Откровенно говоря, дальше первого и первой половины второго вариантов я бы идти не советовал, а при сильном желании это сделать рекомендовал бы сменить платформу. С точки зрения задачи в рамках написания русскоязычной парсерной игры, пожалуй, на INSTEAD + Метапарсер 3, если соответствующие потери функциональности стандартной библиотеки и специализированности языка разработки будут сочтены несущественными или приемлемыми.
При всём этом, в отрисовывающей баннер функции желательно не забыть сделать через systemInfo() проверку типа интерфейса пользователя, чтобы отключить все отрисовки для plain text, обеспечив воспроизводимость в данном режиме без вывода технического хлама.
(О функциях-демонах см. главу 4 (раздел 3) руководства RTADS, о работе с баннерами - гл. 9, о работе с внешними файлами - гл. 5, о создании внешних функций - приложение F.)
Kephra написал:
Ещё, как сделать перемещение по названию локаций, а не по сторонам света?
Команда типа "идти в %объект%" является частью стандартной библиотеки и обрабатывается методами verDoEnter и doEnter названного объекта. В зависимости от стоящих задач могут быть разные подходы к реализации:
(Подробности по упомянутым функциям, классам, объектам и их свойствам/методам см. в главе 5 и приложении B руководства RTADS.)
Oreolek написал:
Можно. Если это RInform + Glulx или метапарсер инстеда. Но никто это пока не делал.
Если уж вспоминать альтернативные платформы, то стоит упомянуть ADRIFT, где интерактивная карта является функцией "из коробки" в стандартном интерпретаторе. Вот только во всём остальном ADRIFT плох как парсерная платформа, особенно русскоязычная, в том числе и для решения второй поставленной задачи.
Oreolek написал:
И это будет не слева, а в тексте игры, потому что опять же в TADS-HTML нет позиционирования блоков.
TADS может позиционировать баннер как таковой, а также содержимое баннера средствами табличной вёрстки.
Oreolek написал:
Он будет слева всего текста, шириной в четверть окна, высота как повезёт.
Для того, чтобы не полагаться на везение надо чётко представлять, как работает механизм баннеров. Измерение, не задаваемое баннеру в явной форме, равняется размеру доступной свободной области. Доступная область чётко зависит от наших собственных предшествующих действий с баннерами. Изначально стандартная библиотека имеет только одно тонкое место, а именно баннер статусной строки в верхней части экрана. Если влезть раньше инициализации этого баннера в функции init(), то мы отхватим всю высоту, а если после, то высоту за вычетом статусбара.
Неактивен
Nikita написал:
Мелкими ячейками или баннерами можно нарисовать и более сложную геометрическую структуру, но если стоит вопрос скругления прямоугольных фигур, то это потребует слишком высокого разрешения, что может оказаться не очень благоприятно для производительности. Здесь можно выводить в стыкуемые области картинки с нужными формами.
Ячейки или банеры вполне подходят. Карта эта нужна только для наглядности, поэтому пусть она будет схематичной, чтобы не отвлекаться от текста на яркую, красочную карту.
Nikita написал:
...если вы готовы писать алгоритм генерации графического файла на языке TADS или же выносить это во внешнюю функцию на языке с поддержкой интерфейса в стиле C, разруливая все вопросы переносимости кода, выходящего за рамки виртуальной машины TADS.
Верх моего мастерства на си, это игра морской бой .
Nikita написал:
если соответствующие потери функциональности стандартной библиотеки и специализированности языка разработки будут сочтены несущественными или приемлемыми.
Нет — парсер это главное, а остальные удобства, фишки, то вспомогательное.
Nikita написал:
Если в целевую локацию есть дверь, то это всё работает уже в её объекте, надо только добавить нужные синонимы для обращения.
Именно это мне и нужно, пока. Чтобы можно было вместо сторон света писать «идти в Кухню», или только название локации «кухня» — хотя такой вариант думаю работать не будет, без глагола идти.
Nikita написал:
Если стоит задача обеспечить проход в не соседнюю локацию, а, например, в кухню из комнаты, между которыми есть коридор, ну и так в любую несмежную локацию карты
Да и так тоже надо: ходить в не смежные, но только уже посещенные локации.
Ну в общем спасибо за такой подробный ответ и за отсылки на страницы документации — будем курить.
Неактивен