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
BerolinaPawn.java
package Pieces;

import Game.*;

/**
 * http://en.wikipedia.org/wiki/Berolina_chess
 *
 * The Berolina pawn moves, without capturing, one square diagonally forward. It captures one square straight forward. (So, it is the converse of a standard chess pawn, which moves straight forward and captures diagonally forward.)
 *
 * Like a standard pawn, the Berolina has the option to step two squares forward on its first move (so for the Berolina, two squares diagonally forward). En passant is possible as well (see diagram). As in standard chess, the Berolina pawn promotes when it reaches the last rank.
 *
 */
public class BerolinaPawn extends BoardSquare {

    public BerolinaPawn(){
        this.hasMoved = false;

        horiz = false;
        vert = false;
        diag = true;
        bidirectional = false;
        limit = 1;

        symbol = 'P';
        imagename = "BerolinaPawn.png";
    }

    public BerolinaPawn(int x, int y, Player player){
        this();
        this.x = x;
        this.y = y;
        this.owner = player;
    }

    public SpecialMoveReturn SpecialMove(BoardSquare startSquare, BoardSquare destSquare, MoveType moveType, Board gameBoard){
        if(moveType.direction == MoveType.Direction.VERT) {

            //pawn capture
            if (moveType.distance == 1 && destSquare.owner != Player.NONE)
                return SpecialMoveReturn.VALID;

            return SpecialMoveReturn.INVALID;

        } else if(moveType.direction == MoveType.Direction.DIAG ) {

            //first move, allowed to move two spaces.
            if (!startSquare.hasMoved && moveType.distance == 2 && !gameBoard.findPieces(startSquare, destSquare, Math.abs(moveType.distance)))
                return SpecialMoveReturn.VALID;

            //BerolinaPawns can not capture diagonally:
            if (destSquare.owner != Player.NONE)
                return SpecialMoveReturn.INVALID;

        }

        return SpecialMoveReturn.NONEXISTANT;
    }
}