package chess import ( "mchess_server/types" ) type Piece interface { GetAllMovesButBlocked(board Board, fromSquare types.Coordinate) []types.Coordinate GetColor() types.ChessColor } func GetPieceForShortName(name types.PieceShortName, color types.ChessColor) Piece { var piece Piece switch name { case 'p': piece = Pawn{Color: color} case 'q': piece = Queen{Color: color} case 'k': piece = King{Color: color} case 'b': piece = Bishop{Color: color} case 'r': piece = Rook{Color: color} case 'n': piece = Knight{Color: color} } return piece } func GetShortNameForPiece(piece Piece) types.PieceShortName { var name types.PieceShortName switch piece.(type) { case Pawn: name = 'p' case Queen: name = 'q' case King: name = 'k' case Bishop: name = 'b' case Rook: name = 'r' case Knight: name = 'n' } return name }