Бесплатный урок с нашим репетитором!

Узнать подробнее

Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Посмотреть все вопросы нейросети
Бесплатный пробный урок с репетитором

Узнай больше про репетиторов Новой Школы и запишись на бесплатный пробный урок. Мы проверим твой уровень знаний и составим план обучения по любому предмету и классу

Вопрос от Анонимного юзера 11 марта 2026 05:52

Напиши готовый код в питоне на игру новеллу

Ответ нейросети

11 марта 2026 05:52

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

Код:

import os

# Очистка экрана для nicer вывода
def clear_screen():
    os.system('cls' if os.name == 'nt' else 'clear')

# Начальные характеристики игрока
player = {
    "curiosity": 0,  # любопытство
    "bravery": 0,    # смелость
    "kindness": 0     # доброта
}

# Определение сцен (data-driven подход)
scenes = {
    "start": {
        "text": (
            "Ты просыпаешься в тихом городке. Утро только начинается, "
            "и вокруг пахнет свежей выпечкой. Что ты хочешь сделать?"
        ),
        "choices": [
            {"text": "Исследовать старую библиотеку", "next": "library", "effect": {"curiosity": 2, "bravery": 1}},
            {"text": "Заглянуть на рынок и помочь людям", "next": "market", "effect": {"kindness": 2}}
        ]
    },

    "library": {
        "text": (
            "В пылящих полках лежат книги и карты. Вдруг одна тушится темной "
            "впечатляющей обложкой – та самая, которую ты искал?"
        ),
        "choices": [
            {"text": "Открыть загадочную книгу", "next": "curse", "effect": {"curiosity": 2, "bravery": -1}},
            {"text": "Уйти и вернуться позже", "next": "ending_neutral", "effect": {"curiosity": 0}}
        ]
    },

    "market": {
        "text": (
            "На рынке торговцы спорят, и среди толпы видна однаитенько испуганная "
            "молодая продавщица. Ей нужна помощь."
        ),
        "choices": [
            {"text": "Помочь продавщице убрать припасённые коробки", "next": "ending_good", "effect": {"kindness": 2}},
            {"text": "Купить фрукты и уйти", "next": "ending_neutral", "effect": {"kindness": -1}}
        ]
    },

    "curse": {
        "text": (
            "Книга мгновенно светится, как реактив, и ты чувствуешь, что твоя сила "
            "уходит в неизвестном направлении. Но может быть, ты найдёшь выход?"
        ),
        "choices": [
            {"text": "Снова встретиться с библиотекарем за советом", "next": "ending_bad", "effect": {"bravery": 1}}
        ]
    },

    "ending_good": {
        "text": (
            "Ты проявил доброту и помог человеку. Город благодарен, а ты чувствуешь себя "
            "увереннее. Финал: добро всегда возвращается."
        ),
        "choices": []
    },

    "ending_neutral": {
        "text": (
            "Дня вроде бы и не произошло ничего особенного. Ты идёшь по своей дороге, "
            "получив мягкую уверенность в себе и спокойствие."
        ),
        "choices": []
    },

    "ending_bad": {
        "text": (
            "Твоя смелость привела к неожиданным последствиям. Картина сложна, и путь кажется "
            "неизвестным. Но помни: каждый выбор учит нас чему-то новому."
        ),
        "choices": []
    }
}


def show_stats():
    parts = [f"{k}: {v}" for k, v in sorted(player.items())]
    print("Характеристики:", ", ".join(parts))


def run_scene(key):
    clear_screen()
    scene = scenes[key]
    print(scene["text"])
    print()

    if not scene.get("choices"):
        # Конец сцены
        print("Игра окончена.")
        print()
        show_stats()
        return None

    # Показать варианты выбора
    for idx, ch in enumerate(scene["choices"], 1):
        print(f"{idx}. {ch['text']}")
    print()

    # Ввод выбора
    while True:
        choice = input("Ваш выбор (число): ").strip()
        if choice.isdigit():
            i = int(choice)
            if 1 <= i <= len(scene["choices"]):
                selected = scene["choices"][i - 1]
                # Применяем эффекты выбора
                for k, v in selected.get("effect", {}).items():
                    player[k] = player.get(k, 0) + v
                return selected["next"]
        print("Пожалуйста, введите корректное число варианта.")

def main():
    current = "start"
    while current is not None:
        current = run_scene(current)
        if current is None:
            break
        # По желанию можно очистить экран и показать краткое резюме после перехода
        # clear_screen()
        # print("Переходим к сцене:", current)
        # input("Нажмите Enter...")

    print("\nСпасибо за игру!")
    print("Итоги вашей истории:")
    show_stats()
    print("До новых встреч!")


if __name__ == "__main__":
    main()

Как работает код (пояснения по шагам):

  • Данные сцен вынесены в словарь scenes. Каждая сцена имеет текст и список вариантов (choices). Каждый вариант указывает, к какой сцене он ведёт (next) и какие эффекты даёт на характеристики персонажа (effect).
  • Игровой цикл: начиная с сцены "start", программа выводит текст сцены и варианты выбора. Пользователь вводит номер варианта, после чего применяется набор эффектов и производится переход к следующей сцене по ключу next.
  • Концы игры — сцены, где choices пусты (ending_good, ending_neutral, ending_bad). После достижения конца выводится итоговая статистика.
  • Характеристики игрока (curiosity, bravery, kindness) можно использовать для усложнения логики концовок или для динамической смены текста. Их можно расширять по желанию.

Как расширить и изменить (идеи):

  • Добавить больше сцен и более сложную логику концовок. Например, после прохождения нескольких сцен можно выбрать концовку в зависимости от пороговых значений характеристик.
  • Добавить сохранение прогресса в файл (например, JSON) и возможность загрузки.
  • Сделать интерфейс более визуальным: перейти к графическому окну через tkinter или Pygame, или использовать готовые движки типа Ren'Py (для профессиональных визуальных новелл).
  • Добавить инвентарь и задачи, головоломки, подсказки.

Если хочешь, могу адаптировать пример под конкретную тему (школьная история, загадка, романтика) или сделать версию с графическим интерфейсом. Также могу объяснить, как превратить этот код в более сложный движок с ветвлением по условиям и сохранением прогресса.

Задай свой вопрос

Напиши любую задачу или вопрос, а нейросеть её решит

Похожие вопросы 15

Бесплатно Мобильное приложение ГДЗ
Мобильное приложение ГДЗ

Задавай вопросы искуcственному интеллекту текстом или фотографиями в приложении на iPhone или Android

qr-codegoogle-playapp-store

Саша — ассистент в телеграмме

Напиши готовый код в питоне на игру новеллу
Ниже готовый простой консольный пример визуальной новеллы на Python 3. Это самоучительный минимальный движок: данные сцен вынесены в словарь, есть выборы, эффекты от решений и концовки. Подойдёт для средней школы и легко расширяется. Код: ```python import os # Очистка экрана для nicer вывода def clear_screen(): os.system('cls' if os.name == 'nt' else 'clear') # Начальные характеристики игрока player = { "curiosity": 0, # любопытство "bravery": 0, # смелость "kindness": 0 # доброта } # Определение сцен (data-driven подход) scenes = { "start": { "text": ( "Ты просыпаешься в тихом городке. Утро только начинается, " "и вокруг пахнет свежей выпечкой. Что ты хочешь сделать?" ), "choices": [ {"text": "Исследовать старую библиотеку", "next": "library", "effect": {"curiosity": 2, "bravery": 1}}, {"text": "Заглянуть на рынок и помочь людям", "next": "market", "effect": {"kindness": 2}} ] }, "library": { "text": ( "В пылящих полках лежат книги и карты. Вдруг одна тушится темной " "впечатляющей обложкой – та самая, которую ты искал?" ), "choices": [ {"text": "Открыть загадочную книгу", "next": "curse", "effect": {"curiosity": 2, "bravery": -1}}, {"text": "Уйти и вернуться позже", "next": "ending_neutral", "effect": {"curiosity": 0}} ] }, "market": { "text": ( "На рынке торговцы спорят, и среди толпы видна однаитенько испуганная " "молодая продавщица. Ей нужна помощь." ), "choices": [ {"text": "Помочь продавщице убрать припасённые коробки", "next": "ending_good", "effect": {"kindness": 2}}, {"text": "Купить фрукты и уйти", "next": "ending_neutral", "effect": {"kindness": -1}} ] }, "curse": { "text": ( "Книга мгновенно светится, как реактив, и ты чувствуешь, что твоя сила " "уходит в неизвестном направлении. Но может быть, ты найдёшь выход?" ), "choices": [ {"text": "Снова встретиться с библиотекарем за советом", "next": "ending_bad", "effect": {"bravery": 1}} ] }, "ending_good": { "text": ( "Ты проявил доброту и помог человеку. Город благодарен, а ты чувствуешь себя " "увереннее. Финал: добро всегда возвращается." ), "choices": [] }, "ending_neutral": { "text": ( "Дня вроде бы и не произошло ничего особенного. Ты идёшь по своей дороге, " "получив мягкую уверенность в себе и спокойствие." ), "choices": [] }, "ending_bad": { "text": ( "Твоя смелость привела к неожиданным последствиям. Картина сложна, и путь кажется " "неизвестным. Но помни: каждый выбор учит нас чему-то новому." ), "choices": [] } } def show_stats(): parts = [f"{k}: {v}" for k, v in sorted(player.items())] print("Характеристики:", ", ".join(parts)) def run_scene(key): clear_screen() scene = scenes[key] print(scene["text"]) print() if not scene.get("choices"): # Конец сцены print("Игра окончена.") print() show_stats() return None # Показать варианты выбора for idx, ch in enumerate(scene["choices"], 1): print(f"{idx}. {ch['text']}") print() # Ввод выбора while True: choice = input("Ваш выбор (число): ").strip() if choice.isdigit(): i = int(choice) if 1 <= i <= len(scene["choices"]): selected = scene["choices"][i - 1] # Применяем эффекты выбора for k, v in selected.get("effect", {}).items(): player[k] = player.get(k, 0) + v return selected["next"] print("Пожалуйста, введите корректное число варианта.") def main(): current = "start" while current is not None: current = run_scene(current) if current is None: break # По желанию можно очистить экран и показать краткое резюме после перехода # clear_screen() # print("Переходим к сцене:", current) # input("Нажмите Enter...") print("\nСпасибо за игру!") print("Итоги вашей истории:") show_stats() print("До новых встреч!") if __name__ == "__main__": main() ``` Как работает код (пояснения по шагам): - Данные сцен вынесены в словарь scenes. Каждая сцена имеет текст и список вариантов (choices). Каждый вариант указывает, к какой сцене он ведёт (next) и какие эффекты даёт на характеристики персонажа (effect). - Игровой цикл: начиная с сцены "start", программа выводит текст сцены и варианты выбора. Пользователь вводит номер варианта, после чего применяется набор эффектов и производится переход к следующей сцене по ключу next. - Концы игры — сцены, где choices пусты (ending_good, ending_neutral, ending_bad). После достижения конца выводится итоговая статистика. - Характеристики игрока (curiosity, bravery, kindness) можно использовать для усложнения логики концовок или для динамической смены текста. Их можно расширять по желанию. Как расширить и изменить (идеи): - Добавить больше сцен и более сложную логику концовок. Например, после прохождения нескольких сцен можно выбрать концовку в зависимости от пороговых значений характеристик. - Добавить сохранение прогресса в файл (например, JSON) и возможность загрузки. - Сделать интерфейс более визуальным: перейти к графическому окну через tkinter или Pygame, или использовать готовые движки типа Ren'Py (для профессиональных визуальных новелл). - Добавить инвентарь и задачи, головоломки, подсказки. Если хочешь, могу адаптировать пример под конкретную тему (школьная история, загадка, романтика) или сделать версию с графическим интерфейсом. Также могу объяснить, как превратить этот код в более сложный движок с ветвлением по условиям и сохранением прогресса.