Код для ИИ с целью создания историй

Автор: Каваев Игорь

Пользуйтесь на здоровье.


class StoryGenerator:

    def __init__(self):

        # 12 архетипов (по Кэрол Пирсон)

        self.archetypes = {

            "Герой": "Стремится к победе и славе.",

            "Бунтарь": "Бросает вызов системе.",

            "Сирота": "Ищет дом/семью.",

            "Мудрец": "Ищет истину.",

            "Славный малый": "Защищает простое добро.",

            "Любовник": "Жертвует ради чувств.",

            "Творец": "Создает новую реальность.",

            "Шут": "Меняет мир через абсурд.",

            "Опекун": "Спасает других.",

            "Искатель": "Ищет смысл.",

            "Правитель": "Контролирует порядок.",

            "Маг": "Меняет правила игры."

        }


        # 36 ситуаций Польти (упрощённо)

        self.polt_conflicts = [

            "Спасение", "Месть", "Жертва", "Бунт", 

            "Погоня", "Тайна", "Воскрешение", "Потеря"

        ]


        # Метафоры (а-ля Борхес)

        self.metaphors = {

            "Лабиринт": "Символ запутанного пути.",

            "Зеркало": "Двойственность реальности.",

            "Сон": "Грань между мирами.",

            "Двойник": "Внутренняя/внешняя тень."

        }


    def generate_story(self, genre, main_archetype, secondary_archetype, conflict, metaphor):

        # Проверка на шаблонность

        if main_archetype == secondary_archetype:

            raise ValueError("Архетипы не должны повторяться!")


        # Шаг 1: Определение структуры

        story_template = {

            "Жанр": genre,

            "Архетипы": {

                "Основной": f"{main_archetype}: {self.archetypes[main_archetype]}",

                "Второстепенный": f"{secondary_archetype}: {self.archetypes[secondary_archetype]}"

            },

            "Конфликт": f"{conflict} ({self.polt_conflicts[conflict]})",

            "Метафора": f"{metaphor}: {self.metaphors[metaphor]}",

            "Акт 1 (Завязка)": "",

            "Акт 2 (Конфликт)": "",

            "Акт 3 (Катарсис)": ""

        }


        # Шаг 2: Заполнение актов

        story_template["Акт 1 (Завязка)"] = (

            f"{main_archetype} в обычном мире. "

            f"Триггер: {self.polt_conflicts[conflict]}. "

            f"Метафора: {metaphor}."

        )


        story_template["Акт 2 (Конфликт)"] = (

            f"{main_archetype} и {secondary_archetype} сталкиваются с серией препятствий. "

            f"Кульминация: {self.metaphors[metaphor]}"

        )


        story_template["Акт 3 (Катарсис)"] = (

            f"Жертва/Выбор: {main_archetype} трансформируется. "

            f"Итог: Новый статус-кво через {self.metaphors[metaphor].split('.')[0]}."

        )


        return story_template


# Пример использования

generator = StoryGenerator()


# Параметры для истории (можно менять)

story = generator.generate_story(

    genre="Военная драма",

    main_archetype="Славный малый",

    secondary_archetype="Мудрец",

    conflict=1,  # Индекс из polt_conflicts (Месть)

    metaphor="Лабиринт"

)


# Вывод результата

print("ШАБЛОН ИСТОРИИ:")

print("---------------")

print(f"Жанр: {story['Жанр']}")

print(f"Архетипы:\n- {story['Архетипы']['Основной']}\n- {story['Архетипы']['Второстепенный']}")

print(f"Конфликт: {story['Конфликт']}")

print(f"Метафора: {story['Метафора']}")

print("\nСтруктура:")

print(f"Акт 1: {story['Акт 1 (Завязка)']}")

print(f"Акт 2: {story['Акт 2 (Конфликт)']}")

print(f"Акт 3: {story['Акт 3 (Катарсис)']}")

+9
95

0 комментариев, по

962 1 098 248
Наверх Вниз