diff --git a/chess/board_test.go b/chess/board_test.go index 417dcef..a993983 100644 --- a/chess/board_test.go +++ b/chess/board_test.go @@ -124,7 +124,7 @@ func Test_CheckMove_invalidPawnMoves(t *testing.T) { board.position[types.Coordinate{Col: 2, Row: 6}] = Pawn{Color: types.White} board.position[types.Coordinate{Col: 7, Row: 6}] = Rook{Color: types.Black} board.position[types.Coordinate{Col: 8, Row: 8}] = King{Color: types.Black} - boardBeforeMove := board + boardBeforeMove := board move := types.Move{ StartSquare: types.Coordinate{Col: 2, Row: 6}, @@ -133,7 +133,7 @@ func Test_CheckMove_invalidPawnMoves(t *testing.T) { good, _ := board.CheckAndPlay(move) assert.False(t, good) - assert.Equal(t, boardBeforeMove, board) + assert.Equal(t, boardBeforeMove, board) }) } @@ -145,7 +145,7 @@ func Test_CheckMove_validPromotion(t *testing.T) { board.position[types.Coordinate{Col: 7, Row: 7}] = King{Color: types.Black} - shortName := types.QueenShortName + shortName := types.QueenShortName.String() move := types.Move{ StartSquare: types.Coordinate{Col: 1, Row: 7}, EndSquare: types.Coordinate{Col: 1, Row: 8}, @@ -192,19 +192,19 @@ func Test_CheckMove_HistoryWorks(t *testing.T) { { StartSquare: types.Coordinate{Col: 1, Row: 2}, EndSquare: types.Coordinate{Col: 1, Row: 3}, - PieceMoved: 'p', + PieceMoved: "p", ColorMoved: "white", }, { StartSquare: types.Coordinate{Col: 3, Row: 7}, EndSquare: types.Coordinate{Col: 3, Row: 5}, - PieceMoved: 'p', + PieceMoved: "p", ColorMoved: "black", }, { StartSquare: types.Coordinate{Col: 1, Row: 3}, EndSquare: types.Coordinate{Col: 1, Row: 4}, - PieceMoved: 'p', + PieceMoved: "p", ColorMoved: "white", }, } diff --git a/chess/pawn.go b/chess/pawn.go index 50ef94f..ceb8f94 100644 --- a/chess/pawn.go +++ b/chess/pawn.go @@ -11,14 +11,14 @@ type Pawn struct { } func (p Pawn) GetAllAttackedSquares(board Board, fromSquare types.Coordinate) []types.Coordinate { - attackingMoves := make([]types.Coordinate,0,2) - allMoves := p.GetAllNonBlockedMoves(board, fromSquare) - for _,move := range allMoves { - if move.Col != fromSquare.Col { - attackingMoves = append(attackingMoves, move) - } - } - return attackingMoves + attackingMoves := make([]types.Coordinate, 0, 2) + allMoves := p.GetAllNonBlockedMoves(board, fromSquare) + for _, move := range allMoves { + if move.Col != fromSquare.Col { + attackingMoves = append(attackingMoves, move) + } + } + return attackingMoves } func (p Pawn) GetAllNonBlockedMoves(board Board, fromSquare types.Coordinate) []types.Coordinate { @@ -40,7 +40,7 @@ func (p *Pawn) HandlePossiblePromotion(b *Board, move types.Move) bool { messageContainsPromotion := move.IsPromotionMove() if messageContainsPromotion { - promotionToPiece = *move.PromotionToPiece + promotionToPiece = types.PieceShortName(*move.PromotionToPiece) } switch move.ColorMoved { diff --git a/chess/piece_interface.go b/chess/piece_interface.go index 1ebc753..b3aa093 100644 --- a/chess/piece_interface.go +++ b/chess/piece_interface.go @@ -6,7 +6,7 @@ import ( type Piece interface { GetAllNonBlockedMoves(board Board, fromSquare types.Coordinate) []types.Coordinate - GetAllAttackedSquares(board Board, fromSquare types.Coordinate) []types.Coordinate + GetAllAttackedSquares(board Board, fromSquare types.Coordinate) []types.Coordinate GetColor() types.ChessColor } @@ -14,17 +14,17 @@ func GetPieceForShortName(name types.PieceShortName, color types.ChessColor) Pie var piece Piece switch name { - case 'p': + case "p": piece = Pawn{Color: color} - case 'q': + case "q": piece = Queen{Color: color} - case 'k': + case "k": piece = King{Color: color} - case 'b': + case "b": piece = Bishop{Color: color} - case 'r': + case "r": piece = Rook{Color: color} - case 'n': + case "n": piece = Knight{Color: color} } return piece @@ -34,17 +34,17 @@ func GetShortNameForPiece(piece Piece) types.PieceShortName { var name types.PieceShortName switch piece.(type) { case Pawn: - name = 'p' + name = "p" case Queen: - name = 'q' + name = "q" case King: - name = 'k' + name = "k" case Bishop: - name = 'b' + name = "b" case Rook: - name = 'r' + name = "r" case Knight: - name = 'n' + name = "n" } return name } diff --git a/types/move.go b/types/move.go index 658930b..812165a 100644 --- a/types/move.go +++ b/types/move.go @@ -3,9 +3,9 @@ package types type Move struct { StartSquare Coordinate `json:"startSquare"` EndSquare Coordinate `json:"endSquare"` - PieceMoved PieceShortName + PromotionToPiece *string `json:"promotionToPiece,omitempty"` ColorMoved ChessColor - PromotionToPiece *PieceShortName `json:"promotionToPiece,omitempty"` + PieceMoved PieceShortName } func (m Move) IsPromotionMove() bool { diff --git a/types/shortname.go b/types/shortname.go index 6ac727d..fcce521 100644 --- a/types/shortname.go +++ b/types/shortname.go @@ -1,12 +1,16 @@ package types -type PieceShortName rune +type PieceShortName string const ( - PawnShortName PieceShortName = 'p' - RookShortName PieceShortName = 'r' - KnightShortName PieceShortName = 'n' - BishopShortName PieceShortName = 'b' - QueenShortName PieceShortName = 'q' - KingShortName PieceShortName = 'k' + PawnShortName PieceShortName = "p" + RookShortName PieceShortName = "r" + KnightShortName PieceShortName = "n" + BishopShortName PieceShortName = "b" + QueenShortName PieceShortName = "q" + KingShortName PieceShortName = "k" ) + +func (p PieceShortName) String() string { + return string(p) +}