这个问题有很多解决方案。这是另一个。此解决方案等待初始化对象,直到创建完所有对象。
class Room():
def create(self, monster, exits, loot=None):
self.room_guard = monster
self.exits = exits
self.guard_is_alive = True
self.loot = loot
room_1 = Room()
room_2 = Room()
room_3 = Room()
room_4 = Room()
room_1.create('spider', {"West": room_3, "East": room_4, "South": room_1}, 2)
room_2.create('trogdor', {"North": room_2}, 2)
编辑:使用上面的方法,这里是举办你的房间的一个可能的方式。我已将房间存储在2-dimensional list中。这个解决方案很好,因为您不必担心出口的位置;该程序会为您创建的每个房间计算出来。
rooms = []
horizontal_room_count = 2
vertical_room_count = 2
class Room():
def __init__(self, x, y):
self.x = x
self.y = y
def create(self, monster, loot):
self.room_guard = monster
self.exits = self.get_exits()
self.guard_is_alive = True
self.loot = loot
def get_exits(self):
x, y = self.x, self.y
def get_room(x2, y2):
if x2 < 0 or y2 < 0 or x2 >= horizontal_room_count or y2 >= vertical_room_count:
return None
return rooms[x2][y2]
return {
'West': get_room(x-1, y),
'East': get_room(x+1, y),
'North': get_room(x, y+1),
'South': get_room(x, y-1)
}
rooms = [[Room(x,y) for x in range(horizontal_room_count)] for y in range(vertical_room_count)]
rooms[0][0].create('spider', loot=2)
rooms[0][1].create('trogdor', loot=2)
我们知道有一个很好的与房间交互的简单界面。以下是使用界面与角落位置(0,0)中的房间进行交互的示例。
#creating the room
>> rooms[0][0].create('evil_fairy', loot=3)
#finding the exits
>> rooms[0][0].exits
#accessing info
>> rooms[0][0].loot
我不知道为什么我没有想到这一点。谢谢! – 2015-04-01 03:50:50