Python is building a text game, the python is still fighting a mistake if I choose first one answer then two or three, the next dialogue breaks.
-
print("Хотите начать игру? (Да/Нет)") play = input("") if(play == 'Да'): print() print("Я видел какой-то сон, кто-то тянулся к синему кристалу") print("Потом стало темно") print("Мне кажется я здесь не один...") print() print("S.T.A.L.K.E.R") while True: print() print("Диалог") print("{") print(" Вадим: Мда, интересно как тебя сюда занесло") print() print("/// Выберете ответ(1/2/3...) ///") print("/// 1.Где я? ///") VadikDialogStarted1 = input("") print() while True: if (VadikDialogStarted1 == "1"): print(" Вы: Где я?") print(" Вадим: Ты в Зоне. Как тебя звать?") print() print("/// Выберете ответ(1/2/3...) ///") print("/// 1.В какой зоне? ///") print("/// 2.А как тебя? ///") print("/// 3.Я не помню своего имени.") VadikDialogStarted2 = input("") print() else: break while True: if (VadikDialogStarted2 == "1"): print(" Вы: В какой зоне?") print(" Вадим: Всмысле в какой? В Зоне Очуждения.") print() print("/// Выберете ответ(1/2/3...) ///") print("/// 1.В ЗОНЕ ОЧУЖДЕНИЯ?! ///") VadikDialogStarted3 = input("") print() elif (VadikDialogStarted2 == "2"): print(" Вы: А как тебя?") print(" Вадим: Вадим.") print() print("/// Выберете ответ(1/2/3...) ///") print("/// 1.Приятно позакомится. ///") Vadik_Dialog_Nice_to_meet_you = input("") print() elif (VadikDialogStarted2 == "3"): print(" Вы: Я не помню своего имени.") print( " Вадим: Мда, плохи дела. Ну нечего, следуй за мной. Я покажу тебе дорогу в уромное местечко. Отсюда недалеко.") print() print("/// Выберете ответ(1/2/3...) ///") print("/// 1.Ну пойдём. ///") Vadik_dialog_Idem_to_the_village = input("") print() else: break while True: if (VadikDialogStarted3 == "1"): print(" Вы: В ЗОНЕ ОЧУЖДЕНИЯ?!") print(" Вадим: Ну да.") print() print("/// Выберете ответ(1/2/3...) ///") print("/// 1.Во попал! ///") VadikDialogStarted4 = input("") print() elif (Vadik_Dialog_Nice_to_meet_you == "1"): print(" Вы: Приятно познакомится") print(" Вадим: Так как тебя зовут?") print() print("/// Выберете ответ(1/2/3...) ///") print("/// 1.Не помню! ///") print("/// 1.Я помню только 3 первых буквы 'Бро...'") Vadik_Dialog_I_dont_remember = input("") print() elif (Vadik_dialog_Idem_to_the_village == "1"): print(" Вы: Ну пойдём") print(" Вадим: Следуй за мной") print("}") print() print("A.Следовать за Вадиком") print("B.Поговорить") QuestStarted1 = input("Действие:") else: break while True: if (VadikDialogStarted4 == "1"): print(" Вы: Во попал!") print(" Вадим: Пошли за мной. Покажу укромное местечко.") print() print("/// Выберете ответ(1/2/3...) ///") print("/// 1.Ну пойдём ///") VadikDialogStarted5 = input("") print() elif (Vadik_Dialog_I_dont_remember == "1"): print(" Вы: Не помню!") print(" Вадим: Какой-то ты раздражительный.") print() print("/// Выберете ответ(1/2/3...) ///") print("/// 1.А ты как думал? Голова пухнет, нечего не помню. ///") print("/// 2.... ///") Vadik_Dialog_is_Irritable = input("") else: break while True: if (VadikDialogStarted5 == "1"): print(" Вы: Ну пойдём") print("}") print() print("A.Следовать за Вадиком") print("B.Поговорить") QuestStarted1 = input("Действие:") elif (Vadik_Dialog_is_Irritable == "1"): print(" Вы: А ты как думал? Голова пухнет, нечего не помню.") print(" Вадим: Ну ладно. Пойдём за мной, я знаю место где можно отдохнуть.") print() print("/// Выберете ответ(1/2/3...) ///") print("/// 1.Пойдём. ///") elif (Vadik_Dialog_is_Irritable == "2"): print(" Вы: ...") print(" Вадим: Пойдём за мной, я знаю место где можно отдохнуть.") print() print("/// Выберете ответ(1/2/3...) ///") print("/// 1. Пошли. ///") Vadik_Dialog_Idem_to_the_village2 = input("") else: break while True: if (Vadik_Dialog_Idem_to_the_village2 == "1"): print(" Вы: Пошли") print("}") print() print("A.Следовать за Вадиком") QuestStarted1 = input("Действие:") else: break elif(play == 'да'): print() print("Я видел какой-то сон, кто-то тянулся к синему кристалу") print("Потом стало темно") print("Мне кажется я здесь не один...") print() print("S.T.A.L.K.E.R") while True: print() print("Диалог") print("{") print(" Вадим: Мда, интересно как тебя сюда занесло") print() print("/// Выберете ответ(1/2/3...) ///") print("/// 1.Где я? ///") VadikDialogStarted1 = input("") print() while True: if(VadikDialogStarted1 == "1"): print(" Вы: Где я?") print(" Вадим: Ты в Зоне. Как тебя звать?") print() print("/// Выберете ответ(1/2/3...) ///") print("/// 1.В какой зоне? ///") print("/// 2.А как тебя? ///") print("/// 3.Я не помню своего имени.") VadikDialogStarted2 = input("") print() else: break while True: if (VadikDialogStarted2 == "1"): print(" Вы: В какой зоне?") print(" Вадим: Всмысле в какой? В Зоне Очуждения.") print() print("/// Выберете ответ(1/2/3...) ///") print("/// 1.В ЗОНЕ ОЧУЖДЕНИЯ?! ///") VadikDialogStarted3 = input("") print() elif (VadikDialogStarted2 == "2"): print(" Вы: А как тебя?") print(" Вадим: Вадим.") print() print("/// Выберете ответ(1/2/3...) ///") print("/// 1.Приятно позакомится. ///") Vadik_Dialog_Nice_to_meet_you = input("") print() elif (VadikDialogStarted2 == "3"): print(" Вы: Я не помню своего имени.") print(" Вадим: Мда, плохи дела. Ну нечего, следуй за мной. Я покажу тебе дорогу в уромное местечко. Отсюда недалеко.") print() print("/// Выберете ответ(1/2/3...) ///") print("/// 1.Ну пойдём. ///") Vadik_dialog_Idem_to_the_village = input("") print() else: break while True: if (VadikDialogStarted3 == "1"): print(" Вы: В ЗОНЕ ОЧУЖДЕНИЯ?!") print(" Вадим: Ну да.") print() print("/// Выберете ответ(1/2/3...) ///") print("/// 1.Во попал! ///") VadikDialogStarted4 = input("") print() elif (Vadik_Dialog_Nice_to_meet_you == "1"): print(" Вы: Приятно познакомится") print(" Вадим: Так как тебя зовут?") print() print("/// Выберете ответ(1/2/3...) ///") print("/// 1.Не помню! ///") print("/// 1.Я помню только 3 первых буквы 'Бро...'") Vadik_Dialog_I_dont_remember = input("") print() elif (Vadik_dialog_Idem_to_the_village == "1"): print(" Вы: Ну пойдём") print(" Вадим: Следуй за мной") print("}") print() print("A.Следовать за Вадиком") print("B.Поговорить") QuestStarted1 = input("Действие:") else: break while True: if (VadikDialogStarted4 == "1"): print(" Вы: Во попал!") print(" Вадим: Пошли за мной. Покажу укромное местечко.") print() print("/// Выберете ответ(1/2/3...) ///") print("/// 1.Ну пойдём ///") VadikDialogStarted5 = input("") print() elif (Vadik_Dialog_I_dont_remember == 1): print(" Вы: Не помню!") print(" Вадим: Какой-то ты раздражительный.") print() print("/// Выберете ответ(1/2/3...) ///") print("/// 1.А ты как думал? Голова пухнет, нечего не помню. ///") print("/// 2.... ///") Vadik_Dialog_is_Irritable = input("") else: break while True: if (VadikDialogStarted5 == "1"): print(" Вы: Ну пойдём") print("}") print() print("A.Следовать за Вадиком") print("B.Поговорить") QuestStarted1 = input("Действие:") elif (Vadik_Dialog_is_Irritable == "1"): print(" Вы: А ты как думал? Голова пухнет, нечего не помню.") print(" Вадим: Ну ладно. Пойдём за мной, я знаю место где можно отдохнуть.") print() print("/// Выберете ответ(1/2/3...) ///") print("/// 1.Пойдём. ///") elif (Vadik_Dialog_is_Irritable == "2"): print(" Вы: ...") print(" Вадим: Пойдём за мной, я знаю место где можно отдохнуть.") print() print("/// Выберете ответ(1/2/3...) ///") print("/// 1. Пошли. ///") Vadik_Dialog_Idem_to_the_village2 = input("") else: break while True: if (Vadik_Dialog_Idem_to_the_village2 == "1"): print(" Вы: Пошли") print("}") print() print("A.Следовать за Вадиком") QuestStarted1 = input("Действие:") else: break elif(play == 'Нет'): print() print("Конец игры") elif (play == 'нет'): print() print("Конец игры") else: print() print("Конец Игры")
-
Well, that could look like that.
The vocabulary describes the stages of the quest: what text, the type of action, the options for the answers and the transfer mark(s the dictionary) should be translated in the case of a specific response.
Well, the function is centrally processed at the current stage of the quest: anonymised withdrawal, numbering of the list of replies, verification of the correctness of the entry of the response number, repetition of your response, transition to the next stage of the quest.import time
QUEST = {
"intro" : ("""
Я видел какой-то сон, кто-то тянулся к синему кристалу
Потом стало темно
Мне кажется я здесь не один...S.T.A.L.K.E.R
""", "goto", "meet_vadim"
),
"meet_vadim" : ("""
\tВадим: Мда, интересно как тебя сюда занесло
""", "question", {"Где я?" : "vadik1"}
),
"vadik1" : ("""
\tВадим: Ты в Зоне. Как тебя звать?
""", "question", {"В какой зоне?" : "vadik2",
"А как тебя?" : "vadik3",
"Я не помню своего имени.": "vadik4"}
),
"vadik2" : ("""
\tВадим: Всмысле в какой? В Зоне Очуждения.
""", "question", {"В ЗОНЕ ОЧУЖДЕНИЯ?!" : "vadik5"}
),
"vadik3" : ("""
\tВадим: Вадим.
""", "question", {"Приятно позакомится." : "vadik6"}
),
"vadik4" : ("""
\tВадим: Мда, плохи дела. Ну нечего, следуй за мной.
\t Я покажу тебе дорогу в уромное местечко. Отсюда недалеко.
""", "question", {"Ну пойдём." : "vadik7"}
),
"vadik5" : ("""
\tВадим: Ну да.
""", "question", {"Во попал!" : "vadik8"}
),
"vadik6" : ("""
\tВадим: Так как тебя зовут?
""", "question", {"Не помню!" : "vadik9",
"Я помню только 3 первых буквы 'Бро...'" : "vadik11"}
),
"vadik7" : ("""
\tВадим: Следуй за мной.
""", "action", {"Следовать за Вадиком" : "go_vadik",
"Поговорить" : "speak_vadik"}
),
"vadik8" : ("""
\tВадим: Пошли за мной. Покажу укромное местечко.
""", "question", {"Ну пойдём" : "vadik_go_act"}
),
"vadik9" : ("""
\tВадим: Какой-то ты раздражительный.
""", "question", {"А ты как думал? Голова пухнет, нечего не помню." : "vadik12",
"...." : "vadik13"}
),
"vadik_go_act" : ("""
""", "action", {"Следовать за Вадиком" : "go_vadik",
"Поговорить" : "speak_vadik"}
),
"vadik11" : ("""
\tВадим: Сочувствую. Ну ладно. Пойдём за мной, я знаю место где можно отдохнуть.
\t Может и имя своё вспомнишь.
""", "question", {"Ну пойдём" : "vadik_go_act"}
),
"vadik12" : ("""
\tВадим: Ну ладно. Пойдём за мной, я знаю место где можно отдохнуть.
""", "question", {"Пойдём" : "vadik_go_act"}
),
"vadik13" : ("""
\tВадим: Пойдём за мной, я знаю место где можно отдохнуть.
""", "question", {"Пошли" : "vadik_go_act"}
),
"go_vadik" : ("""
Все ушли в закат.
""", "goto", "outro"
),
"speak_vadik" : ("""
Вы попытались заговорить с Вадимом, но тут яркая вспышка озарила небо.
""", "goto", "outro"
),
"outro" : ("""
КОНЕЦ.
""", "exit", ""
)
}def slow_print(text):
for letter in text:
print(letter, end="", flush=True)
time.sleep(0.025)
print()def go(quest, stage="intro"):
while True:
text, type, action = quest[stage]
slow_print(text.lstrip("\n"))
if type == "goto":
stage = action
time.sleep(1)
elif type in ("question", "action"):
while True:
time.sleep(0.5)
print(f"/// Выберете {'ответ' if type == 'question' else 'действие'} ({'/'.join(map(str, range(1, len(action)+1)))}) ///")
variants = list(action.items())
for i, question in enumerate(variants, 1):
print(f"/// {i}. {question[0]}")
answer = input()
if answer.isdigit():
answer = int(answer)
if 0 < answer <= len(action):
if type == "question":
slow_print(f"\tВы: {variants[answer-1][0]}")
stage = variants[answer-1][1]
break
print("Ваш ответ не ясен. Повторите.")
elif type == "exit":
returngo(QUEST)