Я пытаюсь смоделировать шахматную игру в python 3 с объектно-ориентированным программированием. Один из классов, который я использую, это Board, который содержит матрицу (список 8x8) с другим объектом. Я также создал простой метод __str__
для визуализации шахматной доски.
Вот некоторая часть определения класса Совета:
class Board:
def __init__(self, pieces: list):
self.container = [[pieces[i] for i in range(8)], # Whites
[pieces[i] for i in range(8, 16)], # White pawns
[None] * 8,
[None] * 8,
[None] * 8,
[None] * 8,
[pieces[i] for i in range(16, 24)], # Black pawns
[pieces[i] for i in range(24, 32)]] # Blacks
def __str__(self):
str_copy = self.container.copy()
for i in range(8):
for j in range(8):
if isinstance(str_copy[i][j], King):
str_copy[i][j] = 'K'
elif isinstance(str_copy[i][j], Queen):
str_copy[i][j] = 'Q'
elif isinstance(str_copy[i][j], Rook):
str_copy[i][j] = 'R'
elif isinstance(str_copy[i][j], Knight):
str_copy[i][j] = 'N'
elif isinstance(str_copy[i][j], Bishop):
str_copy[i][j] = 'B'
elif isinstance(str_copy[i][j], Pawn):
str_copy[i][j] = 'P'
elif str_copy[i][j] is None:
str_copy[i][j] = '_'
return ''.join([str(line) + '\n' for line in str_copy])
Моя проблема в том, что в какой-то момент в моем коде Board.container
кажется перезаписанным str_copy
. Я действительно не могу понять, почему. Вот полный код, если вы хотите взглянуть на него: pastebin
Большое спасибо за вашу помощь!