Вызовите вложенную функцию через глобальную функцию? - PullRequest
0 голосов
/ 10 марта 2020

Я новичок в Python и пытаюсь сделать простую игру из нескольких глав. Я хочу, чтобы вы могли делать разные вещи в зависимости от главы, но всегда сможете, например, проверить свой инвентарь. Вот почему я попытался использовать вложенные функции.

Можно ли создать глобальную функцию, которая будет действовать по-разному в зависимости от того, в какой главе я нахожусь, при этом все еще имея определенные опции, доступные во всех главах, или, возможно, мне следует значительно реструктурировать свой код?

I получить следующий код ошибки:

> Traceback (most recent call last):   File "test.py", line 21, in
> <module>
>     chapter1()   File "test.py", line 19, in chapter1
>     standstill()   File "test.py", line 4, in standstill
>     localoptions() NameError: name 'localoptions' is not defined

Я понимаю, что глобальная функция не идентифицирует вложенную функцию. Есть ли способ указать эту вложенную функцию для глобальной функции?

def standstill():
    print("What now?")
    print("Press A to check inventory")
    localoptions()
    choice = input()
    if choice == "A":
        print("You have some stuff.")
    else:
        localanswers()

def chapter1():
    def localoptions():
        print("Press B to pick a flower.")

    def localanswers():
        if choice == "B":
            print("What a nice flower!")

    standstill()

chapter1()

1 Ответ

0 голосов
/ 10 марта 2020

Я использовал классы, как предложил Матеин Улхак, и решил их. Спасибо! Это пример масштабируемой системы для игры.

(Я новичок в Python, и, возможно, это не лучший способ, но я решил это сейчас.)

class chapter1:
    option_b = "Pick a flower."

def standstill():
    print("What do you do now?")
    print("A: Check inventory.")
    if chapter1active == True:
        print("B: " + chapter1.option_b)

#Chapter 1
chapter1active = True
standstill()
chapter1active = False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...