Вопрос от Анонимного юзера 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 (для профессиональных визуальных новелл).
- Добавить инвентарь и задачи, головоломки, подсказки.
Если хочешь, могу адаптировать пример под конкретную тему (школьная история, загадка, романтика) или сделать версию с графическим интерфейсом. Также могу объяснить, как превратить этот код в более сложный движок с ветвлением по условиям и сохранением прогресса.
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



