我已经开始了我的游戏初稿(这个草案的重点在于代码的复杂性,所以请不要深入研究如何压缩代码或提高代码效率,那将来更晚),其中一部分是在游戏的每个位置都有角色,但我希望这是随机的。我已经在我的位置函数中添加了一些IF语句,因此它会告诉您房间中的哪个角色,然后将该角色分配给我称为标识符的变量,以便游戏让您与该角色对话。然而,如果该位置没有人,那么没有人可以交谈,所以它最后需要一个ELSE语句,但如果我添加一个ELSE语句,由于某种原因我无法解决或找到它,使所有的IF语句完全冗余,并使其无论如何,它总是会说没有人可以与之交谈。如果我删除此ELSE语句,那么如果您尝试在没有字符的位置进行通话,游戏将会崩溃。我该如何解决?? 非常感谢提前
答案 0 :(得分:2)
else
子句仅适用于最后if
,并且在未满足if
条件时执行
if body == "Atrium":
print("Brad's dead body lies in the middle of the floor")
identifier = ei
else:
identifier = ei
在此代码段中,else
会在body != "Atrium"
执行时执行 - 确实会加载您之前的所有if
条款。
解决方案: elif
if murderer.location == "Atrium":
print(murderer.name, "is stood in here, waiting")
identifier = murderer
elif innocent1.location == "Atrium":
print(innocent1.name, "is stood in here, waiting")
identifier = innocent1
...
else:
identifier = ei
另一种方法是将identifier
设置为默认值,只有在条件满足时才会在if
子句中覆盖它。只有在比较中没有使用identifier
值时,这才有效。
identifier = ei
if murderer.location == "Atrium":
...
此外,正如@Mitch Wheat所述,您应该真正阅读lists and arrays。检查所有列表成员是非常容易和清晰的(特别是如果您以后需要添加另一个无辜的人)
for innocent in innocents:
if innocent.location == 'Atrium':
print(innocent.name, "is stood in here, waiting")
identifier = innocent