Итак, я создаю довольно простой rpg в свое свободное время, но я достиг камнем преткновения. Я хочу сделать так, чтобы только определенные функции были доступны в определенное время, изменяя словарь команд каждый раз, когда игрок переходит в битву или выходит из нее. Тем не менее, цикл, который я настроил для поиска по клавишам словаря, кажется, не работает для каких-либо команд, кроме тех, которые изначально были написаны.Изменение словарей функций - Python
Главный файл:
from commands import *
Commands = {
"travel": Player.travel,
"explore": Player.explore,
"help": Player.help,
}
p = Player()
while (john_hero.health > 0):
line = raw_input("=> ")
args = line.split()
if len(args) > 0:
commandFound = False
for c in Commands.keys():
if args[0] == c[:len(args[0])]:
Commands[c](p)
commandFound = True
break
if not commandFound:
print "John's too simple to understand your complex command."
command.py
class Player:
def __init__(self):
self.state = "normal"
john_hero = John()
self.location = "Town"
global Commands
Commands = {
"attack": Player.attack,
"flee": Player.flee,
"help": Player.help
}
def fight(self):
Player.state = "fight"
global Commands
enemy_a = Enemy()
enemy_name = enemy_a.name
print "You encounter %s!" % (enemy_name)
* Примечание: Петля была взята из чужого кода. Я использую его, так как я создаю игру в основном для учебных целей.
где код, который изменяет 'Commands'? – arunkumar
@arunkumar А, я только что добавил. Оглядываясь назад, мне было довольно глупо не включать это. – IndustrialPioneer