From 08292bc9dd70d8fb6b0f250c9c3431119ff6e0dd Mon Sep 17 00:00:00 2001 From: ElnuDev Date: Sat, 4 Mar 2023 19:05:57 -0800 Subject: [PATCH] Add piece graphics, flip white and black tiles, swap king and queen --- black-bishop.png | Bin 0 -> 2352 bytes black-king.png | Bin 0 -> 2901 bytes black-knight.png | Bin 0 -> 2662 bytes black-pawn.png | Bin 0 -> 1417 bytes black-queen.png | Bin 0 -> 3256 bytes black-rook.png | Bin 0 -> 1217 bytes src/Bishop.java | 4 ++-- src/Board.java | 25 ++++++++++++++----------- src/King.java | 4 ++-- src/Knight.java | 5 +++-- src/Pawn.java | 4 ++-- src/Piece.java | 22 +++++++++------------- src/Queen.java | 4 ++-- src/Rook.java | 4 ++-- white-bishop.png | Bin 0 -> 2114 bytes white-king.png | Bin 0 -> 2771 bytes white-knight.png | Bin 0 -> 2573 bytes white-pawn.png | Bin 0 -> 1381 bytes white-queen.png | Bin 0 -> 2932 bytes white-rook.png | Bin 0 -> 1125 bytes 20 files changed, 36 insertions(+), 36 deletions(-) create mode 100644 black-bishop.png create mode 100644 black-king.png create mode 100644 black-knight.png create mode 100644 black-pawn.png create mode 100644 black-queen.png create mode 100644 black-rook.png create mode 100644 white-bishop.png create mode 100644 white-king.png create mode 100644 white-knight.png create mode 100644 white-pawn.png create mode 100644 white-queen.png create mode 100644 white-rook.png diff --git a/black-bishop.png b/black-bishop.png new file mode 100644 index 0000000000000000000000000000000000000000..c4dca86d9d4db201c18627d920d8da451c74b7fc GIT binary patch literal 2352 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 literal 0 HcmV?d00001 diff --git a/black-knight.png b/black-knight.png new file mode 100644 index 0000000000000000000000000000000000000000..2271f2a1d3ffccd9df1f50066fe3b7e7a11f2022 GIT binary patch literal 2662 zcmV-s3YqnZP)pF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H102_2g zSaeirbZlh+Vqa@+X=iA3UvqY6UrujRXklb;cZ6V9egFUo%t=H+RA_;{T5U{JR~mlK z9R?Wj6NZnO&{VKn#k3l08`v(A?E+b3QCC@)(n5^w(xmNn{jqFz6Ade?Wo668kcQNj zF4eAXPysDVXmyKeOj~NQVybO~hMf<%_q{NsifvSwVdmW*aBmqp(D|}&a+2XW=brOC z_dV}9?>QI2%!r1ms=5ilK>%`0Ow8|-laohg;YR@s7z~EpDJdzVQ5kT?L^K49jg48{ zZg;;BV(APtAW2dlGw)*NzXC7-05dmPt=8X0Jm4&oqS1-R=LmDn0coVBKG+4e0JwhrI$nMCRdjWAVQOkhZ(Cbii>j(B?axU7M-2wU-%?Ui zY!UDeUx2ErivZLy^By4t6h%Q@T^-JzJ&Qnn8jVI26cnJixELiRC5VfQ0{{ zt}cC`ciwr26-D9p_I5UzOd$twX=y1tolaI1h0Dsyblhk(a(8z(6A`PbS`!TcF+}uV zBH|~Xd{Q4MCntxWefC*48jWGELR+_PWm%SaXlRJ@^Ye9l?b@~MbUK-cCPqd^G9nV7 zs_Gwzh5nsD@jZ;!mbiB5PkgXZp*UFk3RZn z*yI85qD715t!rv(Vj|)rM~>)Na&j^c4h}LAc}7P^SA`=$5Yc%e;{E&gM?@X~uUN5S z-n!+>m-Aowwd-G;&{G9}^L8+_+K4Po6xf z#lp@&Tmv0wB%jZBR0y&7*s)`{c=2L@CZXB(?b~ts^l8-B*U#I=|!rLrg^Dfi||e8`f$?Q6`3lhWy+ZZrQziw>F2lqoX6JXWn}2EhZw~x^=6Lb#!!S z)99xQP9Y)0ULi!>>#x6#%a+bKf*w|P!G&JDlmtV$A#)|jedoQSG&z(C50LahJ z*RhX2`bhh^X>NP{OguU|ngHNelarHZYHA9XJFHeKnwy)kVZ#P6^SC5Q{mh)x-`^k9 z^A|2$05ju>C!T;10?dp{mo5PSm^pWD``I4I24L##?bQ$9p;~cqF?xD>c*BMb5JFrP zLOjmQSyNL}xO(+!P<^;uE`0ID7ciU6$jHb50QB|sY3J)403x6Ouh*La00RR90DzX3 zmY_XhGMP|cUynE6d=tx-EfdUql$n3b%s&FK?BkC=4(X-z_4NS&Hg4Pq0JwAK4s13X z04yCH9bFkvfDl5=2!YXP#JY9ske!_kNs{pJ!w=)wv17>0%>2$^nVFe*_uY35Y z{+gM~tyb%9i^XzB2=NjCbar+IO&$QQT)6@OSigR~j%icS>-9bqP=L?pvjad@Ru()S z4|eR>fgL+`003Tj~!uX_GcpEPd@pCv$C={ zJ3E_gHXF;b%(=O_dS{z9ZDO0vrjg$_XKgkRQ9BWFYilb@k`&e+a{c;smStH_KOTAH z5iPO%&qBG7K~>exnTC34X=%|r-n@A;JDpD7%#pA*KnD8;5%HBPSN!t(P)kow4-=7o zS&*8Vs__|^J?7lIQEysWTB)k4`vLp{zRkZ~`#jRVnxV*evxLmG&2ms7{7r-8?)!M8*peRa`5aN^&;%8rd^%Xz;^wT2PjqCda zBqb#Q0DL|lZrr$mw6rwS*x1+-v)TO3d;05CBz0RY-1FaW{s{Q2_{lMQ4Zj|Tt{6Z0)aO_U@_x~h<- zkfJE*n2rTeU0r?8$OF?KL;(1G<`t<2&@SNAQH?MgD z_*MXb&^_RCxl#cNAI!`e7W5Qi=6qoK$oE57dwV+)6BF_N`|sbEtOUM2vE6GM z7#Kixb+sR+c>rMwNCtp2XU<@j2Y*o0_5@}QOTaY%YnCou`n?VBvE3Fz=r;ua2QBzh USZ^W!xc~qF07*qoM6N<$g3E!_LjV8( literal 0 HcmV?d00001 diff --git a/black-pawn.png b/black-pawn.png new file mode 100644 index 0000000000000000000000000000000000000000..b59ed2da73356657af15374f4098e74fdc9657f7 GIT binary patch literal 1417 zcmV;41$O$0P)pF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H102y>e zSaeirbZlh+Vqb7!cWz&Ec4uEsZ&PStWN&vG$U|-b00i+#L_t(&f$dq(OB`nye!iKk zZer?>P_moagV7j!QIy?Fs7)yvQx75RUW}C9bLd~8ltvGwg_0Z!Jp}4ev?8q<5~Y{a z6$1%j&1$18Gw-J{=Eu^g%g%mp56Kimvpeg|m?e-0URZYD_j{gazMngvU}n6_(8?{q zE8ZI@HxBvTU^<hM8jkPQUs(1z)zyW`$w>e> zp_KZ=FpOruc)`rRgp~3(BI1F80S55K7#tjAB4Q#M^NZJ)Ata^z5WxD@)|MWPMv={C z-RW99&7u69|m+OIu?%c7L(;vL@dnz_fvyX^4nM|sa zCr>(xx1+JKk(0@!dSxP3E(3yyR)~nZySqykZ%1!$uiXptWidcRokYZwlau=v4}gUb zeCyUNCL%Tr>0IaUAx@`gvA3l63 zLeoBW+lFfcN~vAowWIRBv8Q(1Z5yr)XqvVL0F8}}ZkyO!n|7_kH9If|02eP_gb-ri z#X<;NxNrdgU|H6mu2p#4#BLK2_xJbjdll;M@3)uHzsk0e5z%KvluxBnDjJQJEIt~I zaw?TlM3g6@vt={D%#c!EAtGK|TjO{~xSqot)~Z%=%6AOCGW(!Ty9th@xk@$*Ky;#`N?wMn*;;gs8SG z>q^OmrMNT&xZW z@bu|ZT)TEn01)|n{&Fcbj;|IsH#d)3mSyI0x#~zHg2#^^`=PZUjvqgcL?VGeAn;t% zwE9pe^rBe4V-Mu>`Cb6kQ&Uq1E*=0LJ$i(hnHd16QA&O3l<#POnL7bsc6QdYxKc4U zH)ntR)G4==InW6JiA2JKr2SzJmuCYyfVNB~gO!yPuewS`DwRSelL3GZIA|>TV>+F# z25?A938%^KCzMjy*w_Goz>_CWjuy);YM`Q`q6T=myuEGMoY`!)wpd=#TT08as&!pQ zBoaX~nev|0U1Ofrn)D&&!z@U^WO6==3YdP@F-_*Z1P;UGS XOji<$rjy3d00000NkvXXu0mjf@ursf literal 0 HcmV?d00001 diff --git a/black-queen.png b/black-queen.png new file mode 100644 index 0000000000000000000000000000000000000000..fd782629d927862f7a18673d9c9a6333b5c8f991 GIT binary patch literal 3256 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 getPossibleMoves(BoardCoordinate position) { diff --git a/src/Board.java b/src/Board.java index 30f05c2..b48e736 100644 --- a/src/Board.java +++ b/src/Board.java @@ -1,5 +1,5 @@ -import java.awt.Color; -import java.awt.Graphics; +import java.awt.*; +import java.awt.image.ImageObserver; import java.util.ArrayList; public class Board { @@ -44,21 +44,21 @@ public class Board { if(i == 0 || i == 7){ for(int j = 0; j <= 7; j++){ if(j == 0 || j == 7){ - set(j, i, new Rook(i==0)); + set(j, i, new Rook(i==0, panel)); } else if(j == 1 || j == 6){ - set(j, i, new Knight(i==0)); + set(j, i, new Knight(i==0, panel)); } else if(j == 2 || j == 5){ - set(j, i, new Bishop(i==0)); + set(j, i, new Bishop(i==0, panel)); } else if(j == 4){ - set(j, i, new Queen(i==0)); + set(j, i, new King(i==0, panel)); } else { - set(j, i, new King(i==0)); + set(j, i, new Queen(i==0, panel)); } } } if(i == 1 || i == 6){ for(int j = 0; j <= 7; j++){ - set(j, i, new Pawn(i==1)); + set(j, i, new Pawn(i==1, panel)); } } } @@ -142,10 +142,13 @@ public class Board { } public void draw(ScreenCoordinate mousePosition) { + + + // Draw board - graphics.setColor(WHITE); - graphics.fillRect(0, 0, DIMENSION, DIMENSION); graphics.setColor(BLACK); + graphics.fillRect(0, 0, DIMENSION, DIMENSION); + graphics.setColor(WHITE); for (int y = 0; y < BOARD_SIZE; y++) for (int x = y % 2; x < BOARD_SIZE; x += 2) graphics.fillRect(x * TILE_SIZE, y * TILE_SIZE, TILE_SIZE, TILE_SIZE); @@ -154,7 +157,7 @@ public class Board { forEachPiece((boardCoordinate, piece) -> { // If piece is the one being dragged, render it at the mouse position // Otherwise, render it at the center of the board tile - piece.draw(graphics, boardCoordinate.equals(dragging) ? mousePosition : boardCoordinate.toScreen()); + piece.draw(graphics, panel, boardCoordinate.equals(dragging) ? mousePosition : boardCoordinate.toScreen()); }); } diff --git a/src/King.java b/src/King.java index 44419f8..7510129 100644 --- a/src/King.java +++ b/src/King.java @@ -1,8 +1,8 @@ import java.util.ArrayList; public class King extends Piece { - public King(boolean black) { - super(black); + public King(boolean black, DrawingPanel panel) { + super(black, panel, "black-king.png", "white-king.png"); } public ArrayList getPossibleMoves(BoardCoordinate position) { diff --git a/src/Knight.java b/src/Knight.java index 5c1489c..f7c86d7 100644 --- a/src/Knight.java +++ b/src/Knight.java @@ -1,8 +1,9 @@ +import java.awt.*; import java.util.ArrayList; public class Knight extends Piece { - public Knight(boolean black) { - super(black); + public Knight(boolean black, DrawingPanel panel) { + super(black, panel, "black-knight.png", "white-knight.png"); } public ArrayList getPossibleMoves(BoardCoordinate position) { diff --git a/src/Pawn.java b/src/Pawn.java index 2563766..bc73ad4 100644 --- a/src/Pawn.java +++ b/src/Pawn.java @@ -1,8 +1,8 @@ import java.util.ArrayList; public class Pawn extends Piece { - public Pawn(boolean black) { - super(black); + public Pawn(boolean black, DrawingPanel panel) { + super(black, panel, "black-pawn.png", "white-pawn.png"); } public ArrayList getPossibleMoves(BoardCoordinate position) { diff --git a/src/Piece.java b/src/Piece.java index d081207..fb23903 100644 --- a/src/Piece.java +++ b/src/Piece.java @@ -1,16 +1,16 @@ import java.awt.*; +import java.awt.image.ImageObserver; import java.util.ArrayList; public abstract class Piece { // Width and height of placeholder rectangle graphic - public static final int DIMENSION = 32; + static final int DIMENSION = 48; + Image image; public boolean black; - // If no parameter, default to white - public Piece() { } - - public Piece(boolean black) { + public Piece(boolean black, DrawingPanel panel, String blackImagePath, String whiteImagePath) { this.black = black; + image = panel.loadImage(black ? blackImagePath : whiteImagePath); } public abstract ArrayList getPossibleMoves(BoardCoordinate position); @@ -39,15 +39,11 @@ public abstract class Piece { // The Piece class doesn't store position, // so when drawing we need to be provided this along with a graphics context when drawing - public void draw(Graphics graphics, int x, int y) { - graphics.setColor(black ? Color.BLACK : Color.WHITE); - // Drawing is performed from the top-left corner. - // We need the drawn rectangle to be offset by half of the width and height - // so it is centered on the provided position. - graphics.fillRect(x - DIMENSION / 2, y - DIMENSION / 2, DIMENSION, DIMENSION); + public void draw(Graphics graphics, ImageObserver observer, int x, int y) { + graphics.drawImage(image, x - DIMENSION / 2, y - DIMENSION / 2, observer); } - public void draw(Graphics graphics, ScreenCoordinate coordinate) { - draw(graphics, coordinate.x, coordinate.y); + public void draw(Graphics graphics, ImageObserver observer, ScreenCoordinate coordinate) { + draw(graphics, observer, coordinate.x, coordinate.y); } } diff --git a/src/Queen.java b/src/Queen.java index 44f36db..c388211 100644 --- a/src/Queen.java +++ b/src/Queen.java @@ -1,8 +1,8 @@ import java.util.ArrayList; public class Queen extends Piece { - public Queen(boolean black) { - super(black); + public Queen(boolean black, DrawingPanel panel) { + super(black, panel, "black-queen.png", "white-queen.png"); } public ArrayList getPossibleMoves(BoardCoordinate position) { diff --git a/src/Rook.java b/src/Rook.java index d94ecf8..30dcd16 100644 --- a/src/Rook.java +++ b/src/Rook.java @@ -1,8 +1,8 @@ import java.util.ArrayList; public class Rook extends Piece { - public Rook(boolean black) { - super(black); + public Rook(boolean black, DrawingPanel panel) { + super(black, panel, "black-rook.png", "white-rook.png"); } public ArrayList getPossibleMoves(BoardCoordinate position) { diff --git a/white-bishop.png b/white-bishop.png new file mode 100644 index 0000000000000000000000000000000000000000..287fb5ef0073e07ba76a185712d505bcb174a66a GIT binary patch literal 2114 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 literal 0 HcmV?d00001 diff --git a/white-queen.png b/white-queen.png new file mode 100644 index 0000000000000000000000000000000000000000..5b62a60d845758cf51743e8e9532e76d1ff26f8e GIT binary patch literal 2932 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 literal 0 HcmV?d00001