Java_Chess

.idea
    .name 5 B
    artifacts
       Chess_jar.xml 371 B
    compiler.xml 734 B
    copyright
    description.html 97 B
    encodings.xml 171 B
    libraries
       jansi_1_11.xml 214 B
    misc.xml 5 KB
    modules.xml 261 B
    project-template.xml 91 B
    scopes
       scope_settings.xml 143 B
    uiDesigner.xml 8 KB
    vcs.xml 176 B
    workspace.xml 61 KB
Chess.iml 1 KB
Doxyfile 101 KB
GUI_Manual_Testplan.pdf 437 KB
Graphics
    blackBerolinaPawn.png 1 KB
    blackBishop.png 5 KB
    blackKing.png 8 KB
    blackKnight.png 6 KB
    blackPawn.png 2 KB
    blackQueen.png 8 KB
    blackRook.png 3 KB
    blackWazir.png 1 KB
    whiteBerolinaPawn.png 2 KB
    whiteBishop.png 7 KB
    whiteKing.png 8 KB
    whiteKnight.png 7 KB
    whitePawn.png 4 KB
    whiteQueen.png 10 KB
    whiteRook.png 4 KB
    whiteWazir.png 2 KB
README 342 B
jansi-1.11.jar 111 KB
src
    CHANGES 1001 B
    GUI
       Controller.java 15 KB
       Main.java 360 B
       View.java 14 KB
       textPanel.java 776 B
    Game
       Board.java 5 KB
       CLI.java 5 KB
       Command.java 1022 B
       GameManager.java 11 KB
       GameType.java 74 B
       MoveHandler.java 1 KB
       Player.java 133 B
    META-INF
       MANIFEST.MF 53 B
    Main.java 154 B
    Pieces
       BerolinaPawn.java 1 KB
       Bishop.java 480 B
       BoardSquare.java 4 KB
       King.java 470 B
       Knight.java 846 B
       MoveType.java 530 B
       Pawn.java 1 KB
       Queen.java 474 B
       Rook.java 471 B
       Wazir.java 627 B
    TODO 176 B
    Tests
       BoardTest.java 2 KB
       GameManagerTest.java 21 KB
MoveHandler.java
package Game;

import Pieces.BoardSquare;
import Pieces.MoveType;

public class MoveHandler {
/*
Helper functions for movement.
 */

    /**
    * Helper function invoked by a Piece's move function and validMove.
    *
    * @param startSquare: Starting square of the move.
    *
    * @return Pieces.MoveType containing:
    * Pieces.MoveType.type: enum: if the move was vertical, diagonal, horizontal, or other
    * Pieces.MoveType.dist: int: distance of the move.
    */
    public static MoveType DetermineType(BoardSquare startSquare, BoardSquare destSquare) {
        if (startSquare.x == destSquare.x) {//Is the move being attempted vertical only?

            int dist = moveSignedDist(startSquare.y, destSquare.y, startSquare.owner);
            return new MoveType(MoveType.Direction.VERT, dist);

        } else if (startSquare.y == destSquare.y) {//Is it horizontal?

            int dist = moveSignedDist(startSquare.x, destSquare.x, startSquare.owner);
            return new MoveType(MoveType.Direction.HORIZ, dist);

        } else if (Math.abs(startSquare.y - destSquare.y) == Math.abs(startSquare.x - destSquare.x)) {//Is it diagonal?

            int dist = moveSignedDist(startSquare.y, destSquare.y, startSquare.owner);
            return new MoveType(MoveType.Direction.DIAG, dist);

        } else {//Is the attempted move something else?
            return new MoveType(MoveType.Direction.OTHER, 0);
        }

    }

    /**
     * Helper function invoked by DetermineType
     *
     * @param start start location
     * @param end ending location
     * @param player owner id
     *
     * @return positive distance between start and end if moving towards opponent, negative otherwise.
     */
    private static int moveSignedDist(int start, int end, Player player){

        if(player == Player.WHITE)
            return end - start;
        else if(player == Player.BLACK)
            return start - end;

        return 0;
    }

}