From 8979e08c66091613e01483b334ad802bf4b2070b Mon Sep 17 00:00:00 2001 From: meteor Date: Mon, 1 May 2023 15:45:55 -0700 Subject: [PATCH 1/5] added flags for castling --- Assets/pieces/bB.png | Bin 0 -> 3318 bytes Assets/pieces/bK.png | Bin 0 -> 5821 bytes Assets/pieces/bN.png | Bin 0 -> 3781 bytes Assets/pieces/bP.png | Bin 0 -> 2273 bytes Assets/pieces/bQ.png | Bin 0 -> 5456 bytes Assets/pieces/bR.png | Bin 0 -> 2329 bytes Assets/pieces/wB.png | Bin 0 -> 4599 bytes Assets/pieces/wK.png | Bin 0 -> 5371 bytes Assets/pieces/wN.png | Bin 0 -> 4546 bytes Assets/pieces/wP.png | Bin 0 -> 3343 bytes Assets/pieces/wQ.png | Bin 0 -> 6495 bytes Assets/pieces/wR.png | Bin 0 -> 2835 bytes .../__pycache__/chessboard.cpython-39.pyc | Bin 19446 -> 14180 bytes CHESS-AI/chessboard.py | 25 ++++ preloadedData.json | 129 ++++++++++++++++++ 15 files changed, 154 insertions(+) create mode 100644 Assets/pieces/bB.png create mode 100644 Assets/pieces/bK.png create mode 100644 Assets/pieces/bN.png create mode 100644 Assets/pieces/bP.png create mode 100644 Assets/pieces/bQ.png create mode 100644 Assets/pieces/bR.png create mode 100644 Assets/pieces/wB.png create mode 100644 Assets/pieces/wK.png create mode 100644 Assets/pieces/wN.png create mode 100644 Assets/pieces/wP.png create mode 100644 Assets/pieces/wQ.png create mode 100644 Assets/pieces/wR.png create mode 100644 preloadedData.json diff --git a/Assets/pieces/bB.png b/Assets/pieces/bB.png new file mode 100644 index 0000000000000000000000000000000000000000..e04fd3472b85f38a78e98f628cd43e3221e985f8 GIT binary patch literal 3318 zcmaJ^2{@E%8~$bn8A}RTQjDQZ%&KIJwJ|6pgp<^anZaPpn1w+?X@s$rwX#KWB9x@g zak3A8TC}0!m?BGy<);$jAD!y_|8<@I_qx9Cd6(zDpZk5E=libjOLTFzQSsBT_)q>n5F`8UkFRmNYj~h;A(*SEK)0YNwV37T3t~4?=BJ^K0JODs8 z)7`zeUQUiU3X_2#ulOMN43-290C-D2i%bckabdnRe|m^HeDe23IE+p;hkNdDLOHQ^ z(*o%Bk!+ea8kf>cq^iCrT28Z2&Ge*O{ zHMk@oo9c&iB@n-blZ?#a0bDK%heU>lha-|S!j(Y@)hIFNIm^?N`k~=@Wl~63)ZZ?g~WwPCw%;4__=@P)? zGC2WE77SyIK*6?p(nF}saL%@`04FD$LkNdU4x!K-20GuO-+eA zh-kDe!G=h{?k4Oo-DP5GveVWW`yESQQg{qn2=_ad`Zw14r`VNpV6Y^S2{bl6j7BB0 znGD$1J>%#<*JAQhzHeCS&$aCODHbUagIvk%e`Wgnl%#xCx<5)+GWb#av=B+fvn8ed zX|<~Y06_g52-fcW=kI)?gH>%+V|ouqJ-IPU2&y<47w-E~OjKF7D1ZgXgXDZGjJ^~N`iu_TZ)P)! z>&>Ffu+fdfIVD{K@7^^G-o4+D7cqoYfXJ$-hq_DY17K*Z6&RKd$o@k&K(TQ^Xa1-~ zR-swp^iC1?sH(_KIEdDE`4AVp@6Ai4_b&SleHUePq7+^&XH^&g-eKphz~#4MU+R6f zfLb9z?^0Xl$P=4EW4f_{S|X*|vrf^xYqmJIt>{a zjb%Rtoa3nRP?pdfw;I9=0m(^e=wyg;F9qq28^&_u=swn97o{)Y$8YpNtg8@!~Qknv0ixn{Xl5z;Xsi{MTzVAcsI zy-Za|7}?P!GxFlZp!1T}`}e!ndPuE9BV;%)?Tn4|mPS0@@3k9JBgqVTuq-s=>5jcU zsgieO(0t(1l8MyX$B`CyJmRIqpb^xPe)m+yqHWJ@5ELM#Bn#4p_v!-?vDjl~z5$D< z>4KcoKtp>SX?|QWt*>py3OohWW5f88CA3m_I^dfep{!wXdd6KfHi-jj7Y^>l>9;n# z|F8$R@vb}Ddb{l-^48zdk}__5`HHBgP+oao4sw6?l9(95?Lr!@y*pk0u#vTTRP%3jqv^YeG_nYXsK>O$;%NAKqsPqww^@!)9m+JoNS?4Ou%@PF3q}uSbTs>D zAV`$vpO5ohJl6QIyIXwoBV~Oh6V`&By)F#PtW!eSwRts`mP(C0DAaiaiSPJ4mv`n2 zU$Nf@Ii>Xh zBr*-8G(5kjMfLYjdwW*C^||rCA%`~P!6uJ3s))glxXMlK=x4mqgcxe?77Ggtk1JZx zrnh)rczD{)p2v@|x?SEx(CqKgCqyD*-|gsyXN~oY7izziwbt6oYv#oJNc-8V_4b}W zaNxkn0?N!tt`w*_bZdwgkM>8Aa}ao%*01ofB(gJU=n(J)1GN%)Hmw=5RCD*@oZ$1RvZwdXjcIJDIT?CI2JH3r#x#!ss%*V9p0wW5Z$XNesyZKgL1dSl z*;(Mw2$qhBO(u1C9ocGV7*9g&dXuW-DR*x&;p4}!zQ&m4leYz;oWbIY-4i6kZct6- zwdT4=9*-yREU&Isx?&zb6MU4XBwa zxH|y+Ry|UISQncbkogrp=n`#pP-@)`%j;^w~;J8iD3 ztE-_u-i&WvEXwauj!}^>Or8aM)sUKnDOx55o?j#nLb9%(U(eI0`2%e2D?oQO+SqtF z(Bfi@w5qy#PV9xP1_qI9EFb!8Fp7$b@-bO@cK<|MmH2u?LjyKHKVJ|y_T~+S&EbT$ zl2IP{RvUeq`5U^dg=6~<9$YUsP-de847A-GoSJ&s+GJMabS)K3RR<6kEx;qX-3DNJ zb&6C$DY?j8JU(DlgkV_~J=uP4NVVKLN>vTeHZ~=ISppw9c~Zh6a@%M1_(LsoJ37Pn z^tI0!QLG}(46eh+%ufo_RvntlEbmM*f_it()wT&b8jM^oZ}OZK+vC$lRT34JrHAwk zZr?e8-}OlDe6Y1A8X;=Po4%$o@ac$1N7Hg>;~x;r>}xJp%2r+h#Zw&GO+x52LeJZc z;_sac(-)|<4p?lVzPtM(?rv>dC_ZLdO|VRSAlA3AvA=N?jvOWKQ<*)QDFIsM7TWQCDa;#Pf5DXt2-ni++SZ?2*hV})MM@o=FvD11@XZ+Peg&Ds9 z%rhCjEl6@^x!z%Uu^z_J@mVv!P!@D5SFvqPz{Mxb5C;hpOqay__O9kFqc&MeQD|vck$~{f_Sph%dfrHEZfW5OK9IDX^Ewijt6s0p zv2HI|#h5D0sUiu-7XmUZE#*df#=|DY#*TBY&PJ!RtWrF|CW(^N0JS`#WYHDviR= z{Zc4DhrP%$;inJ!AIyAxiq_~Tvrp_sN_?SWZ5UszaYPDxd*A9$Ln`+>^bha!A|j_S zZ*@u>uU2}VswwHb1-Q@nknZOeUwFY!X{A5WqaN|Lvc45FV^*^rL^2Oxlfn*aa+ literal 0 HcmV?d00001 diff --git a/Assets/pieces/bK.png b/Assets/pieces/bK.png new file mode 100644 index 0000000000000000000000000000000000000000..504ad05e273bfdf03c38b8b7174f50fb4641cbae GIT binary patch literal 5821 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 literal 0 HcmV?d00001 diff --git a/Assets/pieces/bQ.png b/Assets/pieces/bQ.png new file mode 100644 index 0000000000000000000000000000000000000000..e07515a7ce4c952b0d415116ad92bd97e9128c17 GIT binary patch literal 5456 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¥Kbd*7ySAD(Kq`|JDNEP*P` zy6w61Ed*uINTqGQ)@3>I@WL4JFQgtITS|_aXAv31q-6YZJHjXER=M@<)7|^q%&s`A zGiN5cMWV{s0tC4))VbZEm%Qj{k>9g*;XA}`*vYUuzI*A-CSXP4J)}N4`d#@HJ9DZ~ z--^{WBs)41CKVve90eSeN_}k(*j=2K9p|QLhK)haM@K)RY_4GgK0eC}3@XUa&us#;2YjcVmm9}7Br^E3VI1!R(t#Lfa&&#k$4{ATHojSPom1p1*`ZL;~#La z2hN(=Lh~(p;vYNc8X*HXI~*kyPrdKE;ztLr%ybk7PPgabUj$Azr%Ry7$@A-du!bSP z<(hu*;>%L@r^LWF6?S7y2ZK`8U3|?RJbUHF|0{nG{9#E}Bm+7I3I^V=Kbj1 zU)_H=TsoF1SrR*DRXYDP=hz{*i`PJD|GB~belPJ84P0zIWn(mY%gFR;IX>_vgZM~> zbzI^HN<)#!tD$fBF53d8=&ggF>r4g@QnK96=uRtW(HWi1^{h`HP2iYZ0}rh?2@0vs zUta=Y_J6Frvl*#9ZR%R@@!V;ezTw(`siw;_GhPm`BM=w@ndo({aaA$rPAjiF(*(=Q z%L`_>qHXHz2=c4kGLEoF z6Y0`O_8Te^h~cPA?kG$K>0!W!fJ*6`Jh7#O z%Ask+z*PvHmK!W0^CJk>Qdt;MX$tD$H1p9nGk2 zSPM)C#gsFmF1_Ths~9Qkr3V8JAG2Z_IVR`a7oC3 z5#@kqx$1`{m)_s*a{S0T>>5!es%0hGzYvZ*G#pdy<<_GnY&U21j^2dX+3laJErwek zgaan-`MbKh-Z1+#ul{CCR8+LqR$;QTIC^j}MdK+zJC=}4^mFLp27lHywg7d2kxzzK z^8AXhbj2cNgtoLEDPGTS44ca2EsJ04pS6K%EVzcMOITv|5TWlgd36i8`J0F{MbAyZ z0`VbAe1Sm;t9OHEO|;`maxL&CFfKY^s`qj_xNdp>{A9BVA3#7tH}m+`hiemT(D3=S zmuNwWb$Yo6a~OMpvtG(xT0&o6BraJ>!h{=$9@|aTV4fGXHBx819EYq(gH2GnPLII{ zAET0_U7bZ2DoSzLfKba#Bz))^&0sC}wG1Sgo< z<^)WBycn`DGZh`JEDUY1=zOGG3z-vqXK{2neA_s&$ly}r?Pk^%sNGICgHBjT8Xo30 zxj#DF4i$;yTUSY$l`WN+$@(`msI8$fL-yB|Jl&idq33@df0#Yt!^fet~zDo z#f>(_g`>gTAz@lyUli((pGe9@tNx4{fy|Vij<|~OJq}@B?SsrTHQv83)Drkz?$I}n z*98(tFfc~=76;7>c9t?^#j>hW`cO816Oz3dsg$k9iS zL%K;)q@TRu<;8N3-aS8sdy5z_p?PVhi4}mF!n@ypT!Ht5DMg5FeHJvjq}ys5{h$Wy z9xk-*z8RSyJlpR1{zzY{%sE*adampb^;j9&e{E-RrSD>Hk{ JZ4)p0{{T{Ro#Frh literal 0 HcmV?d00001 diff --git a/Assets/pieces/bR.png b/Assets/pieces/bR.png new file mode 100644 index 0000000000000000000000000000000000000000..38fd8ca4132d353576fab5b57e5378d76528ff4a GIT binary patch literal 2329 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 literal 0 HcmV?d00001 diff --git a/Assets/pieces/wK.png b/Assets/pieces/wK.png new file mode 100644 index 0000000000000000000000000000000000000000..968cb336cfdbc8d730cdce23084f4f7167bf3f36 GIT binary patch literal 5371 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 LF}m!cW90tTuIqbU_jP}t>$*QryuGdYo?ZKQ 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 literal 0 HcmV?d00001 diff --git a/Assets/pieces/wQ.png b/Assets/pieces/wQ.png new file mode 100644 index 0000000000000000000000000000000000000000..14694ae7faa7518040fba367c6493c25144caf31 GIT binary patch literal 6495 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 PFBHH?-yBw>>k{)n2pOF2 literal 0 HcmV?d00001 diff --git a/Assets/pieces/wR.png b/Assets/pieces/wR.png new file mode 100644 index 0000000000000000000000000000000000000000..6574bbd10fa420d167d324f5c4887e7970ffc143 GIT binary patch literal 2835 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 PK-Fkl-6&U`_a^-To_CJs literal 0 HcmV?d00001 diff --git a/CHESS-AI/__pycache__/chessboard.cpython-39.pyc b/CHESS-AI/__pycache__/chessboard.cpython-39.pyc index eb2bb295d23908470ca200f2cc1bc4e4b191ab70..71749c009836514212259f2573375d2e24cd3350 100644 GIT binary patch literal 14180 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 diff --git a/CHESS-AI/chessboard.py b/CHESS-AI/chessboard.py index 8cc943a..c357376 100644 --- a/CHESS-AI/chessboard.py +++ b/CHESS-AI/chessboard.py @@ -57,6 +57,10 @@ def __init__(self): } self.enpassant = 0 + self.WKingCastle = True + self.WQueenCastle = True + self.BKingCastle = True + self.BQueenCastle = True # function that takes self.board from the Board object and populates self.bitboards @@ -389,6 +393,27 @@ def queenMovesGen(self, index): def makeMove(self, start, end, lookingForward=False): if lookingForward or 0b1 << end & self.legalMoves(start): + #check white side castle + #if 0b1 << start & self.bitboards['K']: + # if self.WKingCastle: + + + if 0b1 << start & self.bitboards['K']: + self.WKingCastle = False + self.WQueenCastle = False + elif 0b1 << start & self.bitboards['k']: + self.BKingCastle = False + self.BQueenCastle = False + elif 0b1 << start & self.bitboards['r'] & self.fileMasks[0]: + self.BQueenCastle = False + elif 0b1 << start & self.bitboards['r'] & self.fileMasks[7]: + self.BKingCastle = False + elif 0b1 << start & self.bitboards['R'] & self.fileMasks[0]: + self.WQueenCastle = False + elif 0b1 << start & self.bitboards['R'] & self.fileMasks[7]: + self.WKingCastle = False + + if 0b1 << start & self.bitboards['p']: if start // 8 == 6 and end // 8 == 4: self.enpassant = 0b1 << (end + 8) diff --git a/preloadedData.json b/preloadedData.json new file mode 100644 index 0000000..105b9e5 --- /dev/null +++ b/preloadedData.json @@ -0,0 +1,129 @@ +{ + "fileRank": [ + ["a", 1], ["b", 1], ["c", 1], ["d", 1], ["e", 1], ["f", 1], ["g", 1], ["h", 1], + ["a", 2], ["b", 2], ["c", 2], ["d", 2], ["e", 2], ["f", 2], ["g", 2], ["h", 2], + ["a", 3], ["b", 3], ["c", 3], ["d", 3], ["e", 3], ["f", 3], ["g", 3], ["h", 3], + ["a", 4], ["b", 4], ["c", 4], ["d", 4], ["e", 4], ["f", 4], ["g", 4], ["h", 4], + ["a", 5], ["b", 5], ["c", 5], ["d", 5], ["e", 5], ["f", 5], ["g", 5], ["h", 5], + ["a", 6], ["b", 6], ["c", 6], ["d", 6], ["e", 6], ["f", 6], ["g", 6], ["h", 6], + ["a", 7], ["b", 7], ["c", 7], ["d", 7], ["e", 7], ["f", 7], ["g", 7], ["h", 7], + ["a", 8], ["b", 8], ["c", 8], ["d", 8], ["e", 8], ["f", 8], ["g", 8], ["h", 8] + ], + "fileRank2index": { + "a1": 0, "b1": 1, "c1": 2, "d1": 3, "e1": 4, "f1": 5, "g1": 6, "h1": 7, + "a2": 8, "b2": 9, "c2": 10, "d2": 11, "e2": 12, "f2": 13, "g2": 14, "h2": 15, + "a3": 16, "b3": 17, "c3": 18, "d3": 19, "e3": 20, "f3": 21, "g3": 22, "h3": 23, + "a4": 24, "b4": 25, "c4": 26, "d4": 27, "e4": 28, "f4": 29, "g4": 30, "h4": 31, + "a5": 32, "b5": 33, "c5": 34, "d5": 35, "e5": 36, "f5": 37, "g5": 38, "h5": 39, + "a6": 40, "b6": 41, "c6": 42, "d6": 43, "e6": 44, "f6": 45, "g6": 46, "h6": 47, + "a7": 48, "b7": 49, "c7": 50, "d7": 51, "e7": 52, "f7": 53, "g7": 54, "h7": 55, + "a8": 56, "b8": 57, "c8": 58, "d8": 59, "e8": 60, "f8": 61, "g8": 62, "h8": 63 + }, + "board": [ + "R", "N", "B", "Q", "K", "B", "N", "R", + "P", "P", "P", "P", "P", "P", "P", "P", + ".", ".", ".", ".", ".", ".", ".", ".", + ".", ".", ".", ".", ".", ".", ".", ".", + ".", ".", ".", ".", ".", ".", ".", ".", + ".", ".", ".", ".", ".", ".", ".", ".", + "p", "p", "p", "p", "p", "p", "p", "p", + "r", "n", "b", "q", "k", "b", "n", "r" + ], + + "bitboards": { "p": 0, + "r": 0, + "n": 0, + "b": 0, + "q": 0, + "k": 0, + "P": 0, + "R": 0, + "N": 0, + "B": 0, + "Q": 0, + "K": 0, + "white": 0, + "black": 0, + "whiteatk": 0, + "blackatk": 0, + ".": 0 + }, + + "knightMoves": [ + 132096, 329728, 659712, 1319424, 2638848, 5277696, 10489856, 4202496, 33816580, 84410376, + 168886289, 337772578, 675545156, 1351090312, 2685403152, 1075839008, 8657044482, 21609056261, + 43234889994, 86469779988, 172939559976, 345879119952, 687463207072, 275414786112, 2216203387392, + 5531918402816, 11068131838464, 22136263676928, 44272527353856, 88545054707712, 175990581010432, + 70506185244672, 567348067172352, 1416171111120896, 2833441750646784, 5666883501293568, 11333767002587136, + 22667534005174272, 45053588738670592, 18049583422636032, 145241105196122112, 362539804446949376, + 725361088165576704, 1450722176331153408, 2901444352662306816, 5802888705324613632, 11533718717099671552, + 4620693356194824192, 288234782788157440, 576469569871282176, 1224997833292120064, 2449995666584240128, + 4899991333168480256, 9799982666336960512, 1152939783987658752, 2305878468463689728, 1128098930098176, + 2257297371824128, 4796069720358912, 9592139440717824, 19184278881435648, 38368557762871296, 4679521487814656, + 9077567998918656 + ], + "kingMoves": [770, 1797, 3594, 7188, 14376, 28752, 57504, 49216, 197123, 460039, 920078, 1840156, 3680312, 7360624, 14721248, + 12599488, 50463488, 117769984, 235539968, 471079936, 942159872, 1884319744, 3768639488, 3225468928, 12918652928, + 30149115904, 60298231808, 120596463616, 241192927232, 482385854464, 964771708928, 825720045568, 3307175149568, + 7718173671424, 15436347342848, 30872694685696, 61745389371392, 123490778742784, 246981557485568, 211384331665408, + 846636838289408, 1975852459884544, 3951704919769088, 7903409839538176, 15806819679076352, 31613639358152704, + 63227278716305408, 54114388906344448, 216739030602088448, 505818229730443264, 1011636459460886528, + 2023272918921773056, 4046545837843546112, 8093091675687092224, 16186183351374184448, 13853283560024178688, + 144959613005987840, 362258295026614272, 724516590053228544, 1449033180106457088, 2898066360212914176, + 5796132720425828352, 11592265440851656704, 4665729213955833856], + + "bishopMoves": [9241421688590303744, 36099303471056128, 141012904249856, 550848566272, 6480472064, 1108177604608, 283691315142656, + 72624976668147712, 4620710844295151618, 9241421688590368773, 36099303487963146, 141017232965652, 1659000848424, + 283693466779728, 72624976676520096, 145249953336262720, 2310355422147510788, 4620710844311799048, 9241421692918565393, + 36100411639206946, 424704217196612, 72625527495610504, 145249955479592976, 290499906664153120, 1155177711057110024, + 2310355426409252880, 4620711952330133792, 9241705379636978241, 108724279602332802, 145390965166737412, 290500455356698632, + 580999811184992272, 577588851267340304, 1155178802063085600, 2310639079102947392, 4693335752243822976, 9386671504487645697, + 326598935265674242, 581140276476643332, 1161999073681608712, 288793334762704928, 577868148797087808, 1227793891648880768, + 2455587783297826816, 4911175566595588352, 9822351133174399489, 1197958188344280066, 2323857683139004420, 144117404414255168, + 360293502378066048, 720587009051099136, 1441174018118909952, 2882348036221108224, 5764696068147249408, 11529391036782871041, + 4611756524879479810, 567382630219904, 1416240237150208, 2833579985862656, 5667164249915392, 11334324221640704, 22667548931719168, + 45053622886727936, 18049651735527937], + + "bishopForeslash": [9241421688590303744, 36099303471055872, 141012904183808, 550831656960, 2151686144, 8404992, 32768, 0, 4620710844295151616, + 9241421688590303233, 36099303471054850, 141012904181764, 550831652872, 2151677968, 8388640, 64, 2310355422147510272, + 4620710844295020800, 9241421688590041601, 36099303470531586, 141012903135236, 550829559816, 2147491856, 16416, 1155177711056977920, + 2310355422114021376, 4620710844228043008, 9241421688456086017, 36099303202620418, 141012367312900, 549757915144, 4202512, 577588851233521664, + 1155177702483820544, 2310355404967706624, 4620710809935413504, 9241421619870827009, 36099166032102402, 140738026276868, 1075843080, + 288793326105133056, 577586656505233408, 1155173313027244032, 2310346626054553600, 4620693252109107456, 9241386504218214913, + 36028934726878210, 275415828484, 144115188075855872, 288231475663339520, 576462955621646336, 1152925911260069888, 2305851822520205312, + 4611703645040410880, 9223407290080821761, 70506452091906, 0, 281474976710656, 564049465049088, 1128103225065472, 2256206466908160, + 4512412933881856, 9024825867763968, 18049651735527937], + + "bishopBackslash": [0, 256, 66048, 16909312, 4328785920, 1108169199616, 283691315109888, 72624976668147712, 2, 65540, 16908296, 4328783888, 1108169195552, + 283691315101760, 72624976668131456, 145249953336262656, 516, 16778248, 4328523792, 1108168675360, 283691314061376, 72624976666050688, + 145249953332101120, 290499906664136704, 132104, 4295231504, 1108102090784, 283691180892224, 72624976399712384, 145249952799424512, + 290499905598783488, 580999811180789760, 33818640, 1099579265056, 283674135240768, 72624942308409472, 145249884616818688, 290499769233571840, + 580999538450366464, 1161999072605765632, 8657571872, 281492291854400, 72620578621636736, 145241157243273216, 290482314486480896, + 580964628956184576, 1161929253617401856, 2323857407723175936, 2216338399296, 72062026714726528, 144124053429452800, 288248106858840064, + 576496213700902912, 1152992423106838528, 2305983746702049280, 4611686018427387904, 567382630219904, 1134765260439552, 2269530520813568, + 4539061024849920, 9078117754732544, 18155135997837312, 36028797018963968, 0], + + "rookMoves": [72340172838076926, 144680345676153597, 289360691352306939, 578721382704613623, 1157442765409226991, 2314885530818453727, + 4629771061636907199, 9259542123273814143, 72340172838141441, 144680345676217602, 289360691352369924, 578721382704674568, + 1157442765409283856, 2314885530818502432, 4629771061636939584, 9259542123273813888, 72340172854657281, 144680345692602882, + 289360691368494084, 578721382720276488, 1157442765423841296, 2314885530830970912, 4629771061645230144, 9259542123273748608, + 72340177082712321, 144680349887234562, 289360695496279044, 578721386714368008, 1157442769150545936, 2314885534022901792, + 4629771063767613504, 9259542123257036928, 72341259464802561, 144681423712944642, 289361752209228804, 578722409201797128, + 1157443723186933776, 2314886351157207072, 4629771607097753664, 9259542118978846848, 72618349279904001, 144956323094725122, + 289632270724367364, 578984165983651848, 1157687956502220816, 2315095537539358752, 4629910699613634624, 9259541023762186368, + 143553341945872641, 215330564830528002, 358885010599838724, 645993902138460168, 1220211685215703056, 2368647251370188832, + 4665518383679160384, 9259260648297103488, 18302911464433844481, 18231136449196065282, 18087586418720506884, 17800486357769390088, + 17226286235867156496, 16077885992062689312, 13781085504453754944, 9187484529235886208], + + "queenMoves": [9313761861428380670, 180779649147209725, 289501704256556795, 578721933553179895, 1157442771889699055, 2314886638996058335, + 4630054752952049855, 9332167099941961855, 4693051017133293059, 9386102034266586375, 325459994840333070, 578862399937640220, + 1157444424410132280, 2315169224285282160, 4702396038313459680, 9404792076610076608, 2382695595002168069, 4765391190004401930, + 9530782384287059477, 614821794359483434, 1157867469641037908, 2387511058326581416, 4775021017124823120, 9550042029937901728, + 1227517888139822345, 2455035776296487442, 4910072647826412836, 9820426766351346249, 1266167048752878738, 2460276499189639204, + 4920271519124312136, 9840541934442029200, 649930110732142865, 1299860225776030242, 2600000831312176196, 5272058161445620104, + 10544115227674579473, 2641485286422881314, 5210911883574396996, 10421541192660455560, 361411684042608929, 722824471891812930, + 1517426162373248132, 3034571949281478664, 6068863523097809168, 12137446670713758241, 5827868887957914690, 11583398706901190788, + 287670746360127809, 575624067208594050, 1079472019650937860, 2087167920257370120, 4102559721436811280, 8133343319517438240, + 16194909420462031425, 13871017173176583298, 18303478847064064385, 18232552689433215490, 18090419998706369540, 17806153522019305480, + 17237620560088797200, 16100553540994408480, 13826139127340482880, 9205534180971414145] +} \ No newline at end of file From 8aee4d088cbecdbf3d0fac7b93e31b75d5b5ea3d Mon Sep 17 00:00:00 2001 From: meteor Date: Wed, 3 May 2023 00:11:02 -0700 Subject: [PATCH 2/5] castling for black king --- .../__pycache__/chessboard.cpython-39.pyc | Bin 14180 -> 16192 bytes CHESS-AI/chessboard.py | 90 ++++++++++++++++-- 2 files changed, 82 insertions(+), 8 deletions(-) diff --git a/CHESS-AI/__pycache__/chessboard.cpython-39.pyc b/CHESS-AI/__pycache__/chessboard.cpython-39.pyc index 71749c009836514212259f2573375d2e24cd3350..5b97919eaeff6fe181367f43e77b4951b7d312b0 100644 GIT binary patch literal 16192 zcmds8YiwM{b-u6Nz5C#DMNt$j%Q7u1j@OYT*-;e7Q7MXg*s*LzmXylb+M$=6l|*y3 z%bi_H7Q3{QN%H8_>U;d z;yZz_{WgLQP^_Gr&hPJ9wLA8j)3w*_Rp%l$%ftUo*R~p^$E@}vhp-v^|0KRHw(B0N zYt6byd6M#wN=Yh(R9aGLq%xAqAmvNSM=C3+EK)g1<&ertDvwk_QU#=jB!%t4NJVZB zw?=K}mT)`X^Z_4M*a~ig+RZIc_lNM3nn39`^#DR_1H$bRj!L*gSwPU7D)!;I~itdy`RdpIeREGK} z@Q$S)#2ntcsGevdx)?29L!K6U>5qsKq?;{26byDbEGVChES z&(1D17CN)DJJ7cM3~>)3t&Kl2NHdE5D!pHJK7f2BB0ia!tyu}Pi~ zw<1r*u=QQ*6>H62w@z9w6<2L#GvBq3TCH5ip_qq|cTskF)k)MmvKrP)S@&4VJ7c-l zQT7D+0vTX0I{L8b$CQ6u%3Ft94-snQ4q`~1X&IkVCrm-=gegd!Fa@a-rt&h1Wn>O| zfW!$)ig9WhE-(LL&MjZ<14m zkPe|l;TTdljwY>DSGHM>9BdK}oM~&-1I+H)AeYplbKBN?x~@v2Zc6H+&T1Mdv_}mP zk;;IGI_yuScUqHH*PF7GPgpmFmf1<`<7|u4F#~@KaMY2~9O|d1FzRs&b(sTcGT(Kk zu(@HYJbL?HqE)`H6?6Tqdi{qr!@gyta4eR{h(eahF{9NNuzE-DL#_0&X!XF_*9ZwD2w4o*XV6o!N4@p4pyl(z+Fp$Oc0S1Q|>_@O6;=jbKoKs9~$Z0^ysUJtM zlACFECaM!>tJfPLW0~W_V~zU|1gRyx(CCyihL=)CF-R{1cI0p+y@ZC-b3s?Ye*C9s<2(qB^ z0i?>dh@m@1#^~b!1(}8RG{x57Ix|bUd9~T8-9n`{PY}!Y>~UvhD4e+|?Gq8K#krrr z*ZvCxMntUQOj-4mC!!+NO{o-^21@@V85C-N82e$II%eQt7gHX_zQoQ{$V4JIaAv67 zqSNjY3o(R@ev3>a%%3a)Gq%6lS9b_?zhT$`f+8hks*hssLaWD)z4qGAyZ?5>HCZNq z(*DQG5$TSi-UhXl4N~&PHUvVofnC)HkqPX}fqmtUEqYElEz~Gj*V8ObHJY8Lo|fqN zbj3GX>h#>;P81XB>r=JH8)({o7=h(@*b)eLcaNQhfKPr9`rbZ}9=}Mq_jmK|J9ish z|57{Wg*)dB>{zseW=EaAox{1WvcSFGv`;L-p6WOHb|pU}yP`ja$!Y3OhN^j7>)&7? z;(;PV&oDU4;CTd_(5}z1=sbc-ns)jUw=&ugywcQiN^d$i&4FB=VQ&z5OHtib(Kd_+PTek;+N#-O{5{rx5dK zf5-1mHs8Qt|2t%ZO&;9r_e3_)_Q+;yZjSyF+{q$zj|qZZr9A zo@?mhYKl8X9`i4B3s4rIV)ZMrWzSeFcwGuIutA-_UR@IVMR_P8e~3&YX|7V;%!n!q zL6mRK&o3`k8}m1&=U{kfwih}J*I?(8Y@>F$n#f*?OjRguSBB;yLlv_@YQ9--Y6>=H zAkwxt<_xbKmka1lNX+&j%*yg0v7AxIcXLowi?~iA1sOIP%CaJqSl?(Ks525DcgfD) zo#p-k1N=g{WsbRL5-gV5>Ue8S#7Br69lCqB7G$N?x%enG%=h&~i~b`tIy#|8%7K>& z8UK5CYk@H`t#9_rI#}H(!Fp<6B~3dbw&MkYKgpoN;I|m?pfbTeq=G_has(rv;1)ds zaKAJh5099w;z$=scGJhhR9Ryl&S3!P9yW9jxzTrdPxZn(KJV?q!xEc2ewv)yO^sXN z2gAGIR`6BS91l8APWT$!^`6HAKcY97b-;;v886>0 zB*r6@H3~A`PVRjNG zHwx4SUzf~*+Uu^5s~z+j6Ate|KsJbnR<$(<|8;vBhL=0`Oxe+wQL0}=fOL-)2BtmK zv#5jAZ*k@v!m?Mkn|bt=pPuK~(I3;4w1e4e{?=xV$$WChWbq0z)nK81H+I*b}VR)ShQ$t}7AZw`| z*-32`*-32`*-33R61M|p!X98NRik*B@gz*qrT}d15QEm|HeqW_ur&s3?d+{m0cuvn zRE({i5sWc0_3MeP1ifKjgx=l~T&5+=G`^Ln5mDrKk~nYtQKAO+ZHjy8tMRb6ADf+N zENxlq9;xN(anobtnM5s6QD0xKo($)-Z_8RyUvp9`ou~uK!OBvwP}yqNE=%1D`f&B1 zf>M~*QTC*N&SIS=%x$J!JTl%) z*qa&&`+>q6_ET6J!YuZzJM0TJ@Ra!#fUe_Nfqq z_nVyAIWb9ZwR0)`&B2`;2gV?CuruRU|IV=_#-EgLv2*ue+_e5qv`eycX^l7LUwP+@ za^b`yM?04v+&Qd-J2(3OZ|53mvx9wD$q*|E$q5NUyeDyPr0=hhgxz!A0-sLEqrxcY z8nj)0AiRWq5a<8KBm(^qQ&ipp`+%mcRF@f0dDb+9%Tt4Xlqpf{Xsp$|{m6@+v6|De zFYgkkH)z}0c!I%4350SI+8aebr1qmn5WqL4+Nm`zXlm6fCG$#gty*7D6IbDTP%Z|! zI<9bac|9->g4s^<^5uFB&v@nuV}gA>z+ex9`x%J3c^^|#2m(Au;~gV<_zT=Qt@P6< zfMU9r<*9b3syl&OYp6=G4rLHF&hTktP*?P?Ru^lW&F@j)y1;e8#6N21-2L`$ep@^i zZhAg+`3mhhIfwOsxi+I{$(tp^J$+x=9kqAEoLaIE;l7!}S3=&$b0%NR$Dp%rn#UG% z#jMc#e@8z)-sDTL?Umjsd3XjvxZ8biGk`%je4mey-FE?Vf%EvSXB-)DG;~G7#nhyk zqAsl$PzVkB3L<@p!D$8qYII)IWTXCT-q`RFfhyDX>%%birurZtK?!c~a#XnNS9>zp{ z;wfAya(p{Xce6*W#+=mV9`4zy_Bc-MMD4@j`W!tO_1ITF+UrA+3ScHcId2kjMd$7! zZ}v2Ul-X0Rk9&&UMT%?TU9#B4a|W>Bw)S@&$okwmIC-9Oy;6wtry$_-%t-;dk|IFQ(rW~7+9kR?YSZbiLWTZ6e zY5I)umI{Y_KAF4NS9UQfqpQ@lQ;`Q&rJxp6FDEOBriVdt(aJZOCUpx)7^C&4>|F}NRwCU{xuFMy_P*b`_b zgZqnq8T6f*vf3}JjL0PycWsn zGf7W8E1mSxvz8Jrd)CWFr-_YRhJi|07PJbQRtz;yFhzndXL}?q4+E9qgh!pYRFsll zbpjazHyn`8$zh&`b;9c`wzaO)gtgLb#@4IK99QGDFFaqO~$ z&PsUbCEE2JdVNQ45fX%3#)FE7o}yD5oGy$pOAH?lAcp{f`-O7XA&gMV1MDPVc$0`> z@ORwmGqm;)z`lk2Op8yKczYZ^JK=@$(=YVhq zxv*zCJNz|ZoIwPGn}ZGj;|wAg935_3`bU6r4iU5nsI5UxXxbu$W1$T5Hzlh+g&-)2ygk$N#?`N~Otcy5H9^r-fE+YJ z`O^S~9&yH7#iP_5pbUKjwN^+GV(SDIm{->V;^Y^-#`a*8Blw(^v1#LuGjJ&MaXgnD zbNmHlz|H$3l0ghZw$X9;;5BVc#pHCH+ZmFU)PwdSu^7?&>(S`^A@psIwj)fDDWUgK z;22iiLhsYRgVHY(1w=OA2Of@}l>1TIwJKh?6{UEeb z4IJZGs=N#clG3Vp-KxhQ+@;5FwcbK$PA-&rY*cdo zyQ6mWUxS(p)os!ejyZx7h_RYFBZ+)S}Gr(Xo=n!C$Wt2qzaFnF&$-+ssZe5EW!l zUI(eG^oG~3qedm&Tv|HbS=7Ad>emni_QC*<;XRS_TqB81qlTQxI5i7APt)TdIKy*1 zQ+>$a5xgB5J~Vl{!Ff^^hR#af@SOD9Czr`&F{2T2I9eV248pl-W8Wu8o60>SQW}!X zo#KHfGWl6+)o$U33D^z1%YvM(jVT0jnBf7N7x?g!EHW)f!{2tf-qD|Br3d3+A5(nU z`5UgbfCNt&BQv(V;Sj}fpH{fb= zNKiab#6$ z-JI&syOTU$gGusTo9aelskmFq&3gnlLoO9Un55qtX*{&4o{Jm$lLPgT2THJGf|5|N zp$zPeD+lo)Vt{ z;Kyw|8J1EBqmKYf#mQVscPAmemea(o+bR+gjs;7E+|I|@AKo@N+P7Q9#tUKp%>P}~ zTd0ZmkN$Qvx41MOoe(oRQ(KIV7eHgdz>R^&oTswu&ZaryO;Bp7xK=)@B@mDH2Gfdu z3gv>K2BYu`E69!c7&gebRFVPYWV;~t($kU0wHz?yWzjuE2aCkhJfT$t6?o8@UpH(i z33x;PcLyZIG0ZKGx32>1e&Ofr!A-6}d1YXd9|3FxH@cM_)1tLSV}!q;=p!`r-jm3r zR7eRs4-~Cg>)60?h%o&Iz-2qgL2Av`YmLjDE73#s=TR~!O1bX)+@AP~emT)+FX)>C zRkB!yeF+&#s#zglN->bL{2~%Rzj1lO-DD{qpK+b^K=xjTKiz|>c+-aO=NC=7i#)Wh z)LIH`UWZ2&pQ>D#O+fbWKJ!3kjA=B1qczC#wWtJ;xK0Nqr<=B^Cx-OQOrP*2@~~3i z2+QSV@G>U-l8;{vS%2WPJW!7<1{Fb3*$JEjhqgLPgWS>jLc25Hyt*`5Mt?s+Pu9wV zX7lh%uE$O4XuSzfi1y@xUTyumsA;aIRCwOD55lE?7g8{CFV$f)=aFuHN8@7WD8Z`r zr7P9IrT2g6Z_WCZ490mDlc?n8NHb#8srUez6pK$RYdx^p_>EaKy}jIW+T<-e?dDwG zHen5hKSiYHAWk^;$L;zMN@T{Az$*k#GZ+nc-*ll7pT*JYVV93~NF5M-c(}y=eVz}A z_^Bp#ih2%XyHx_jhr9_3(IHJ>@VtAeJB%t#t z0!X3J;SI;J<;IpeQIIn)4@BUTM8_za8OcwVSNc9vzKqfJR~V4Kw82S`hG!kLYQar(7>X$PV^;bsg9qbaA5(1vr-_m= zBqDnikz#)SAxH`RSo&UXX3F;I@?QQruu;8Qo1G1Ev$I#5YPrsIVRjb339FkD{XUNK zQ3j_NJk5Y4q(8xcXw)w;_!NS`n`<`f=3af7Kwhr(D-6UmDYtI9FnpRY-k*&W{~S|P zef4J;hz`0au>DhTug|Lg7KWY7?pcuz%3s?mz1L{;0phe*oY9 z;(mWu@%?@#_qvrXru}FAasPflgL-*C>!uufiJZ tG?w%@N_3Y2>*x*xK~isn;wc6GQG?q_>OXBZ4PCXJ;_FuL{}XBZKLJJ-(Z2uy delta 5061 zcmcgwU2Gf25x%|Sk;lK2EK3$i$&uvvkFqS;vh2vREK5{uw{c>pv647!T$$3HB$^aS zFHdq@lcfV2saq7OYGuC_!REo68$as*Y&n=_H#xdvkgR+PJ?7-^$sE)fiR_IqKqVI2)^xe;G+Tkm!b*@Qx#wjJ=Glvq-)oM0g9E5I+d-=$=Hz zIV1@rb$Z$i)ER6H5q823@H3s zIRgv=AalJOj#j7VWFhn!SpfN&`aFcBmn(?~Nox}kf;d#81IZ0xuRaeUFs$%`6U%ZQ zWPT6hgS^j?2i=)lwN%MNLwz2=b<9Kf|D1=6+gbFQB`UbY+KP69SQ|hLo+DEu$4HKW zoLnOd++k^q3_#Ox%UD&gO{jQWg-S&JSKSG{z3p=p+|1g7^PQF~)rjCuF~U%Mc*eJ# zbPl6l1QCKWJl%N{5S#VVp#;~3gk@$p9=H>HD-Lf%vKh$;tI~~aV9TT4IQ5~13!h=wr?-V232TSc#0?INgIv51`h1{}& zJ1ogk(NokY)5xLHC?YD+Xwiow25^ghYAMhPKuawK4YjBPYPkts)lrH63wjPzy9^Hk z1pqbaDH&QTY~!*S4O$I`x2R`&YbN+;!l%vzL&I&qM&1qbk%G_g6U1&pXB=6q-&;>QB$d{P4^&t2r;5roD9{SRaRd^uAcYpBT<9stuyKMXIi2~HlJAjt6l;g>R&=de-BOR^0N%s+ERcz) zS9C`AY*{UQp24yGNRmLRmj&^i=r-3paKs1Ep|C&4&BYhzl9m~pic^Pfx3MX4v3uy; z+M4BaFzX{M`x$6R%*R~xuOpRx(BH%wf#ScLxm-GK32Il~KGrDfvQKVg0g!KGqHR}L z4DD)XvbZ-8Vv^Xmd$DxIDG5VahL8YaYj8oh2|UR6G9!)`IPU;QhQkcbRpR-9cNcg{ z4KDz^4}k|5Sd|L`?>_L<8lDcPkiCakJ#Dw#=*U4f^f4RTUc0tN?vT!J#rmX;)^gkwDQlsE38B{NYzMd zB1Kq-QI%74=u?S8Lczgc#ntgSb2|0lKMx;11Tl&dV!4CrRgky6BsLER0H-R(%8q+a zTZy!ZO!z{XgM*~(CRH#;Er{GsEqiP3q~pM~RXhUn+(Jd}Y%VuurT769&*Lad))*YSv)wy zlV-+9UmDM*v)uN8pFEv-B%KQ|`LbvkINOH?%jvhZsq&XCeS6mXg4_CRC;uN zQjjU;lr>5LB?(vNlrbfavWt0yk|6K*t(xUWP?o}1w|X4-hPbl-dxue+UjTw1#Odrs zlUG8B`QW2S*3*CkH^tn6qpU}~dmzGgzWx3IRstBroeRK!N-8QB^nwClsGY3AJz5A| zB@Ur#yaZ4gf>m;#3Iqc}8>5njNo3%sP+UvU$D3)a7fC_TSU>b8B(wFqteK^D`)KRQ!Hbrkp4vGr{vxLvuU z-FDApIqX@oQmFun&kYn>ZwH-+fj`S)@$eI@OT2q{Td4~rpFlE($T8q{NPmkWCMf4q-$9GD1Yol6+=F$2z zzvk6ccmi5GyhB=m^h7m{l3&)w|5EENz1 diff --git a/CHESS-AI/chessboard.py b/CHESS-AI/chessboard.py index c357376..17662ac 100644 --- a/CHESS-AI/chessboard.py +++ b/CHESS-AI/chessboard.py @@ -1,6 +1,7 @@ import struct import numpy as np import json +import copy class Board: @@ -393,11 +394,44 @@ def queenMovesGen(self, index): def makeMove(self, start, end, lookingForward=False): if lookingForward or 0b1 << end & self.legalMoves(start): - #check white side castle - #if 0b1 << start & self.bitboards['K']: - # if self.WKingCastle: + + if 0b1 << start & self.bitboards['k']: + if end == 62: + + #update rook position + self.bitboards[self.board[63]] = self.toggleBit(self.toggleBit(self.bitboards[self.board[63]], 63), 61) + self.board[61], self.board[63] = self.board[63], "." + + #update king position + self.bitboards[self.board[start]] = self.toggleBit(self.toggleBit(self.bitboards[self.board[start]], start), end) + self.board[end], self.board[start] = self.board[start], "." + # update the bitboards of white and black pieces + self.bitboards["white"] = self.bitboards['B'] | self.bitboards['N'] | self.bitboards[ + 'R'] | self.bitboards['Q'] | self.bitboards['P'] | self.bitboards["K"] + self.bitboards["black"] = self.bitboards['b'] | self.bitboards['n'] | self.bitboards[ + 'r'] | self.bitboards['q'] | self.bitboards['p'] | self.bitboards['k'] + + self.BKingCastle = False + self.BQueenCastle = False + return + + elif end == 58: + #update rook position + self.bitboards[self.board[56]] = self.toggleBit(self.toggleBit(self.bitboards[self.board[56]], 56), 59) + self.board[59], self.board[56] = self.board[56], "." + #update king position + self.bitboards[self.board[start]] = self.toggleBit(self.toggleBit(self.bitboards[self.board[start]], start), end) + self.board[end], self.board[start] = self.board[start], "." + # update the bitboards of white and black pieces + self.bitboards["white"] = self.bitboards['B'] | self.bitboards['N'] | self.bitboards[ + 'R'] | self.bitboards['Q'] | self.bitboards['P'] | self.bitboards["K"] + self.bitboards["black"] = self.bitboards['b'] | self.bitboards['n'] | self.bitboards[ + 'r'] | self.bitboards['q'] | self.bitboards['p'] | self.bitboards['k'] + + self.BKingCastle = False + self.BQueenCastle = False + return - if 0b1 << start & self.bitboards['K']: self.WKingCastle = False self.WQueenCastle = False @@ -508,11 +542,18 @@ def legalMoves(self, index): while tempBb > 0: end = self.bitboard2Index(tempBb) + prevBoard = copy.deepcopy(self.board) prevBoardStart, prevBoardEnd = self.board[index], self.board[end] #Storing initial board and piece bitboards - prevStartBb = self.bitboards[self.board[index]] - prevEndPiece = self.board[end] + prevStartBb = self.bitboards[self.board[index]] + prevEndPiece = self.board[end] # do this for rook + + + prevWhiteRookBb = self.bitboards["R"] + prevBlackRookBb = self.bitboards["r"] + prevWhiteBb = self.bitboards["white"] prevBlackBb = self.bitboards["black"] + prevBKCastle, prevBQCastle, prevWKCastle, prevWQCastle = self.BKingCastle, self.BQueenCastle, self.WKingCastle, self.WQueenCastle prevEnpassant = self.enpassant didEnpassant = 0 # 0 for no, 1 for white, -1 for black @@ -539,6 +580,9 @@ def legalMoves(self, index): self.board[index] = prevBoardStart # restoring board and piece bitboards to initial positions self.bitboards[self.board[index]] = prevStartBb + self.BKingCastle, self.BQueenCastle, self.WKingCastle, self.WQueenCastle = prevBKCastle, prevBQCastle, prevWKCastle, prevWQCastle + + if didEnpassant < 0: self.board[end] = '.' self.board[end + 8] = prevBoardEnd @@ -553,11 +597,37 @@ def legalMoves(self, index): else: self.board[end] = '.' self.bitboards[end] = 0 + + self.enpassant = prevEnpassant + self.bitboards["R"] = prevWhiteRookBb + self.bitboards["r"] = prevBlackRookBb self.bitboards["white"] = prevWhiteBb self.bitboards["black"] = prevBlackBb - self.enpassant = prevEnpassant + self.board = prevBoard tempBb = self.toggleBit(tempBb, end) return legalBb + + def castleMoves(self, index, isBlack): + + BKingCastleMask = 6917529027641081856 + BQueenCastleMask = 1008806316530991104 + BQueenCheckMask = 864691128455135232 + + castleBb = 0; + occBb = self.bitboards['white'] | self.bitboards['black'] + + if isBlack: + atkedSquares = self.attackedSquares('white') + if self.BKingCastle: + if (not (BKingCastleMask & occBb)) and not ((0b1 << index | BKingCastleMask) & atkedSquares): + castleBb |= (0b1 << (index + 2)) + if self.BQueenCastle: + if (not (BQueenCastleMask & occBb)) and not ((0b1 << index | BQueenCheckMask) & atkedSquares): + castleBb |= (0b1 << (index -2)) + + return castleBb + + # Returns a bitboard of the pseudovalid moves a piece could make at the given index. # wrapper function for all the move bitboard generators @@ -574,7 +644,7 @@ def pseudovalidMoves(self, index): elif temp == "r": return self.rookAttack(index, True) elif temp == "k": - return self.validKingMoves(index, True) + return self.validKingMoves(index, True) | self.castleMoves(index, True) elif temp == "P": return self.pawnMoves(index) elif temp == "N": @@ -714,6 +784,10 @@ def attackedSquares(self, color): attacked |= 0b1 << (index - 9) else: attacked |= 0b1 << (index - 7) | 0b1 << (index - 9) + elif 0b1 << index & self.bitboards['k'] : + attacked |= self.validKingMoves(index, True) + elif 0b1 << index & self.bitboards['K']: + attacked |= self.validKingMoves(index, False) else: attacked |= self.pseudovalidMoves(index) return attacked From 4bd2abcedf9c3c64fe09d38ff25af832d13a9b9f Mon Sep 17 00:00:00 2001 From: meteor Date: Wed, 3 May 2023 13:30:20 -0700 Subject: [PATCH 3/5] added white castling --- .../__pycache__/chessboard.cpython-39.pyc | Bin 16192 -> 17164 bytes CHESS-AI/chessboard.py | 49 +++++++++++++++++- 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/CHESS-AI/__pycache__/chessboard.cpython-39.pyc b/CHESS-AI/__pycache__/chessboard.cpython-39.pyc index 5b97919eaeff6fe181367f43e77b4951b7d312b0..53a28cc86d40653e40c59c209fa105f9947673f9 100644 GIT binary patch delta 1747 zcmZ`(UrbwN6#ve5+uM6v2G}wChnCW{nt)I?8Dt_(#`;C5pV+rADCiUV_O$x#fAEQI#NYvWy#RrJK~!3?inB|L&ahuCRA)ws`w^l?nVcA zl$%$k^z3*whUc1pdcjmpju;OpF)E0^nfQ6qUjBs3pCJBZ4L?OITx9L?C#x~$Pu1}M zN0VQ-;N@h>@atjxDw(l~g%;x1FXK)!L(z3?Xi4ryuVYV3X4$WQai7?%VGFx`0bO!H zwZw(HB~wR94|^%nL>|?X9}&F#al2%{_B2P_S7FmsQ!mtR)T?FHo>f&nGGkOz10-pp*s>B?j!3i21&=3N={=>JKwbo*XOQ4-`yii$mwI8`et%HCc{F&b>^;d>-m`ogZHW~@(dCEc#P z>2=>zYg6q``p*ODQLz|Q2Uh@uY8n-M`r0yh>)?D>6a8@X0fzkyjSRqWAHyI+nBa_m zYGQFJ|17R#uEQ4gX6H>yHbGG0W7)$1SM}CzN1JC#TE?bTAbgxgsD&~(4$PNQPJ$fGA#av%3R-zuA*@Y}y=Lk-g&-TTE z=r_ar@lt;Xp2Lm)9IWGZ|66bhM<2Q6X_6 zW<&0n57=MB7Y8G-giC{;kF0Rubq3a@-)0zRU?o~J@Zr|S8QizUkESm(e8^D1J3|q? gFw_}nt2eEaRu;b)%F{oU5Ei(XtX~$jm*0ec0qrA~j{pDw delta 1308 zcmZ`%U1(fY5I%G6&;BIYrg3BLZnDkYY#O^&+ijw@4cqN@{Q<3@nD`>pq{#^y8#j8g z2PJnR_=ije0NVyEAjX zGc(`ZbM_-x`yh6*sVOSx`6B$1diuiU*dIxGGlX}OZEYd_vjPta!V_32{7;KDobVGa#rLj)=3U|1j#JG+J+)Tu&NB_hVZl=M|j*5F?$SgmHm)+L-uAvL~ zrJFGfJ%TsfwrNXuc%YI=q1sQ$B}0GiN#E-TJgP~4o8Z=lB1`t$>m2bLjZl+@zT=5y z$!*gz0&YSiL}0D_YbP(1{SPxQ_9$mFalNoZg)Q9@kP<{cWh|L`5Es&&kitvpD47@;+^M8^o{mphs4hae*Ibu^%DNxH>TQxcC zZI_gw!nVGCpCnty?n!FLxy)+HKUKDa)Aw;h#68iy(Yk9uRHDlL5J0H-fKXyUWYajh zdvZ6>wbHE&M;PJ^Ed;MvV<#(Pt-Q2Tk!h?9}(Tmd& zBAB$Eq&4*kfr6@`WYttg)lz1a|C&%1je);*LX<=`>X(64ya7Ax)r{FitB9HaO7Ch-SQ*}k*H&cb?h zWV|voF;;%9@_JV4F3z~Xu&v7b6ie0i9!Ub6#+8-_8l(A%@u|w_>nB z4_%l#dMluyTWo-Se581_d7d-+H|IQCpW^Lecg8RC8T Date: Wed, 3 May 2023 13:36:48 -0700 Subject: [PATCH 4/5] fix White queen side castle bug --- CHESS-AI/chessboard.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHESS-AI/chessboard.py b/CHESS-AI/chessboard.py index dd19247..73b22e1 100644 --- a/CHESS-AI/chessboard.py +++ b/CHESS-AI/chessboard.py @@ -668,7 +668,7 @@ def castleMoves(self, index, isBlack): if self.WKingCastle: if (not (WKingCastleMask & occBb)) and not ((0b1 << index | WKingCastleMask) & atkedSquares): castleBb |= (0b1 << (index + 2)) - if self.BQueenCastle: + if self.WQueenCastle: if (not (WQueenCastleMask & occBb)) and not ((0b1 << index | WQueenCheckMask) & atkedSquares): castleBb |= (0b1 << (index -2)) From 41a09f8496340bcde15ceb60aabac305d12d39a4 Mon Sep 17 00:00:00 2001 From: meteor Date: Wed, 3 May 2023 13:42:04 -0700 Subject: [PATCH 5/5] fixed a bug --- .../__pycache__/chessboard.cpython-39.pyc | Bin 17164 -> 17201 bytes CHESS-AI/chessboard.py | 10 +++++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CHESS-AI/__pycache__/chessboard.cpython-39.pyc b/CHESS-AI/__pycache__/chessboard.cpython-39.pyc index 53a28cc86d40653e40c59c209fa105f9947673f9..a958a480ec9903be6ba039689c7d5973fef724e4 100644 GIT binary patch delta 1341 zcmbW1L2DC16vyXHvYTvUBgUr5Y?IB_lH_J6J+wk8>dguYdabnDk!mX`4m~bJ1Oo+y z$Xq=%9z?-|p=T{#yod-2Dt-X*QVX)B>AD@kA%Hm&kX7K6k&~oH#e;zI)Ee!9xPp3Uw^9L7-&MeG znx`3Igs1zITYVZ=XH_h{&uwbfR-`GLj3dD-*3tnmV$P^lbT6PrlP|~abtoSR$fCu` zMS^riq_ac?Gg-zaqw-NrH;Qzn7#*r6qS}wL@KU5Hn~bAq7zvhkWa^&a(ix=Mvp!Tg+g?l~=>2qlb?K{Sr|_zv%Rwn{B1&SHQvXw?!{L=;o{* z1AXgv<($i^dfGE;J|YEFFOYl{<||3We>3=7$Vea;minwtU`VRMfWLw@w`W E1#E6QSO5S3 delta 1290 zcmbtUOKVd>6rM9TubZ0UqiOC z2!Z(nX5~6|LR?WoA?RV#a5P?M9tgD3Z6Y(kLb zI3r60*=3Pkj2{f6vPsQu64~V<>@aJPRNbPpoXx4{AUoNe&Hf9ka}ic;+SrVEc}#n$ zI8x>zTZg~@tIJ*?JMS>R&kk38cKIGV|LE-G@o;Pf+fR)!E6`>IXjUO&7G`^`an+|& zu(|)DQ-q?dg)_;zewi_OJuJf=`7kWIEt6?nk$YiQz6w+DT)xHXzWfpT+id}?m?zrE z1ou#ril$K)Mrb<5IiiMm*=@TIuBnV3X&1*i!8eWZW>n2yJ$(Aqp>kVUK-FrLO^i`+ z#saGpHV&|Hk~hsJWzxEXZQj`1AU8_YDLk&4bN~oDVRl+z`E%yo)k{4|ps_ymkP9X< zlDtupQv7sOlFXF+%bKo-9c>qd=&2|eV(()Qm)8f_r}(3h?9)T+yQP;Gv^uTZRVUT$ zvGy8kqqdrXI?@f>k&W`llb_tJjn&nAw=dq^;tBi{JJv1Funi) diff --git a/CHESS-AI/chessboard.py b/CHESS-AI/chessboard.py index 73b22e1..25f61a7 100644 --- a/CHESS-AI/chessboard.py +++ b/CHESS-AI/chessboard.py @@ -395,8 +395,8 @@ def queenMovesGen(self, index): def makeMove(self, start, end, lookingForward=False): if lookingForward or 0b1 << end & self.legalMoves(start): - if 0b1 << start & self.bitboards['k']: - if end == 62: + if 0b1 << start & self.bitboards['k'] : + if end == 62 and self.BKingCastle: #update rook position self.bitboards[self.board[63]] = self.toggleBit(self.toggleBit(self.bitboards[self.board[63]], 63), 61) @@ -415,7 +415,7 @@ def makeMove(self, start, end, lookingForward=False): self.BQueenCastle = False return - elif end == 58: + elif end == 58 and self.BQueenCastle: #update rook position self.bitboards[self.board[56]] = self.toggleBit(self.toggleBit(self.bitboards[self.board[56]], 56), 59) self.board[59], self.board[56] = self.board[56], "." @@ -433,7 +433,7 @@ def makeMove(self, start, end, lookingForward=False): return elif 0b1 << start & self.bitboards['K']: - if end == 6: + if end == 6 and self.WKingCastle: #update rook position self.bitboards[self.board[7]] = self.toggleBit(self.toggleBit(self.bitboards[self.board[7]], 7), 5) self.board[5], self.board[7] = self.board[7], "." @@ -450,7 +450,7 @@ def makeMove(self, start, end, lookingForward=False): self.WKingCastle = False self.WQueenCastle = False return - elif end == 2: + elif end == 2 and self.WQueenCastle: #update rook position self.bitboards[self.board[0]] = self.toggleBit(self.toggleBit(self.bitboards[self.board[0]], 0), 3) self.board[3], self.board[0] = self.board[0], "."