Лучше координаты фигуры поместить в нее.
board сделать глобальным и не передавать его при расчете.
Не надо использовать магические строки ‘black’ и ‘white’, лучше завести константы
Имена картинок лучше сделать свойством класса фигура, например
class Figure(object):
@property
def image(self):
return self.name + '_' + self.color + '.png'
class Slon(Figure):
name = 'slon'
name все равно будет нужен, например для печати нотации
Если этюды расставлять не планируется, или если цвет сделать необязательным параметром, то фигура может сама определять свой цвет.
class Figure(object):
def __init__(self, number, letter, color=None):
if not color:
if number<3:
color = WHITE
elif number>6:
color = BLACK
else:
raise ValueError()
elif not color in [WHITE,BLACK]:
raise ValueError()
self.number = number
self.letter = letter
self.color = color
Пешки не надо делить на два класса (черные и белые)
лучше ввести понятие направления движения directional - для белых 1, для черных -1
Еще не понравилось
class Ferz(Figure):
# Ladia + Slon
def getPossibleMove(self,board,pos):
a = Ladia(color = self.color).getPossibleMove(board,pos)
b = Slon(color = self.color).getPossibleMove(board,pos)
return a+b
луше как-то так
class Ferz(Ladia, Slon):
# Ladia + Slon
def getPossibleMove(self,board,pos):
return Ladia.getPossibleMove(board,pos) + Slon.getPossibleMove(board,pos)
ПС. Я внес именно бы эти изменения, но это только мое мнение и оно может и не быть единственно верным (и вообще верным)
ППС. Логику проверки ходов не смотрел, но не забудте про взятие на проходе и рокировки (
dimabest подскажет с какой фигуры надо начинать ее делать)