Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Генерация предложений


Автор: Sonyk 19.2.2010, 13:09
Добрый день всем. Многие из вас наверняка переиграли во всякие текстовые онлафновые игры типа бойцовского клуба, территории, арены. Я когда-то играл в Арене, затем их стало появлятся просто невероятное множество. Не суть. Кто играл, тот знает, что в этих играх при бое присутствует лог сообщений боя. Мне интересно как реализована эта часть. Генерируют ли абсолютно случайные предложения со смыслом, либо они используют заготовленные предложения, а только подставляют местоимения. Я даже не знаю как сформулировать вопрос. Допустим, у меня есть много действий (около 10) и 2 действущих лица (Как в одной из этих игр). Нужно сгенерировать случайное предложение о взаимодействии этих двух лиц. Как это сделать? Строить дерево из всех возможных конструкций русских предложений? Вобщем, за любой совет буду благодарен!

Автор: UniBomb 19.2.2010, 14:25
Sonyk, ну а что тут может быть сложного)) заводиш три массива строк. Первый - с именами, второй с действиями а третий с эпитетами. Заранее заполняешь два последних какими-нибудь нейтральными словами, не дающими никаких указаний пола, расы и прочих атрибутов. Далее формируешь предложение беря имя текущего героя из первого массива и рандомно любое значение из последних двух массивов. Например:

Код

epithet[3] = "В порыве ярости", "Из последних сил", "Со всей дури";
action[3] = "рубит топором", "бьёт прикладом", "испускает зловония";
names[2] = "Живчик", "Жмурик";



Далее ты формируешь предложение:

Код

printf("%s %s %s, урон составил %i хелсов", epithet[rand()%3], names[curent], action[rand()%3], rand()%100);


Далее в таком же духе. Т.е. если скажем пользователи сами же выбирают ещё и какие удары наносить, то из второго массива берутся соответствующие элементы. Эпитетов можно понатыкать превеликое множество в разных частях предложения.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)