Как бы я отправил пользователя в новый «блок» вместо продолжения того же пути? - PullRequest
0 голосов
/ 30 сентября 2019
response = ""
while response not in directions_window:
    print("While crouched below the window you begin weighing you options")
    print("You decide your only options are to listen in, knock on window, or wait")
    response = input("Which are you doing?\nlisten/knock/wait")
    if response == "listen":
        print("You raise your head slightly to hear better\n")
        print("You can ony make out a few words before the figure inside sees you\n")
        print("Latin words can be heard screaming as it charges towards the window\n")
        print("You try to run away, but slip and fall on your stomach.\n")
        print("The figure catches up to you only to knock you unconsious.\n")
        print("You wake up with scratches and marks around your wrist\n")
        print("Taking in your surroundings, you notice you're at the entrance to the forest.\n")
        print("You cut your losses, and leave the forest. Forever wondering who, or what, that was.\n")
        quit()

Я занимаюсь созданием текстовой приключенческой игры. Я хочу отправить пользователя в новую «часть» игры, если вместо quit () выбрана эта опция. Как бы я перейти к новому блоку? Кроме того, я знаю, что могу написать это без печати каждой строки, но я написал это со временем, когда идеи пришли ко мне. Исправлю позже

Ответы [ 2 ]

1 голос
/ 30 сентября 2019

Что вам может понадобиться, так это использовать функции для разделения «пути» вашего приключения на разные «секции», каждый из которых направляет пользователя в другую область (и даже может при желании возвращать пользователя в область, которой он был раньше, если это необходимо). ), вот так:

def adventure_listen():
    print("you picked listen")
    # ... more text
    response = input("Which do you pick?\nA/B")
    if response == "A":
        do_something()
    elif response == "B":
        do_something_else()

def adventure_knock():
    # code similar to above

def adventure_wait():
    # code similar to above

print("message1")
response = input("Which are you doing?\nlisten/knock/wait")
if response == "listen":
    adventure_listen()
elif response == "knock":
    adventure_knock()
elif response == "wait":
    adventure_wait()

0 голосов
/ 01 октября 2019

«Прыгающие блоки», как вы это называете, используются в ассемблерном коде. В языках высокого уровня (таких как 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...
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...