Я хочу парсер с блэкджеком и «девушками с низкой социальной ответственностью».
Можно ли, чтобы от основного текста игры, допустим слева, была карта. Но, не статичная картинка, а на которой отображалось перемещение игрока, — ну как в обычных играх.
Ещё, как сделать перемещение по названию локаций, а не по сторонам света?
Отредактировано Kephra (28.08.2018 04:12)
Неактивен
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(), то мы отхватим всю высоту, а если после, то высоту за вычетом статусбара.
Неактивен