跳棋板结构

Max*_*rai 4 python

我正在用python实现一个跳棋游戏板.以下是我将板结构生成为[8] [8]数组的方法:

 _matrix = []
 for i in xrange(8):
     _matrix.append( [' '] * 8 )


 for row in xrange(0, 8):
        for col in xrange(0, 8):
            if _darkQuad(row, col) == True:
                _matrix[row][col] = '#'
            else:
                _matrix[row][col] = '-'

def _darkQuad(row, col):
    return ((row%2) == (col%2))

def _printDebugBoard():
    for row in xrange(0, 8):
        for col in xrange(0, 8):
            print _matrix[row][col]
        print ''
Run Code Online (Sandbox Code Playgroud)

这应该像我的董事会一样:

 # - # - # - # -
 - # - # - # - #
 ...
Run Code Online (Sandbox Code Playgroud)

但结果是:

- - - - - - - - 
# # # # # # # # 
- - - - - - - - 
# # # # # # # # 
- - - - - - - - 
# # # # # # # # 
- - - - - - - - 
# # # # # # # # 
Run Code Online (Sandbox Code Playgroud)

怎么了?


UPD:嗯,我认为这不重要.我使代码更容易,但这是我使用的确切代码:

class gameSquare(object):
    def __init__(self):
        self.validSquare = False
        self.symbol = ''

    def printSymbol(self):
        print self.symbol,
-------
def _validateSquares(self):
    for row in xrange(0, 8):
        for col in xrange(0, 8):
            if self._darkQuad(row, col) == True:
                self._matrix[row][col].validSquare = False
                self._matrix[row][col].symbol = '#'
            else:
                self._matrix[row][col].validSquare = True
                self._matrix[row][col].symbol = '-'

--------
for i in xrange(8):
    self._matrix.append( [gameSquare()] * 8 )

-------
def _printDebugBoard(self):
    print ''
    for row in xrange(0, 8):
        for col in xrange(0, 8):
            self._matrix[row][col].printSymbol()
        print ''
Run Code Online (Sandbox Code Playgroud)

int*_*jay 6

更新新发布的代码

问题在于:

self._matrix.append( [gameSquare()] * 8 )
Run Code Online (Sandbox Code Playgroud)

这将在同一对象的每一行上创建8个引用.当您更改其中一个时,它实际上会更改整行.要解决这个问题:

self._matrix.append( [gameSquare() for _ in xrange(8)] )
Run Code Online (Sandbox Code Playgroud)

结束更新


你的代码适合我.只需要修复的是:

print _matrix[row][col],
Run Code Online (Sandbox Code Playgroud)

代替:

print _matrix[row][col]
Run Code Online (Sandbox Code Playgroud)

避免在不同的行上打印每个字符.

我还必须重新排序函数以使代码运行(放在_darkQuad顶部).