我正在尝试使用Python制作一个简单的文本游戏.我有一Room节课:
class Room():
def __init__(self, monster, exits, loot):
self.room_guard = monster
self.exits = exits
self.guard_is_alive = True
self.loot = loot
Run Code Online (Sandbox Code Playgroud)
当我创建房间时,我收到一个错误,因为我在创建之前调用它们是这样的:
room_2 = Room(spider, {"West": room_3, "East": room_4, "South": room_1}, 2)
room_1 = Room(trogdor, {"North": room_2}, 2)
Run Code Online (Sandbox Code Playgroud)
2号房间没有,"South": room_1因为它还没有实例化.有没有解决的办法?
两个选项:间接,创建后分配.
而不是直接引用房间,而是使用dict将房间名称映射到房间:
rooms = {}
rooms['room_2'] = Room(spider, {"West": 'room_3', "East": 'room_4', "South": 'room_1'}, 2)
rooms['room_1'] = Room(trogdor, {"North": 'room_2'}, 2)
Run Code Online (Sandbox Code Playgroud)
或者在创建Room对象后分配出口:
room_2 = Room(spider, {}, 2)
room_1 = Room(trogdor, {}, 2)
room_2.exits = {"West": room_3, "East": room_4, "South": room_1}
room_1.exits = {"North": room_2}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |