diff --git a/MavenChess/.idea/MavenChess.iml b/MavenChess/.idea/MavenChess.iml deleted file mode 100644 index 6054576eade84fd6a7b98afbb15384bd7381aea8..0000000000000000000000000000000000000000 --- a/MavenChess/.idea/MavenChess.iml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<module version="4"> - <component name="AdditionalModuleElements"> - <content url="file://$MODULE_DIR$" /> - </component> -</module> \ No newline at end of file diff --git a/MavenChess/.idea/misc.xml b/MavenChess/.idea/misc.xml deleted file mode 100644 index abcc7fdbf4f41962418209acb3e25fd65eea731e..0000000000000000000000000000000000000000 --- a/MavenChess/.idea/misc.xml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="ExternalStorageConfigurationManager" enabled="true" /> - <component name="MavenProjectsManager"> - <option name="originalFiles"> - <list> - <option value="$PROJECT_DIR$/MavenChess/pom.xml" /> - </list> - </option> - </component> - <component name="ProjectRootManager" version="2" languageLevel="JDK_20" default="true" project-jdk-name="openjdk-20" project-jdk-type="JavaSDK"> - <output url="file://$PROJECT_DIR$/out" /> - </component> -</project> \ No newline at end of file diff --git a/MavenChess/MavenChess/.idea/misc.xml b/MavenChess/MavenChess/.idea/misc.xml deleted file mode 100644 index 0a5c3589fb9cb8a9a86a4d002a6d654e1b26c97c..0000000000000000000000000000000000000000 --- a/MavenChess/MavenChess/.idea/misc.xml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="ExternalStorageConfigurationManager" enabled="true" /> - <component name="MavenProjectsManager"> - <option name="originalFiles"> - <list> - <option value="$PROJECT_DIR$/MavenChess/pom.xml" /> - </list> - </option> - </component> - <component name="ProjectRootManager" version="2" languageLevel="JDK_X" default="true" project-jdk-name="openjdk-20" project-jdk-type="JavaSDK"> - <output url="file://$PROJECT_DIR$/out" /> - </component> -</project> \ No newline at end of file diff --git a/MavenChess/MavenChess/src/main/java/model/Pawn.java b/MavenChess/MavenChess/src/main/java/model/Pawn.java index 226e685b9b80c167ab66b299590b2e46f9854300..69509fc9bf08129214730783e0d8bf5a87d9f028 100644 --- a/MavenChess/MavenChess/src/main/java/model/Pawn.java +++ b/MavenChess/MavenChess/src/main/java/model/Pawn.java @@ -3,6 +3,8 @@ package model; import java.util.ArrayList; public class Pawn extends Piece { + + private boolean enPassant = true; // temporarily given true but has to be changed in the controller public Pawn(Position p, int color) { super(p, color); } @@ -11,7 +13,8 @@ public class Pawn extends Piece { // creates a dynamic list of available moves ArrayList<Position> moves = new ArrayList<>(); - Position arrival; + Position arrival,enPassantEnemy; + int y = -1; if(color == Piece.WHITE) { // black and white have an opposite direction behavior @@ -37,7 +40,66 @@ public class Pawn extends Piece { arrival = new Position(p.getX() - 1, p.getY() + y); if(b.isEnemy(arrival, p)) { moves.add(arrival); } + + + if(Piece.WHITE == color){ + if(p.getY() == 5){ + enPassantEnemy = new Position(p.getX()-1,p.getY()); + arrival = new Position(p.getX()-1,p.getY()+1); + if(b.isEnemy(enPassantEnemy,p)&& + b.isPawn(enPassantEnemy)&& + ((Pawn) b.getPiece(enPassantEnemy)).isEnPassant()&& + b.isFree(arrival)){ + moves.add(arrival); + } + + enPassantEnemy = new Position(p.getX()+1,p.getY()); + arrival = new Position(p.getX()+1,p.getY()+1); + if(b.isEnemy(enPassantEnemy,p)&& + b.isPawn(enPassantEnemy)&& + ((Pawn) b.getPiece(enPassantEnemy)).isEnPassant()&& + b.isFree(arrival)){ + moves.add(arrival); + } + } + + }else { + if(p.getY() == 4){ + + enPassantEnemy = new Position(p.getX()-1,p.getY()); + arrival = new Position(p.getX()-1,p.getY()-1); + if(b.isEnemy(enPassantEnemy,p)&& + b.isPawn(enPassantEnemy)&& + ((Pawn) b.getPiece(enPassantEnemy)).isEnPassant()&& + b.isFree(arrival)){ + moves.add(arrival); + } + + enPassantEnemy = new Position(p.getX()+1,p.getY()); + arrival = new Position(p.getX()+1,p.getY()-1); + if(b.isEnemy(enPassantEnemy,p)&& + b.isPawn(enPassantEnemy)&& + ((Pawn) b.getPiece(enPassantEnemy)).isEnPassant()&& + b.isFree(arrival)){ + moves.add(arrival); + } + } + } + + return moves; + + + } + + + public boolean isEnPassant() { + return enPassant; } + + public void setEnPassant(boolean enPassant) { + this.enPassant = enPassant; + } + }