(Игра в шахматы) Функция, которая возвращает возможные ходы пешки

Я пишу шахматную игру на C ++. У меня есть абстрактный класс Piece и классы, которые его наследуют. Класс Piece имеет чисто виртуальный метод, который возвращает все возможные ходы. Но у меня проблема с положением пешки, потому что пешка для каждого игрока может двигаться только вперёд, но на доске (которая является матрицей фигуры) форвард выглядит по-разному для каждого игрока. Как я могу реализовать possibleMoves () для пешек?
Спасибо!

class Piece
{
public:
Piece(std::string, char verticalPosition, char horizontalPosition);

virtual std::pair<char,char>* possibleMoves() const = 0;
virtual ~Piece();
protected:
std::string name;
std::pair <char,char> initPosition;
std::pair <char,char> currPosition;
};

0

Решение

Передайте направление, в котором пешка может перейти в свой конструктор в качестве параметра, и сохранить как переменную-член. Используйте это при определении возможных ходов для пешки.

0

Другие решения

Как сказал BobTFish в комментариях, объект пешки должен знать, что это
цвет. Что касается позиции, думаю, я бы передал ее в качестве аргумента
в possibleMoves; Вы, вероятно, также должны пройти доску, поэтому
тот possibleMoves может обнаружить ходы, которые являются захватами (и en
пассант, который становится более сложным, так как он действителен только
впервые появляется такая возможность).

0

По вопросам рекламы [email protected]