mohamaddibassy123 Ответов: 1

Как бы вы сформулировали функцию canmove для шахматной партии?


Эта функция перемещения может проверять, находится ли ваша фигура(состоящая из двух координат на доске, созданной из класса под названием spot) на доске(матрица 8 на 8), предназначенное место посадки/область незанято, и если оно занято, то оно должно быть противоположным цветом.

Ниже приведен класс spot, который я создал.


class spot:

    def spot(self, x, y ,Piece piece):
        self.setX(x)
        self.setY(y)
        self.setPiece(piece)

    def getX(self):
        return self.x

    def getY(self):
        return self.y

    def getPiece(self):
        return self.piece

    def setX(self, x):
        self.x = x

    def setY(self, y):
        self.y = y

    def setPiece(self, piece):
        self.piece = piece


Что я уже пробовал:

Я запустил эту функцию, но, похоже, не могу понять, следует ли мне взять одно или два места в аргументе моей функции. Я не могу понять, как я смогу определить, является ли кусок на предполагаемом месте посадки противоположного цвета.

1 Ответов

Рейтинг:
11

Greg Utas

Я не программист на Python, поэтому не могу помочь вам с кодом. Впрочем, несколько замечаний.

- Вам нужно знать цвет фигуры, которая занимает квадрат.
- Вам нужно два флага для каждой стороны, чтобы указать, являются ли O-O и O-O-O законными.
- Вам нужно знать, если Ан мимоходом захват разрешен. Это может быть просто вставлено, когда оно возникает, как первый ход кандидата для того, кто будет двигаться следующим.

Если вы хотите сделать это эффективным

- Избавьтесь от индексации (x,y)
- Просто назначьте каждому квадрату номер (один индекс)
- Построить (когда ваша программа инициализируется) список всех квадратов, в которые может переместиться данный тип фигуры, начиная с определенного квадрата на открытой доске, в том порядке, в котором эти квадраты будут посещены (для каждого типа фигуры будет более одного такого списка)

Вы можете взять его оттуда.