Я создаю игру, в которой генерируется случайный донгеон (n этажей, заполненных y на x объектов комнаты), и я хочу поставить лестницу (одну на следующий этаж и одну на предыдущую, но с разными координатами x; y, но не в той же комнате). Я обнаружил проблему, когда программа выполняет эту строку:
rooms[z-1, y, x].stair = 'd'
вместо изменения свойства указанного объекта ie, программа меняет свойство ie для каждого объекта.
class Room:
walls = []
rooms = []
def __init__(self, stair=False, item=[], entity=[]):
self.stair = stair
self.item = item
self.entity = entity
@classmethod
def generate_dongeon(cls, floor, width, height):
cls.floor = floor
rooms = np.ndarray((floor, width, height), dtype=Room)
rooms.fill(Room())
walls = np.ones((floor, width*2-1, height), dtype=int)
for z in range(floor):
walls[z] = cls.generate_floor(width, height)
if z != 0:
while True:
y, x = randint(0, width-1), randint(0, height-1)
if rooms[z, y, x].stair == False and rooms[z-1, y, x].stair == False:
rooms[z, y, x].stair = 'u'
rooms[z-1, y, x].stair = 'd'
break
cls.walls = walls
@classmethod
def generate_floor(cls, width, height):
#I deleted the content to only show the issue but this part works well
Если вы видите, что я делаю неправильно, я был бы очень признателен!