這個問題有很多解決方案。這是另一個。此解決方案等待初始化對象,直到創建完所有對象。
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