«Прыгающие блоки», как вы это называете, используются в ассемблерном коде. В языках высокого уровня (таких как python) используются структуры управления потоком (если еще, для циклов, while и т. Д.).
Для вашего конкретного случая, если вы решите использовать структуры управления потоком, и ваш story - это долго, вы рано или поздно потеряетесь в своем собственном коде. Функции, предложенные Кристофером Рыбицким, были бы лучшим вариантом. Для этого вам следует (а) сначала узнать свою историю заранее и / или (б) найти общую структуру или шаблон в вашей истории, который позволяет вам «открывать» и «закрывать» главы.
(а) потому что это поможет вам лучше структурировать ваш код (б) потому что, если вы не сможете сначала нарисовать свою историю, это поможет вам сохранить структуру и следовать некоторым шаблонам.
Выполнение кода является последовательным, поэтому вы ( не может ) не должен «переходить» от одной функции к другой, избегая (или надеясь), что код после какой-либо строки «ответвления» не будет выполнен.
Более продвинутыйподход (и тот, который я бы порекомендовал), это пойти с классами и узнать свой путь через наследование. Таким образом, ваша программа может иметь Actions
, Moves
или все, что вы выберете. Потому что теперь вы можете захотеть adventure_knock
, а позже это может быть adventure_throw_the_door_down
. Они оба (i) происходят с другого шага в истории, (ii) получат обратную связь с пользователем, и (iii) должны будут вернуться к точке в истории.
в вашей основнойвыполнение вы можете иметь цикл, который инициирует ваш stories
, chapters
? и т. д.
a псевдокод пример будет:
Action:
abstract function start_action:
...
abstract function end_action:
...
abstract function give_feedback:
...
function ask_for_input:
input('What are you waiting for?')
Knock extends Action:
function start_action:
#specific implementation of knock...
...