我正在用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)
更新新发布的代码
问题在于:
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顶部).
| 归档时间: |
|
| 查看次数: |
3957 次 |
| 最近记录: |