Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Символы для парсера (http://www.flasher.ru/forum/showthread.php?t=215707)

Appleman 11.04.2019 10:11

Символы для парсера
 
Друзья!

Я помню, этот вопрос уже мельком поднимался, но сейчас он окончательно передо мной встал, поэтому прошу совета.

В моей игре, сделанной в виде текстового квеста, подбор фраз - ключевой момент Вью, т.к. фактически это главный способ обратной связи. Изначально планировал формировать по кусочкам, но проблема возникает с их стыковкой с учётом родов/падежей, тавтологии, в общем, полный швах. Сейчас избрал другой подход - заранее заготавливать более крупные куски фраз, и снабжать их "тегами", увидив которые, парсер будет подменять их на более мелкие словесные вставки, обусловленные контекстом. Что-то типа:

%ACTOR_NAME% замахнулся и %ATTACK_STRENGTH% ударил врага %EQUIPPED|P5%

Таким образом, я рассчитываю получить более-менее связный текст с нужной степенью разнообразия. Вопрос. Каким образом вы порекомендуете обозначать начало и окончание каждого такого тега в тексте, чтобы не влепиться в какие-нибудь зарезервированные кем-то комбинации?

Спасибо.

СлаваRa 11.04.2019 11:41

Что такое зарезервированная комбинация? и кто в вашем проекте их резервирует?

Appleman 11.04.2019 12:00

Я имею в виду не в моём проекте, а в более широком пространстве: среда выполнения, операционка и т.п.

СлаваRa 11.04.2019 12:34

Или я вас не понимаю или вы что-то "накрутили" себе в голове :)

caseyryan 11.04.2019 21:51

Цитата:

Сообщение от Appleman (Сообщение 1206447)
Я имею в виду не в моём проекте, а в более широком пространстве: среда выполнения, операционка и т.п.

Внутри строк нет ничего зарезервированного. Можно их вообще никак не обозначать специально.
Код AS3:

var someText:String = "SOME_ACTOR замахнулся на ANOTHER_ACTOR и ударил его";
// дальше получаешь нужный результат
someActor = someActore.replace("SOME_ACTOR", actor1Name).replace("ANOTHER_ACTOR", actor2Name);

Можешь и %% использовать с двух сторон. Это всё только для того, чтобы ты сам зрительно видел, что это именно переменная. Никакой роли это не играет. Кто-то делает, например {{someVar}} и парсят формат. В некоторых языках подобный функционал поддерживается из коробки (но не в ас3). Можешь не опасаться, что использование %% дернет какую-то переменную среды в системе) ас3 никуда просто так не вылезет из своей песочницы. Да и не только as3.

Appleman 11.04.2019 23:50

caseyryan, большое спасибо. Я именно об этом и спрашивал.

Твой вариант не пойдёт, т.к. конструкции могут быть разной длины. Например, прямо в тексте содержать вариант для мужского и женского рода. Поэтому потребуется чётко обозначать начало и конец фрагмента.

caseyryan 12.04.2019 09:23

Я сразу не обратил внимание, что у тебя там составные переменные внутри. В этом случае тебе придется регулярками искать ограниченную с двух сторон часть, поэтому с % могут возникать проблемы, когда у тебя там будут показаны проценты, ну типа %FOR|VALUE%%. Лучше используй какой-то другой ограничитель, которого в простом тексте точно не будет. Например, {{тут составная переменная}} или <<тут составная переменная>>
Но, в принципе, можно проценты в тексте передавать как PERCENT, а потом уже менять на % при парсинге. В общем, вариантов решения можно придумать много

ZergMaster 12.04.2019 13:47

я что-то забыл, а в as3 разве нет такого синтаксиса, как в js
Код AS3:

var someText: String = `${ACTOR_NAME} замахнулся и ${ATTACK_STRENGTH} ударил врага ${this.getEQUIPPED()}`

?

СлаваRa 12.04.2019 13:59

Интерполяции строк в as3 никогда не было.

Appleman 03.07.2019 18:32

Друзья!

Посоветуйте, кто сталкивался, самому лениво думать. Я разобрался с регулярками для подстановки имён персонажей и наименований действий в нужных падежах и т.п.

Теперь возник вопрос с вёрсткой. Какой-то текст нужно выделить жирным, другой - "покрасить" в цвет персонажа. Пока планирую повторить разметку html с тегами в угловых скобках. В частности, для жирного текста ставить теги <b> и </b>, а для текста главного героя ставить <pl> и </pl>. Что думаете по этому поводу?

Возможно, кто-то решал подобные задачи и нашёл более эффективный метод. Тексты живут в файлах XML.


Часовой пояс GMT +4, время: 12:01.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.