1
我正在Python中的掃雷艇克隆和我遇到的問題設置「鄰居」Python的鄰居都指向同一個值
這是類:
class Box:
hasBomb = False
numBombNeighbors = 0
clicked = False
xcoord = 0
ycoord = 0
neighbors = [None, None, None, None, None, None, None, None]
def __init__(self):
self.hasBomb = False
self.numBombNeighbors = 0
self.clicked = False
self.xcoord = 0
self.ycoord = 0
for i in xrange(8):
self.neighbors[i] = None
然後我做板
def getRandomBoard():
# we will hide 50 random bombs
result = []
for i in xrange(BOARDWIDTH):
result.append([])
for j in xrange(BOARDHEIGHT):
new_box = Box()
new_box.xcoord = i
new_box.ycoord = j
result[i].append(new_box)
# set all the neighbors
result = setNeighbros(result)
for i in range(BOARDWIDTH):
for j in range(BOARDHEIGHT):
print result[i][j].xcoord
print result[0][0].neighbors[5].xcoord
這是設置鄰居功能:
def setNeighbros(board):
for i in range(len(board)):
for j in range(len(board[i])-1):
if j > 0:
board[i][j].neighbors[0] = board[i][j-1]
if j > 0 and i < len(board) -1:
board[i][j].neighbors[1] = board[i+1][j-1]
if i < len(board) - 1:
board[i][j].neighbors[2] = board[i+1][j]
if i < len(board) - 1 and j < len(board[i]) - 1:
board[i][j].neighbors[3] = board[i+1][j+1]
if j < len(board[i]) - 1:
board[i][j].neighbors[4] = board[i][j+1]
if j < len(board[i]) - 1 and i > 0:
board[i][j].neighbors[5] = board[i-1][j+1]
if i > 0:
board[i][j].neighbors[6] = board[i-1][j]
if i > 0 and j > 0:
board[i][j].neighbors[7] = board[i-1][j-1]
return board
在董事會製作功能中,我打印xcoord和鄰居5的xcoord以檢查問題,並且問題來自設置鄰居。在創建鄰居時,他們都指向正確的鄰居,但是在完成後,他們都指向同一個鄰居,但是我知道,因爲他們有不同的xcoord,所以這些框的數組都是不同的。如果有人能告訴我爲什麼鄰居們都指着同一個盒子,我將不勝感激。