From 677eae91195999179fcd1f18540de910a1bcc2e2 Mon Sep 17 00:00:00 2001 From: CT Date: Thu, 23 Apr 2026 13:10:37 -0500 Subject: [PATCH] pawn moves check --- Board.class | Bin 728 -> 980 bytes Board.java | 10 +++++++++- Knight.java | 24 ++++++++++++++++++++++++ Pawn.class | Bin 804 -> 1840 bytes Pawn.java | 35 +++++++++++++++++++++++++++++++++-- Piece.class | Bin 641 -> 1092 bytes Piece.java | 16 +++++++++++----- Position.class | Bin 0 -> 268 bytes Position.java | 8 ++++++++ 9 files changed, 85 insertions(+), 8 deletions(-) create mode 100644 Knight.java create mode 100644 Position.class create mode 100644 Position.java diff --git a/Board.class b/Board.class index f8ab0614e0eba030185e5329cb8c11ec17a86ffd..14395b1f7ea29474a5f885a4442ecf0064edc88c 100644 GIT binary patch delta 451 zcmZ{gy-Pw-7{;IXcCSZo1|s=Y`ITnsO*6+_swD&=p&_iXE_9cxpg~P7{sGBtb8K*^ zB?y9srYLBwp|PPqps^`?Phwke&T~HA=ltG>^QOHD{rUUu9>6-vJ^eiFMv$QG99kVy zM;H--882or*SpLXJ%}MLknkdjd4jv%Y+D_xX%py}XI0kIUM$EWo%CJ|%J+uB(h^(u zYIV!pH!Hlg?2YD;eb6RMWou(ZCAUj(S?#TsX*)?OOse1*aIt2b1~vSFTllxTM1$e` zHK$du=sb`?S?7~tg7f_v1Ip%fsOx6aM^|Ni99vsToULa{_%tUVhy)BCL_m1RZ8QO0 zU{nIW_{M_*ijv8_s@#p8$mDMj?IR%o~+a*=1D4xmn4jnc8o@IVAvRt-ve ljen(%lkVnI%= 0 && pos.x <= 7) && (pos.y >= 0 && pos.y <= 7); + } + + public boolean isOpen(Position pos) { + return this.board[pos.x][pos.y] == null; + } } diff --git a/Knight.java b/Knight.java new file mode 100644 index 0000000..95c7fb0 --- /dev/null +++ b/Knight.java @@ -0,0 +1,24 @@ +import java.util.*; +import javax.swing.ImageIcon; + +public class Knight extends Piece { + static int[] xDir = {-1, -2, -2, -1, 1, 2, 2, 1}; + static int[] yDir = {-2, -1, 1, 2, 2, 1, -1, -2}; + + public Knight(int x, int y, String color) { + super(x, y, color, new ImageIcon("sprites/" + color + "/knight.png").getImage()); + } + + public ArrayList getLegalMoves(Board board) { + ArrayList positions = new ArrayList(); + + for (int i : xDir) { + for (int j : yDir) { + Position test = new Position(pos.x + i, pos.y + j); + if (!Board.inBounds(test)) continue; + } + } + + return positions; + } +} diff --git a/Pawn.class b/Pawn.class index 4ac6511dc540de4fc2ac8314e2a3c0ecb6d1ffa3..8d2957e052e4a70830b7de29ecb47b128d4e0e38 100644 GIT binary patch literal 1840 zcmah}ZBrXn6n-v*Y_eTQ4NxqFQYvke0FCd8At=ORqe(#nq)=aaN$!L#%WmAgf%3(_ z;Edx3+drYsRG29<{Q;fvr}PhKbv!pOLqgK{VR!F6=RD`_IcJ~$`}7%rMSQ2Bhhg{u z-{%kG-hpYC;^{qJ66u0thsnZcpbvhAkv+aEQjT5VGH=QqI(d@Y(qp(D$tZN(;)Kmf zms}*G?IIlv0Rutk4E}l3Hsu1v?S$P>riOuj3=pIwWHlj%aHQ^*AIMsg2_5J0nuf6Q zJIK(tYKnqjxDiRG+cT(1PQlTQAck>4!-#>`ago8d$`5P`xx>AzvoDGaY)iu>hQVrq z6=_=WMc3tr8Pk(GMlr79US{Zx)O=krFo~;_N5QcimojcoB7iB<=XXpgbX>;`4G{xT z#2C(>?IQI_d|%-f^|+-^E87o5K_;S<+YDv9>UgF!9a|N1(?A?=QbJ{iP~y3fx*!k))q! z&xjJY6cJR)__#mmaJY?nfQtm#q%iA@;hP(p1&zqU{-`jRx&M z)JoF3ht5GP)B7{JC85Db-|^U`vDp)_&Dp2u1&*N|;oLDovEDy0^g9_a+@|+{QX+s6 zaxn(=TS?<{a!Ib(KkzFp`}qW;o5vW-#-3mz{KgTkJ;Gmf9(s)A^a-Xn={)-cZ`D5U z^%alt;Smy#FfsE=?P9(I($^JP*R~>k#d_2R_Aw@#qn_2DLErx$^cnqPp6n;WpH^G& z1D#*hg8N-tP}8=i(nzE$($_%F{6?(xR2f{Vjzd3jIDjF9Fh}=wgyCTjKhm)LiVOIY zM&$+lzt3TejbNP3(=YihuCRSfvY#-8FUVU6{+C$SFglk^{*BBWGSv`S8i702(+XDU W8=w)%(eouX>81u|3t!_~T>KAQXVDS> delta 236 zcmdnMw}g%B)W2Q(7#J8F8MG#HT~QX*@bvV_N-Rs%Pb@Fd_smU9Pqo$zV`mU$WMBzM zEYD+P5TAHobaFG3>|`ls9d%ho2BF}BqRf)iVtq#a0-yrDg1mHoHU@bv1_cI1b_OLL z237{;$+^sz8Pz5`vS=}COwM7^EfQf60NTmGzzBq#3}Qf19LO_fU}Inb(&AduGP@ZV zBXxH%Ff%Z0XJFsPz`dP;eitK#d$g6_P+U6N40kG?3;18YKtBG7KtU Ob&L$E4C)M;43Yp!qbDr@ diff --git a/Pawn.java b/Pawn.java index 31d309a..cfcdbaa 100644 --- a/Pawn.java +++ b/Pawn.java @@ -1,9 +1,40 @@ -import java.awt.*; +import java.util.*; import javax.swing.ImageIcon; public class Pawn extends Piece { + boolean hasMoved; + int colorDir; public Pawn(int x, int y, String color) { - super(x, y, new ImageIcon("Sprites/" + color + "/pawn.png").getImage()); + super(x, y, color, new ImageIcon("sprites/" + color + "/pawn.png").getImage()); + hasMoved = false; + colorDir = color.equals("White") ? -1 : 1; + } + + public ArrayList getLegalMoves(Board board) { + ArrayList positions = new ArrayList(); + // diagonal moves (captures) + if (Board.inBounds(new Position(pos.x + 1, pos.y + colorDir)) + && !board.isOpen(new Position(pos.x + 1, pos.y + colorDir)) + && board.board[pos.x + 1][pos.y + colorDir].color != this.color) { + positions.add(new Position(pos.x + 1, pos.y + colorDir)); + } + if (Board.inBounds(new Position(pos.x - 1, pos.y + colorDir)) + && !board.isOpen(new Position(pos.x - 1, pos.y + colorDir)) + && board.board[pos.x + 1][pos.y + colorDir].color != this.color) { + positions.add(new Position(pos.x - 1, pos.y + colorDir)); + } + + // one square in front: if blocked return early + if (Board.inBounds(new Position(pos.x, pos.y + colorDir)) + && board.isOpen(new Position(pos.x, pos.y + colorDir))) { + positions.add(new Position(pos.x, pos.y + colorDir)); + } else return positions; + + // two squares in front + if (!hasMoved && board.isOpen(new Position(pos.x, pos.y + 2 * colorDir))) { + positions.add(new Position(pos.x, pos.y + 2 * colorDir)); + } + return positions; } } diff --git a/Piece.class b/Piece.class index 79853856f5e7739b5f935d65d01b319f3d2ba5b6..472ecfccb1b85b1784ca5fba7f26891c36bfa1c4 100644 GIT binary patch literal 1092 zcmaJ=YflqF6g^W~wp|t|MXJcF_<(j1s^WVqT8NrWs*u!R^xL+blp*bIGo6C`D>Xb4 zP5c4=DC3>ol7caQ*m>MJ_uO+I`|J1jp8(3(G7-a&fw+YPh8fcP-ho$ad499FUEAk% z#V}kFzEB$sL;1q4fh0q6C+G?#0^fuIQ+tjuB=W9X*iB&+V+O`8q%lFp9l`6ITsuLR z!K|D+IvO`=;R>b*R1aE#WXMzo!K+FNzZt@=TDXR3($Vcmp@=LU;k-jtblYB&6UxAh zg;~rou+Q|l+Ol9F7g~-?+`vr(w=CSo62n9oM!Ua}UT06#Nm{BQy~B`=VLktM0M{K@ zgbo=6-mZ1IJmAtPd`cmYf&tsY3hrDgWA&)3c$-QP^r)Cq5s?UrJCvZJG`ZJyl2~Jy z>3EX+D%a*}FKFcaK;;4=m!iR`(06gqz9yVxEv4L-(o>>UEKBJfRYX@gREnx-`kv}ZDzzQSy^JYE#*p0g6>m}nHpp?A zCg8$TKW=0hG)wD~!-xvE^qVLo5k z3_RIz3jY#Hn(Y4qN`rya37FNOC+qyR&{E8Bbk}sHu}ISzqyHsN-$OhC!(%$d@Pt;H zb6TNiG~8*VX&)j?0#9juMz>dVPS8GQpMlvwV0@gJJwxgQmc4p{j6EGcLG~*F7#v!& zA=spFBSdb|eUyfKj9yE4-lud3qa`h@*vH7yXC32uI=>g4=IO*vvG`#?s(*A4-8?cx qv4IzK*V>k7*DvNbEN50vQDk4}772-brjR5FQN}OnrA+TJZ2kde9riQ; delta 358 zcmYLE%SyvQ6g@LErkPG^Y9Cr#AN2txqFK4pjT<4LAPBk>Lk*g$D7C&;;wO}TiC`35 zxN_zHxDv!OL2z-;ojdoOGiN^XkCyuUd3y)2fyIFe4jkm+*iae;XaQ>{i94}?xMPK8 zS=1Oc8*y)@lExUy0wY(Ky`)c~x7Ceqq9D5M2jO{i9Iq)lWtztX9b}QR++nGdz~< awNKbwHt~YW{=c8fh#tRMqIjMniG^P_954<5 diff --git a/Piece.java b/Piece.java index 1cd1439..4acc428 100644 --- a/Piece.java +++ b/Piece.java @@ -3,16 +3,22 @@ import java.util.*; public class Piece { ArrayList legalMoves; - int x, y; + Position pos; Image sprite; + String color; - public Piece(int x, int y, Image sprite) { - this.x = x; - this.y = y; + public Piece(int x, int y, String color, Image sprite) { + this.pos = new Position(x, y); + this.color = color; this.sprite = sprite; } public void draw(Graphics g) { - g.drawImage(sprite, x * 40, y * 40, null); + g.drawImage(sprite, pos.x * 40, pos.y * 40, null); + } + + public ArrayList getLegalMoves(Board board) { + System.out.println("parent method not overriden"); + return null; } } diff --git a/Position.class b/Position.class new file mode 100644 index 0000000000000000000000000000000000000000..3031a6b15873ace5d21c83408926e43e23ef7349 GIT binary patch literal 268 zcmXw!%}T>S6otQ==BJ72k5yN?ao1*H7jBCnf)J3lpmd+qL8jCMYAX6zT@=BE58y+I zcLW*k2lt-2XU=^8e0~AfoFsU(BK(wqQ0T9U*J8Xbs;BX+T$yDfgcDoY=1OP{M~j#? zaYT}GKq|E7^^0w6T?z80l{>wg(sQD`3&AkYM+?EfsUMBdyR(&zdBL-Gz(6xte(z)0IA_#5pU~T=VvohuU4bKR7M>K(f<4QFgYcv-`U^P!8~w RzMg=XkS>v~9_h^E_!qaiD5?Me literal 0 HcmV?d00001 diff --git a/Position.java b/Position.java new file mode 100644 index 0000000..9edf1cd --- /dev/null +++ b/Position.java @@ -0,0 +1,8 @@ +public class Position { + int x, y; + + public Position(int x, int y) { + this.x = x; + this.y = y; + } +}