dev: Fixing compilation/linking errors, added other piece classes
This commit is contained in:
parent
ea62d03680
commit
2d83f43cfb
4 changed files with 103 additions and 38 deletions
86
Piece.hpp
86
Piece.hpp
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue