我正在完成一项涉及使用分支故事情节创建文本冒险的作业。
它的工作原理如下:
1级有1个提示和3个选择 2级有3个提示和9个选择 3级有9个提示和27个选择 4级有27个提示和81个选择 每个选择都会带来3个不同选择的新的独特提示。
我有一个基本类设置如下:
class Level:
def __init__(self,level_num, level_prompt):
self.level_num = level_num
self.level_prompt = level_prompt
self.choices = []
def add_choices(self, choices, next_branch):
self.choices.append(choices)
self.next_branch = next_branch
def print_situation(self):
print("Level " + str(self.level_num))
print(self.level_prompt)
print("[A] " + self.choices[0])
print("[B] " + self.choices[1])
print("[C] " + self.choices[2])
def get_next_prompt(self, letter_choice): # this will look at choice and find the prompt associated with it, for example level1 choice A SHOULD return level2_A
if letter_choice == 'A':
return self.choices[0].next_branch
if letter_choice == 'B':
return self.choices[1].next_branch
if letter_choice == 'C':
return self.choices[2].next_branch
为了解释程序的流程,这里是初始化对象的样本。
# prompts
level1 = Level(1, 'PROMPT HERE')
level2_A = Level(2, 'PROMPT HERE')
level2_B = Level(2, 'PROMPT HERE')
level2_C = Level(2, 'PROMPT HERE')
level3_A1 = Level(3, 'PROMPT HERE')
level3_A2 = Level(3, 'PROMPT HERE')
level3_A3 = Level(3, 'PROMPT HERE')
level3_B1 = Level(3, 'PROMPT HERE')
level3_B2 = Level(3, 'PROMPT HERE')
level3_B3 = Level(3, 'PROMPT HERE')
level3_C1 = Level(3, 'PROMPT HERE')
level3_C2 = Level(3, 'PROMPT HERE')
level3_C3 = Level(3, 'PROMPT HERE')
# choices
level1.add_choices('CHOICE A', level2_A)
level1.add_choices('CHOICE B', level2_B)
level1.add_choices('CHOICE C', level2_C)
level2_A.add_choices('CHOICE A', level3_A1)
level2_A.add_choices('CHOICE B', level3_A2)
level2_A.add_choices('CHOICE C', level3_A3)
level2_B.add_choices('CHOICE A', level3_B1)
level2_B.add_choices('CHOICE B', level3_B2)
level2_B.add_choices('CHOICE C', level3_B3)
level2_C.add_choices('CHOICE A', level3_C1)
level2_C.add_choices('CHOICE B', level3_C2)
level2_C.add_choices('CHOICE C', level3_C3)
我的程序中的错误来自我班级的get_next_prompt方法。我的意图是能够这样称呼它:
level1.get_next_prompt('A')
并让它返回值:level2_A。这不仅仅是在级别名称的末尾添加_A,而是应该查看选择的next_branch参数并返回它。
如果有些事情不完全清楚,请告诉我。
谢谢!
答案 0 :(得分:1)
def add_choices(self, choices, next_branch):
self.choices.append(choices)
self.next_branch = next_branch
self.choices
是一个字符串数组:['CHOICE A','CHOICE B', 'CHOICE C']
,它没有任何next_branch
属性。
您不会在每个选项中存储next_branch
,而是将其存储在基本级别,并在每次添加新选项时覆盖它。
我可能会将其更改为:
def add_choices(self, choices, next_branch):
self.choices.append((choices, next_branch))
然后您的选择文字位于self.choices[0][0], self.choices[1][0], self.choices[2][0]
,下一个分支存储在self.choices[0][1], self.choices[1][1], self.choices[2][1]
更好的选择是更改级别结构,以便将其初始化为:
level1 = Level(1, 'CHOICE TO GET HERE', 'PROMPT HERE')
存储为
self.choice
self.prompt
然后你可以做
def add_choices(self, next_branch):
self.choices.append(next_branch)
并从以下网站获取信息:
print self.choices[0].choice
或获得等级
return self.choices[0]