Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите пожалуйста с программным кодом. Python

Gghh Hhtrg Ученик (90), открыт 1 неделю назад
4 ответа
Кто-то Мастер (1528) 1 неделю назад
Чего не так та
Gghh HhtrgУченик (90) 1 неделю назад
прочитай то что внизу
Кто-то Мастер (1528) Gghh Hhtrg, прочитал, всё правильно у тебя вроде
ᅠ ᅠ Гуру (3657) 1 неделю назад
Код нужно предоставлять в полном виде, а также писать свою проблему и то, что тебе требуется на самом деле.
Ridens Verum Dicere! Искусственный Интеллект (133665) 1 неделю назад
Я так понял ты пишешь текстовый квест.
Что то мне подсказывает что его надо писать не постоянно через if/elif
Nikassaiop End Просветленный (41649) 1 неделю назад
1)Чтобы что-то случилось/не случилось, удобно использовать флаги с помощью типа Boolean;
Пример:
 if x>1:
no_step_2 = True
if (x<3) and no_step_2:
//Этот код случится только при совпадении двух условий сразу => только при целом значении 2
2)Не стоит писать в таком формате текстовый квест в принципе, лучше сформировать полноценную функцию шага и хранить прогресс прохождения отдельно, по нему извлекать данные этого этапа и ответы из массива строк (JSON отлично подойдет).
Продемонстрирую простейшую реализацию такого подхода:
 stages = [ 
["Вы на краю скалы, совершить прыжок?", "ДаTD1", "НетTD2"],
["Вы превратились в мокрое место у подножия. Зачем?"],
["Ваша жизнь скучна. Но все еще существует", "Я передумал, мне стоит прыгнуть?TD0", "Спуститься той же дорогой, которой пришел сюдаTD3", "Постоять еще немногоTD2"],
["Споткнулись и покатились вниз. Жаль"]
]
k = 0
play = True

def endgame():
print('Игра окончена')
def player(x):
if len(x)>1:
print(x.pop(0))
count = 1
moves = []
for i in x:
td = i.split(sep="TD")
moves.append(int(td[1]))
print(count, '. ', td[0])
count += 1
nextStep = int(input('>>> '))
stage = int(moves[nextStep-1])
return stage
else:
print(x[0])
return 666


while play:

a = stages[k].copy()
k = player(a)
if (k == 666) or (k > len(stages)-1):
play = False
endgame()

  • В примере TD является разделителем, после которого я указываю шаг, к которому следует перейти в случае выбора данного варианта ответа.
  • Система гибко отобразит любое нужное число ответов и преобразует их в следующий элемент диалога, что позволяет не тратить много времени на создание веток и циклов.
  • И, конечно, здесь все еще многое стоит улучшить. Например, вынести массив stages отдельным файлом, сделать словари вместо строк, обеспечить дополнительные интерфейсные возможности (например, картинки или меню).
  • Отсутствие вариантов ответа в выбранном элементе массива автоматически сделает данный вариант концовкой.
Похожие вопросы