Python とクラスを使用して、主に練習用に戦艦のようなゲームを作ろうとしています。そこで、ゲーム ボード オブジェクトを作成しました。それを「見て」「変更」します。(後で「create」を init にマージします)
しかし、私の「変更」がすべての行に適用される場所で何か奇妙なことが起こっています...コードは次のとおりです。
class Board:
'Game Board'
topMarkers = list('ABCDEFGHIJKLMNOPQRSTUVWXYZ')
sideMarkers = list(range(0, 26))
def __init__(self,h,w): #Makes the map
self.height = h
self.width = w
def create(self): #Makes a map for displaying
wave = '~'
self.row = []
self.column = []
#self.column = wave * self.width # If width is 4, column is now '~~~~'
for c in range(self.width):
self.column.append(wave)
raw_input(self.column)
for r in range(self.height): #
self.row.append(self.column)
raw_input(self.row)
def showGrid(self):
print self.row
def changeRow(self, y, x):
self.row[1][2] = "Test"
yourShipsMap = Board(4,3)
theirShipsMap = Board(4,7)
theirShipsMap.create()
theirShipsMap.changeRow(2,2)
theirShipsMap.showGrid()
これを実行すると、最初のリストの 2 番目のインデックスだけでなく、すべてのリストの 2 番目のインデックスに "Test" が書き込まれます。なぜそれをしているのですか??
1 か月ほどプログラミングをやめて、すべてを忘れてしまうのは嫌です。