dev: Fixing compilation/linking errors, added other piece classes

This commit is contained in:
A.M. Rowsell 2025-08-04 21:45:23 -04:00
commit 2d83f43cfb
Signed by untrusted user who does not match committer: amr
GPG key ID: E0879EDBDB0CA7B1
4 changed files with 103 additions and 38 deletions

View file

@ -16,61 +16,99 @@
#include "Board.hpp"
class Board;
enum PieceType { PAWN, BISHOP, KNIGHT, ROOK, QUEEN, KING, EMPTY };
enum PieceColour { PIECE_WHITE, PIECE_BLACK, PIECE_EMPTY };
enum Rank { R1 = 0, R2 = 1, R3 = 2, R4 = 3, R5 = 4, R6 = 5, R7 = 6, R8 = 7 };
enum File { A = 0, B = 1, C = 2, D = 3, E = 4, F = 5, G = 6, H = 7 };
enum PieceType {
PAWN, BISHOP, KNIGHT, ROOK, QUEEN, KING, EMPTY
};
enum PieceColour {
PIECE_WHITE, PIECE_BLACK, PIECE_EMPTY
};
enum Rank {
R1 = 0, R2 = 1, R3 = 2, R4 = 3, R5 = 4, R6 = 5, R7 = 6, R8 = 7
};
enum File {
A = 0, B = 1, C = 2, D = 3, E = 4, F = 5, G = 6, H = 7
};
struct Square {
Rank rank;
File file;
Rank rank;
File file;
bool isValid() const {
return rank >= 0 && rank < 8 && file >= 0 && file < 8;
}
};
struct Move {
Square from;
Square to;
};
class Piece {
friend class Board;
protected:
PieceColour colour;
PieceColour colour;
bool hasMoved = false;
public:
// methods
Piece(PieceColour pColour) : colour(pColour) {}
virtual ~Piece();
virtual std::vector<Move> getLegalMoves(const Square &from, const Board &board) const;
PieceColour getColour() const { return colour; }
Piece(PieceColour pColour) : colour(pColour) {
}
virtual ~Piece();
virtual std::vector<Move> getLegalMoves(const Square &from, const Board &board) const;
PieceColour getColour() const {
return colour;
}
};
class King : public Piece {
King(PieceColour colour) : Piece(colour) {}
public:
King(PieceColour colour) : Piece(colour) {
}
virtual std::vector<Move> getLegalMoves(const Square &from, const Board &board) const override;
};
class Rook : public Piece {
Rook(PieceColour colour) : Piece(colour) {}
virtual std::vector<Move> getLegalMoves(const square &from, const Board &board) const override;
public:
Rook(PieceColour colour) : Piece(colour) {
}
virtual std::vector<Move> getLegalMoves(const Square &from, const Board &board) const override;
};
class Queen : public Piece {
Queen(PieceColour colour) : Piece(colour) {}
virtual std::vector<Move> getLegalMoves(const square &from, const Board &board) const override;
public:
Queen(PieceColour colour) : Piece(colour) {
}
virtual std::vector<Move> getLegalMoves(const Square &from, const Board &board) const override;
};
class Knight: public Piece {
Knight(PieceColour colour) : Piece(colour) {}
virtual std::vector<Move> getLegalMoves(const square &from, const Board &board) const override;
class Knight : public Piece {
public:
Knight(PieceColour colour) : Piece(colour) {
}
virtual std::vector<Move> getLegalMoves(const Square &from, const Board &board) const override;
};
class Bishop : public Piece {
Bishop(PieceColour colour) : Piece(colour) {}
virtual std::vector<Move> getLegalMoves(const square &from, const Board &board) const override;
public:
Bishop(PieceColour colour) : Piece(colour) {
}
virtual std::vector<Move> getLegalMoves(const Square &from, const Board &board) const override;
};
class Pawn : public Piece {
Pawn(PieceColour colour) : Piece(colour) {}
virtual std::vector<Move> getLegalMoves(const square &from, const Board &board) const override;
public:
Pawn(PieceColour colour) : Piece(colour) {
}
virtual std::vector<Move> getLegalMoves(const Square &from, const Board &board) const override;
};
#endif // PIECE_HPP