From ba4b29208634b871de5418ccfea96ff2b3fe757a Mon Sep 17 00:00:00 2001 From: MasterPyo <olivier.pillods@gmail.com> Date: Mon, 24 Apr 2023 23:09:46 +0200 Subject: [PATCH] pawn availableMoves implementation --- .../MavenChess/src/main/java/model/Board.java | 14 ++++++ .../MavenChess/src/main/java/model/Pawn.java | 40 +++++++++++++++++- .../MavenChess/src/main/java/model/Piece.java | 2 + .../src/main/java/model/Position.java | 4 ++ .../target/classes/model/Board.class | Bin 1841 -> 905 bytes .../MavenChess/target/classes/model/Log.class | Bin 0 -> 246 bytes .../target/classes/model/Pawn.class | Bin 517 -> 520 bytes 7 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 MavenChess/MavenChess/target/classes/model/Log.class diff --git a/MavenChess/MavenChess/src/main/java/model/Board.java b/MavenChess/MavenChess/src/main/java/model/Board.java index e27bbb6..9f3de8d 100644 --- a/MavenChess/MavenChess/src/main/java/model/Board.java +++ b/MavenChess/MavenChess/src/main/java/model/Board.java @@ -41,4 +41,18 @@ public class Board { public void set(Piece piece) { pieces[piece.getPosition().getID()] = piece; } + + public boolean isFree(Position p) { + return (pieces[p.getID()] == null); + } + public boolean isBlack(Position p) { + return (pieces[p.getID()].getColor() == Piece.BLACK); + } + + public boolean isWhite(Position p) { + return (pieces[p.getID()].getColor() == Piece.WHITE); + } + public boolean isKing(Position p) { + return (pieces[p.getID()].getClass() == Pawn.class); // to change to king later + } } diff --git a/MavenChess/MavenChess/src/main/java/model/Pawn.java b/MavenChess/MavenChess/src/main/java/model/Pawn.java index a9bf9a5..0467039 100644 --- a/MavenChess/MavenChess/src/main/java/model/Pawn.java +++ b/MavenChess/MavenChess/src/main/java/model/Pawn.java @@ -1,12 +1,48 @@ package model; +import java.util.ArrayList; + public class Pawn extends Piece { public Pawn(Position p, int color) { super(p, color); } - public Move[] getAvailableMoves(Board b) { - Move[] moves = new Move[5]; + public ArrayList<Position> getAvailableMoves(Board b) { + + // creates a dynamic list of available moves + ArrayList<Position> moves = new ArrayList<Position>(); + + Position arrival; + if(color == Piece.WHITE) { // black and white have an opposite direction behavior + + // up, free movement + arrival = new Position(p.getX(), p.getY() + 1); + if(Position.isCorrect(arrival) && b.isFree(arrival)) { moves.add(arrival); } + + // up right, attack movement + arrival = new Position(p.getX() + 1, p.getY() + 1); + if(Position.isCorrect(arrival) && b.isBlack(arrival)) { moves.add(arrival); } + + // up left, attack movement + arrival = new Position(p.getX() - 1, p.getY() + 1); + if(Position.isCorrect(arrival) && b.isBlack(arrival)) { moves.add(arrival); } + + } + else { + + // down, free movement + arrival = new Position(p.getX(), p.getY() - 1); + if(Position.isCorrect(arrival) && b.isFree(arrival)) { moves.add(arrival); } + + // down right, attack movement + arrival = new Position(p.getX() + 1, p.getY() - 1); + if(Position.isCorrect(arrival) && b.isWhite(arrival)) { moves.add(arrival); } + + // down left, attack movement + arrival = new Position(p.getX() - 1, p.getY() - 1); + if(Position.isCorrect(arrival) && b.isWhite(arrival)) { moves.add(arrival); } + + } return moves; } } diff --git a/MavenChess/MavenChess/src/main/java/model/Piece.java b/MavenChess/MavenChess/src/main/java/model/Piece.java index 6119ba2..c9580db 100644 --- a/MavenChess/MavenChess/src/main/java/model/Piece.java +++ b/MavenChess/MavenChess/src/main/java/model/Piece.java @@ -1,5 +1,7 @@ package model; +import java.util.ArrayList; + public abstract class Piece { protected Position p; protected int color; diff --git a/MavenChess/MavenChess/src/main/java/model/Position.java b/MavenChess/MavenChess/src/main/java/model/Position.java index e0f39a2..03c8aa6 100644 --- a/MavenChess/MavenChess/src/main/java/model/Position.java +++ b/MavenChess/MavenChess/src/main/java/model/Position.java @@ -37,4 +37,8 @@ public class Position { public void setY(int y) { this.y = y; } + + public static boolean isCorrect(Position arrival) { + return (arrival.getX() >= 1 && arrival.getX() <= 8 && arrival.getY() >= 1 && arrival.getY() <= 8); + } } diff --git a/MavenChess/MavenChess/target/classes/model/Board.class b/MavenChess/MavenChess/target/classes/model/Board.class index 1607f865bdea694975cea772c5e112c2b8bf410d..526acee78857de253659c92512c5d4d378a2ac11 100644 GIT binary patch delta 544 zcmXYt&q^Cn6vlt|&LoqJn#8Dq)JbV#s>#IG{>e(C1!;wW76fTQSG6_Rl$a@IpwNvQ zH(g2|pn?n6LWxqr2k5HL(8maE?a5UxoOADYzH`p^-LuqJ$Nl;5#}%-`(<ApwJ+&9^ zG}{a7VYd~v!j3~$;of4~pF1vTCP#@erHEC6p!&vT{OICSE=_5a8Oj3hHlyIV!m3n* z-Y-?JszAW^VLRMc*wKepS26bTX5?zPy}z?0<#ubg)9mH7-#gL8qCzu9N>pj2NL=E5 zQ1dw0f=0d9R_VZM*vp>%jf59FX3evYNyHkb#4}FAUMXY}C*1Wf8Q;7ly;+z(XTm!t z*C&5ysnhG<hHo2wqH(AN>YvGIi&=@QWF*FAnIl46rWnDKToO@b`GQAeIap+ZWhQwc z<t@o?$@7sr><OXEoE)f&`n2#WRK>$Hism+4@(N!tEu4rN^ODP~^T6;Pn%Bs+v}y-e z!GP>vETxi3{RgE6+)KXG0~xNE7G>spSQGWbfhqqx$y%R6pJHue=t>(`uBrOssAk0F TZrHc$rH=)1rsO;}Jx~4vgi2DT literal 1841 zcmbVM+fEZv6kTW9GPD*LD2iNEz*{K_-fu;PVu48u6p9eygBi*M2I~xI3;uv_eucjH zY@(1z^aD)vTYUCGTxUAgiRnYrhfeoeXP-4|?|sgE`~CSVfJe|HP!LcNj3R^<0d2?F zH^z&Gy*0kLv11l00xc7kZB-r#1mYvBDq00jymU6r;&{$73uYJ*oKO*sq7Ch}rIcfo zHo0|Irj!NRpJjb}k}5QTh{qVOY!zM1@vu|2DwbnM(1~v8>ZCv@uInSK5p<wOGN%Q) z<9`Lc^rV{*L0=U87@*m*N$*-MO&Uo`4HajjIEO)c-7+gVZ@WNOeB^&gX<;~u^SD3@ zOxB;cP0)$b^SPCE0l~O!+Of+O!>+6v#XU2?wt~g2&FL%Y=eeo11<8mSv%I*Nk&Ge` zt>$DF^x3%;$pva$O3%+N<|G%S&uZS%({$Pu3)RFj`ogSC;^2bQoQXh3*0Rloy_Xwi zX~ozmlIhAi1*5oXlq`uoQdrzk*|s>EHm_=TWJ%(D#VEX(H+H?$kUPVFdG6Gir?SC0 z&W=skWuyP^9eY%8icYDTxa>GD1j5{sv8}CbPDaKltGw-Sb1UPeJ=3I?RLxlS7E8=K zd!>RoW62^SuDdaLI5ET%r?BW&K6&OC_2MEfvFVo?D~J=1_;7-F)Q7JSU-jWJ;&C6o zMtt3eZxG+~;ahw&t3wN)w>jD@kCgQDBXJ0k&?dh?{e*B}qF<YQ2QBdt;eL^SEyVld zpNS)MtRJCsJs3JfEO>}h2k5Plp?YLXJyNYlw$>xHy8E@d0-9gp11k#P4xbO)9)}TR z-`fzyNj?YoKMW0bc|)@3f`J(J(Tz7;eT!2#L=V2BkLw^(cyVL6=k}0&!hLE2N&Yk_ z$6QoYL<I1QN<v=WYG*M+2ePy6vWcSyICFrZ(Y$n~xX!BQ;0*not-Xoap1zDG@Q_-9 zAG*_?<`U;7uT0F-9Fij$9pET@!g93WM?%^ktftpQV|a{7cRhwFmZUIFH6uURu>5p0 h@<R>FKWRpOxMBHpGxFyfmY-=x{zAj@v+ik|`vbbyBC-Gg diff --git a/MavenChess/MavenChess/target/classes/model/Log.class b/MavenChess/MavenChess/target/classes/model/Log.class new file mode 100644 index 0000000000000000000000000000000000000000..59bcb237934dd8d469f702c385593215ee0d5885 GIT binary patch literal 246 zcmX|5I|{;35S-1*pF13R@a2T;-oRzVBJ{v|%*lYAgX?`0)ecmNM2?hE2B%<jyx z!@NJw7k~&u4+cyJRu48hgyC7-M3{>*3%AKxrVXL9RHbSnf;pKU9JqvTQ5|I-##KhJ zR=g8}Se0^fEfQJpMUt~JimO!Q2T?1{f1=f#)P>;3e}@IZ+f~;(m20KnTy~x75E#SZ oY`Tb>(=m3Lg)Il{*#mTE!GOo8&wvS^vDfZ4&ptE4fYCtk1v{55xc~qF literal 0 HcmV?d00001 diff --git a/MavenChess/MavenChess/target/classes/model/Pawn.class b/MavenChess/MavenChess/target/classes/model/Pawn.class index 60f6cda92cbfee29e71c4f64b130f087131959c2..87d5bc815e55dce7814ad20e95dfa5d3904fc549 100644 GIT binary patch delta 16 XcmZo=>0p^~j#V%{wZw7b1ye=<Fgyjq delta 13 UcmeBRX=Rykj)^aE<7HDu03dS&p8x;= -- GitLab