Skip to content
Snippets Groups Projects
Commit 8ac22249 authored by ACIKBAS TUNA's avatar ACIKBAS TUNA
Browse files

EnPassant rule added

parent cdc92554
No related merge requests found
<?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
<?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
<?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
......@@ -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;
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment