From 93c9cd7c2aa6f438f7fe1129fe551c4f3994c7b2 Mon Sep 17 00:00:00 2001 From: MikeTheWatchGuy Date: Fri, 12 Oct 2018 16:09:11 -0400 Subject: [PATCH] New chess pieces --- Chess/Demo_Chess_Board.py | 48 +++++++++++++++----------------------- Chess/nbishopb.png | Bin 0 -> 2565 bytes Chess/nbishopw.png | Bin 0 -> 2629 bytes Chess/nkingb.png | Bin 0 -> 2654 bytes Chess/nkingw.png | Bin 0 -> 2606 bytes Chess/nknightb.png | Bin 0 -> 2693 bytes Chess/nknightw.png | Bin 0 -> 2807 bytes Chess/npawnb.png | Bin 0 -> 2648 bytes Chess/npawnw.png | Bin 0 -> 2704 bytes Chess/nqueenb.png | Bin 0 -> 2845 bytes Chess/nqueenw.png | Bin 0 -> 2929 bytes Chess/nrookb.png | Bin 0 -> 2666 bytes Chess/nrookw.png | Bin 0 -> 2789 bytes 13 files changed, 19 insertions(+), 29 deletions(-) create mode 100644 Chess/nbishopb.png create mode 100644 Chess/nbishopw.png create mode 100644 Chess/nkingb.png create mode 100644 Chess/nkingw.png create mode 100644 Chess/nknightb.png create mode 100644 Chess/nknightw.png create mode 100644 Chess/npawnb.png create mode 100644 Chess/npawnw.png create mode 100644 Chess/nqueenb.png create mode 100644 Chess/nqueenw.png create mode 100644 Chess/nrookb.png create mode 100644 Chess/nrookw.png diff --git a/Chess/Demo_Chess_Board.py b/Chess/Demo_Chess_Board.py index 06f453d0..279e0ce1 100644 --- a/Chess/Demo_Chess_Board.py +++ b/Chess/Demo_Chess_Board.py @@ -33,18 +33,18 @@ initial_board = [[ROOKB, KNIGHTB, BISHOPB, KINGB, QUEENB, BISHOPB, KNIGHTB, ROO [ROOKW, KNIGHTW, BISHOPW, KINGW, QUEENW, BISHOPW, KNIGHTW, ROOKW]] blank = os.path.join(CHESS_PATH, 'blank.png') -bishopB = os.path.join(CHESS_PATH, 'bishopb.png') -bishopW = os.path.join(CHESS_PATH, 'bishopw.png') -pawnB = os.path.join(CHESS_PATH, 'pawnb.png') -pawnW = os.path.join(CHESS_PATH, 'pawnw.png') -knightB = os.path.join(CHESS_PATH, 'knightb.png') -knightW = os.path.join(CHESS_PATH, 'knightw.png') -rookB = os.path.join(CHESS_PATH, 'rookb.png') -rookW = os.path.join(CHESS_PATH, 'rookw.png') -queenB = os.path.join(CHESS_PATH, 'queenB.png') -queenW = os.path.join(CHESS_PATH, 'queenW.png') -kingB = os.path.join(CHESS_PATH, 'kingb.png') -kingW = os.path.join(CHESS_PATH, 'kingw.png') +bishopB = os.path.join(CHESS_PATH, 'nbishopb.png') +bishopW = os.path.join(CHESS_PATH, 'nbishopw.png') +pawnB = os.path.join(CHESS_PATH, 'npawnb.png') +pawnW = os.path.join(CHESS_PATH, 'npawnw.png') +knightB = os.path.join(CHESS_PATH, 'nknightb.png') +knightW = os.path.join(CHESS_PATH, 'nknightw.png') +rookB = os.path.join(CHESS_PATH, 'nrookb.png') +rookW = os.path.join(CHESS_PATH, 'nrookw.png') +queenB = os.path.join(CHESS_PATH, 'nqueenB.png') +queenW = os.path.join(CHESS_PATH, 'nqueenW.png') +kingB = os.path.join(CHESS_PATH, 'nkingb.png') +kingW = os.path.join(CHESS_PATH, 'nkingw.png') images = {BISHOPB: bishopB, BISHOPW: bishopW, PAWNB: pawnB, PAWNW: pawnW, KNIGHTB: knightB, KNIGHTW: knightW, ROOKB: rookB, ROOKW: rookW, KINGB: kingB, KINGW: kingW, QUEENB: queenB, QUEENW: queenW, BLANK: blank} @@ -121,10 +121,7 @@ def PlayGame(): sg.Column(board_controls)], [sg.Text('Click anywhere on board for next move', font='_ 14')]] - window = sg.Window('Chess', - default_button_element_size=(12,1), - auto_size_buttons=False, - icon='kingb.ico').Layout(layout) + window = sg.Window('Chess', default_button_element_size=(12,1), auto_size_buttons=False, icon='kingb.ico').Layout(layout) # ---===--- Loop taking in user input --- # i = 0 @@ -147,22 +144,15 @@ def PlayGame(): window.FindElement('_movelist_').Update(value='{} {}\n'.format(i+1, str(move)), append=True) move_from = move.from_square # parse the move-from and move-to squares move_to = move.to_square - row = move_from // 8 - col = move_from % 8 + row, col = move_from // 8, move_from % 8 piece = board[row][col] # get the move-from piece button = window.FindElement(key=(row,col)) - button.Update(button_color = ('white', 'red')) - window.Refresh() - time.sleep(.05) - button.Update(button_color = ('white', 'white')) - window.Refresh() - time.sleep(.05) - button.Update(button_color = ('white', 'red')) - window.Refresh() - time.sleep(.05) + for x in range(3): + button.Update(button_color = ('white' , 'red' if x % 2 else 'white')) + window.Refresh() + time.sleep(.05) board[row][col] = BLANK # place blank where piece was - row = move_to // 8 # compute move-to square - col = move_to % 8 + row, col = move_to // 8, move_to % 8 # compute move-to square board[row][col] = piece # place piece in the move-to square redraw_board(window, board) i += 1 diff --git a/Chess/nbishopb.png b/Chess/nbishopb.png new file mode 100644 index 0000000000000000000000000000000000000000..c52b6779bc8b7b908493d8d808f238a8393c28d6 GIT binary patch literal 2565 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 literal 0 HcmV?d00001 diff --git a/Chess/nkingw.png b/Chess/nkingw.png new file mode 100644 index 0000000000000000000000000000000000000000..6662f3233af06567d810056f514a826a1859eaca GIT binary patch literal 2606 zcmd_q`8QPm9|!PJQjMi@S`Rhp{w97$*C^O=E<}R`#+qn6V9tF_@VK zgJBq3b_Us#CF|GHVEEWlzIXaJzK{3w^?Kd=KIi^$?>X-qV{E7+488ycfk46#T}>D; zRe5#nFmLCQ++$$y`M`9ZfT(PVMc{_tS=~S#1S&}o+_yaf0v!e!L*ZJ$zLJuXmbR9* zwze)r7orD&=;`T0^`QU*1E`^aA;8GU$e0HPgPFih;6O}GP0dW7J$q&bFgLRRAS@6F zgr$|GrIi&DiF|JT+!|oRV`pb)4{+dda&~lbc5-&%admZdb8~ZdclYpc_we-a^z!ub z^78ifMxjtI0O%KJG};G%@xfp)zP`RM0seme{{8`gz<|KOSAl?_z@VU@;Nakp(2&s3 z(6F$u@bK`r5fRa`(XsDh1~$RQANv$Jz^b8@qD zJ_5_!k_VxDm_4R%2`}*~3|3H8L0MF3S;PCL!@W}A+2w-?*bY$e)=(n+NV`JZe zHTIon954Z7Vq$V~YHD)o$JCGMAJfy*GqW?Zyv)we&&|)z{}-^hxVW^qw6wImvb@5} z3WxKP!{Mv~)_|=2ZM?a*4&d?@&&I~a=Emmc<^~sN|MF~YZSiV*duMxRX9pO6=ic7# z-rgSXP^7n50p|pSffe3IiRT?-!&NTi8Ze68Lj2VheSqh*dU@pi)a z*`ggmC|g%AjG~t#M(U2@EyY{**E01%pd(QbO?9}gesgM|Kg?0Ao{2Yb?u1_NbQ`_a zUphvIF1~GZiSqUTrZgjXUioqr0@21 z2)<*xQSg`%*7y4hGkpXCA@~3^`RkAWiAg{9FSOyl^;&lOVwzF|^K@RSjv6ACc1{g7 zs4=DVHkmu#ddQP4K)$)HOan>htN!6vFU?5td1xLA!nKZbcU~v)RY_eHC##2c%w!l8 z-A(cej}Eq=Ibil?;btN!tJ3Z-v1mU!l3s+5JN=HI4=gw5a#;_9Z8nl{lXrM8zy~%C z5IJ>4AA5WEN)o57^vZ!I>+YueiBsogp{%!p7Oql{`L4B=6^!4xS7Liy-R{4dVd4LL-$6HvHdOcxVV>U{b&4OG(|+DBmNJ&5 zSlMq|c^3iApgb$fHI(!JkshbscvF^(+$c768ooFAl0Uq`reJc6gkIg05>d)Vh-s(5Y{4i+)Q8j#SBjPH~T`)Bkjwt z!VxicVrr6?vm!4!Q|<(L_^v$Uw&nyb!4=NB`5`bD#${Cf9sp1JHkC4N*A6o6$bj1V=B*WI87K*m!qnjhaY32%6G0CNZXWnblDB$e`oTE@@>H5hpLLv{URIYqj}PLz zq?vLpBD{vGs*iv8zzSnVN`>Tj-uyQ8>KCc0nmSs?sQ0l|mFb)iJ9lRD4p9 z-y8iLiI94A_CdZh_w;Xes(^-Y{10^QV=38l#q6j@vn-;?&ov-CL`T!NTO z*zc11h4%=R&o&KOQh0tO0r6>cX_s|FdE_AeXNh=GbDOx(NrP}jqnr1tPY9ir(cj)f z3a5i1gWL^u|ND0W$gGZ%;dA@DxJO54%~7~+JF=YoYhgQ+IjCt_rybf)^q;F5xlKAD zU|-Iz!;Bk?{)84f5luoz_ARdO)r}2Kf9IgR{XA~DPZSQ_!sei9!n?t1u&y0 z!XRgsf5u1(?|eg4TF}92aluw_6$7`?-x`yXpJKmrSg5E46ZDLlqc0n;j*Mhp`w)M4j zZSOpGeDE7*RY>6Q(J@QpOP|^cIswf}Qau6&GOIlbkySr!7IJOs>!OmcUmV~{O6W|w ziAF5iy1(^e9}oPtK@crNP3jYy G@c#j_KGgC6 literal 0 HcmV?d00001 diff --git a/Chess/nknightb.png b/Chess/nknightb.png new file mode 100644 index 0000000000000000000000000000000000000000..e28cbb170a8f8e86918ff7a52553925c02dd3a8c GIT binary patch literal 2693 zcmd^=_di>U8^`0K!>AZBf>bp|h!qjDL?k2;5wW7x2!a@ONp-lWJ)$^+j=L>GYthQx8Y8xGX7r1b(gkcx2ja0Y?;i)FWir9mJ`5RKwP0P=nE`xN#mfEB=s zV6c*sl8UklL`6jvqN=K@rVdC=T|-?Rs-X#mLNztDw4j<=K-bcOY5!L+*#7-GK<(E7 z5Vr#dbj78sd+;C}4hRm{)6>`27u!JJ(7@2Zz|hd}zYSq%fG{*fAdHNR#5OiU8Y7L3 zktRqZ@rFbinIMrSCZ;B)NK;c&Gc$9b%*@TrEKuSJZ06=D3!uzVD3m4I(h`mSuZgFX z6~+pK#$YhkHh^qxtgUUVZES2XfNkw;?Ck999qb((91b};I668yIbj{Kj!syBLs+bM zI^zK0T<|zN9!GF>!4vQVSG+3#5${HHbt4mrL{}o&jYuMr$biTs3Xx19lPMI6hdYHz z_MlLx9#jgI;^9f9(mbd%swdsklScET(`a6vG&-=-Xmpylx3`xMo$l-7*! z@bM4u_hm2`NBn`tILrt*a`9KQ8CfcF)=a6Vq;AwVbiS#%rMacGxwW;m+<3=R$s4-H=)zC3byC9ki*1sYR$! zy*mgby+Oh|`w-pNE29&X2`Xt2BU(Fzo~gb^%Da6DRT^WUjSb8rQxxkw>eS&Rcb8Ds z0~PaQQuFzP=S}uNz{wH>n9&z3R`IXai)m@T633R$t3srur4^-1ZQR|;U+K3sPCH#I zueV%Fy0)~?F!o>^&Q;vL#a=aoI8f*IlHdvpCsu<$KW$VHZN`&ydad7IRkkdUfO}Xt z5zLH;I@dyAjj!-&!8J=k4A#JJdgG=B>0R+}{j8~;5po?+DupJUA8=XfTVX;q zzt95x+o$EoqhmBL+vBrffv&20Yh=1&4R|&)(qUI?7x(*3|2|g`n62|wStCskg%hG- zne^9*RS)dSukoA8!+D!I`)T zBRF+4*t*82j<08m{&Wx$QOKEDgo;lMZ#%T5qMsYF zo=pmPQO`h?E%BNziRulz*(rwGY)gZW@EZF}w7)D8y0B)x$kVMldr0}FbYdu;2@0ECy!kIEGEc65BAztfm8+W$!8&+n;w zIWNq?u9UilkaVKEdqf!xi%u}dk#T*&bJnW;#)T*IzR&8D-whQj{7l}?{g&ODc+&Ep za#Z$gNS;|ISBqdZR#(LT_K`9DvTr&#GiB_kYpBIc`MtnJ+bwssH%`fqKX0C~{qhOT zw^x{ABBBUWPlPYK9+?K;uJf3q{!Dy!_wrc8-q<$C3vWxvWmm04lL*b%a!U_CF7hs= zHrS`I-(08d5ba+p^hHT7e#y1jvdRpU$bG&%?&it2Pu(eQmhYU2r*4#mQvJ26=zpwg zSF1f6zY_c7Lc_<8`(pxqH9tI0+8TjHzP;~9@D`|U*mkhsbED6CH`hP>D0Pv4z^r~b zuFW~ITJZf-$sg>(x(k!k^o|=e|*Ai*C002@qGUZN5(B zMl98h{mHW(y3@8{ke@+QdTXcssgC8J$VafPPO9YaH$IV`Og(#Mrs?#Zb8q%}IPZ}X ze?Iob=2-dmRBwf_dCqu(@pD}WT%uFz>jfddc6cRc_VlaFrk+c7=fa1Y0*48`&%bQ5 zUUi)MWNnrD RKY_mih(w^`dvL6be*sZ^7MB13 literal 0 HcmV?d00001 diff --git a/Chess/nknightw.png b/Chess/nknightw.png new file mode 100644 index 0000000000000000000000000000000000000000..34da37f91287e566b76a6e25e873c6e06e379874 GIT binary patch literal 2807 zcmd^=i8ov88pdO&p&V_MR#j^#SLvZzr!^eMtP(>gN@!@!L5!sYM^SBKp65AK3<(nR z)RKr<%(JQ*E9lX12&%n1_usg`{k+e+_w%l`*V^CuzO|!Gq58j_7d{UHfqsL4bWvm4P5fXWR*q;M|*g&R67J5L=$H#YFgo(7Y zw4A)0f`Y>R`}ZF_e5kCVtfr=>uA#1>siCc{t*fW2_vn$nzCIYNZ(v|xXk=()WMm8g zHHJc=CMG7P0A`QP%*-sFm_K>)#L^Owr4`J|3I>B&!)$D9p2Fd_w#>4%v$MCicW|(G zaCC5Va&&TXa&d8XadB~Vb44H!?(PT=4|flw2h!66>E(e$B0T}TkX~M1-rn9mzCOOb zzJ7jw{s1ri0|Nttf`U*eR8VkGaBy%4Kqx9WG&nRg^lyN$uvZb`;Su2xkrA(7M@GGg zdh_HE@B;HK<-8Mdqp zi^Y~>v6WbCMR|ESw!EUeqO!aa00#)53Wvwx@OXSR4qsi3uc@i2t*)*G9H5#&tf?i` z))EK=Vl9CPIFVRaN316j>jAH?YiOvi2YP*dLqkJjeM2MQjSY=Wjm?cs&42?mF|D<^ zrM0!S9T1a_4;>!>IzN2u1o+t5)!EtA)k*5?B6W3hJ68@9!Vz9~c-I1Q;3^8X6oL9vY?&Q%9)O(UFnS(b2Jy(Xr97@v-so z@d5uK*iBZPB)9G}`vg_6}1!yWe)defzezw@0Ucr_<^C2m1$1 z9sK+6A@e#sJUU_=F&GS>F^-NIjFXe&lamu*^H*d(e*v5mkiQw!{MY|CAoC+mDPT#s zeZbbhn(&dC#nS6t?gWHF{(3Nfb8i>_Kzl!DkdM8am%qH1v%lCM^7rKLIm+f4f`YrOekiof4-<&U?G3%(1kDA{L-YwC1H{}-REA8C)|ApR}y_C5H3bXx;c9a z=0jo>tN*c9^JD!vnJGq(B+}=-w|MWz=J~V6I2N=Yo`dg66#ZbVon)w@1XH!q6-rGL z4q>xD28x?EAY!N>OsmeqsrfY>E*aSjR#RnT+ryjk!7F!73a7@GDl}%2IfWvN#LpqP zk55>#RL{-)wU_FO+?uAr90m2*Y|!wWQpvHFB>SG#aLzC~Bh|JiqWXsRCF9GIQYoX6 zcN^Mfteq=y<%9C?Wa{Fd!(4@s>NhsG3D_Lb3#Ak+)kGTUlvW25kJSS$F0a< zjVYe_q9HahNW7ouc?n_Y6tl~Xi zvd9b70GzYyTUaP6wQS!lDfmdk%S1Zxjj~A9pAEPS$e`{7?=|0GclzR&W*P)E2O*SA zjDp^<|6aB9jMw}j?s`0r9eYNmWm9E9n-EP?e`c#>Ja2gH(y9+7RxCeOI31gfTn}H5 zDU*_{-1v57PF^DH%!rw`S85gCc2!BJBYFl%kxKiVo0s)2 zsu)er&O6pE?B=x?iVI59NoQAOvqW;tO76oRJ5Jhsh9?(ZY5Pwn+by(6inLX3*rxKI zt{)M|bU{}sT_{<~gmq9cX1jq+L`hj0-Gf(&yK=|`C|&!NK5x~lZQmloTy{Y z)=>6(C|S?8j0b0a+{0O)TE+)-1WymO?bc$R`f#mE->pirA{*SWDSvhvzhiySOKhD! z!K|T;ok(q|z5{P+)QXLk$}L3i%G^%B^XI|u3)q=Tr(?J1irQv{z(MJwO)8Qmyp+U?qt}=g{=6FR_e65 zewE=1C487bFPsqoO_y!`WwWYvFhaGh&pB0nN_&sWe*BLK<=)i~^cyQ{q1p3JFT9N7 z&Mh#`rRnQ!sLNK~}9l;G{3-IQA68C81eXXf7O z6Ve5hO=xl%zQz0iyY}{4?K0EG02=Qj^N;R@?RNqe?}%ipIXwR>U@zR4qYlkw$6>C6?H04N_69s4aFyOHo6ls;VM( zsl9?&Yw75!3(7EUr?=IqF87%GXWaMsd_Ldje9!B3emKwboLnr%K~z{)7y^NaI-*fH zP>}}~;y>spYg&QAmw0%+@ip{1h(%Kv=w zq^_>+KcT0ur?0E0ua7{0&_@^`5C#T@hDL@)2ty+SLnFXJ7@Gi@n3w_qOw7!G1;xzV z)Es~`w?G2Sk*AQzQf+++xbGN0X_3k}ZYinCu8;iwiXR+Ar?Hz1(XGce8M`w3ecTaa$Pft&8 zcTaCmPhW3ue_tP`um3)WbDuLXG%z$gI6N{mJTfvmHZuBP?7{d0?!-8EVq#*FJ2^Eu z#hcsyu&}(mw6d}cKK@~@qYU^@AY>fI{pbHT5cj=b)WDG(jzxPX zfNNp&zD?Md%`ew5pvU5J8qB${LS$ z-YviAE0GB2QrnajHYhTS(9TaE}Q(X^!yzBpIc)|Vt=}YXv z0XiEo_6f=d7D#p|zx}vJdV}A;+H&_3E?Cqwrk7et6);4$j$Gm182B;Jy%!vLZYc8C zz%9D-!9wbK!3OLn`^lc1dC&eQsuNr%ccfjQ*iPm9bXDBn(eJ9)JGGCMTS$*zZkSRP z3SK}@boKZ@*1{?Vb7jagn+X`)NEstPLX-znWyf@+Kp7Y{c z9TB0e9M`g93%xyqW%pf+3u86h-==4lj&d5-AQ6!noEmz=aj?m}{f z!o6LonX4lL=Glruax-4<`P^uzD;@9(nbgF6x6jqcr<~}%8#YRl-{~h*+9IwrwrCmM z%OA({yTfV^B_iV9EU`j-TA@0}-PTMiTAc`x?Z8(Pldq@$w0LB)q^FmBOj{oGZf{q4bclt_v5_alzH^50L^4mEr_pMA7z>G>{VD^{TNDZ)|a;d%;xXTg3E zdFPq*nl#p09aUbMuks z2MnR8A)|5Sq?)bjYpIHX#WYU;A8Y+evoo@>qSg4r4>i6{DVaq~CH&&?Zs+aS*8U)e zg0;ALQ)UG(VE+BFi*NSDan4WFXID9UVRJ>NvXk#_a4_0t!me`2=DE6E72eGF)2FX2 z6qg(*0c12iQ65x6Nk;nb~{>C?HX}q_r z)ehMuh*acp3%$m%w4@a672`{BJE&wgx4jQ~dl#450>tO2@RBFLd8p=X)_7&j=tt;i zy!rF)g$C9x)-(Ch%dT-zrJD_x7eWKtUI~-+!;sGT`3nqTbxog=O%F@c?i9>?GBr2j zH?pZP&mE6yrtFMOgfW*%O5$G#$h;+-6#LA*nQ`LT?Yi_)RusOLVp(Zrs9BMC*0O{0 zqeU|`t)yp?I8Syy5{LB>PF5P)ZMZZ zIrm8UaF25iJ~ei_V#mz{+$W@9Ni}WOf z8LU?x#;aYO`MA+{KMxhUc}Q8j^sg7|gQcS{U-13$Nw$7q S(DFUF;31B77*wkbk@jB?cq>Z) literal 0 HcmV?d00001 diff --git a/Chess/npawnw.png b/Chess/npawnw.png new file mode 100644 index 0000000000000000000000000000000000000000..a05034abb272f6d6bed1547993bccc6d5592fcd6 GIT binary patch literal 2704 zcmd_ri$Bx*9|!OWxm28@bmE*O5^BF(x(PMMbwP9BvCh zAP~r3g+wClkaqTV_6`mXw;XOe-gZPeqEIMjfQz#W8iGX| z%iG7t2kV3N#bW)iety1w{(k-e0XQ7)!NUi^_#iwU9~=@K5*iW;2n!7h3wsp)=uvoh zL`1~n$B!c;BMHw4PoF)Fii(boiHeSiiHVJg{X6FQ^XGAZ__+9l_;_MGk(lr*>2+dK za$<5)N@{ZIo7A-Qv^N<*-ehE^XJ(~mkTNn!BvN)JDVvl<&dSQk&LZbz<&v{=va^B8 zC6n{Wx%qi{`MG&O7v$v^6ckVj-WF0Ql(&>ZN?{SDu(+tGxVWgKsJH}BTtY1=p;Aj| zCA3m1l}4kL(Mrq8O3UeG<)vliWr9hk(;4&%27^&aXD}-ml?(=xQOT^VWHOm7W)+K7 z^{$%r4wx(!FsrMpYk}0%)BuPK3>T21wb?mx2Hk;j0U*FJB-`LpDSl<9t6Og8+ z=H{lBrsftvQ%h@0>w6&Y+uGaO+5x|c!{Kzab2@IZ!3`vMpk7#JKF6l8F4XlQ77aA#LE&o_v{voisy1KT$wze*?v9Yy?QC!F?gH7}bCzv?gd1-}W?*naU9 zy2_eu<*Q3kkn|=-s=tf3tUb|#M=SBvx_r6+&wuGIfvcG=Itq-vm=kWvbaB`6R z{4#q9FItb780;TdUc=wHM}Rl|yz)|3SW7%HY$7=_fLch+Eza%AvyT<^-menAzg^LK zb&%_g-Z|B5Gj-Wir(iMpA`x&U&M06{e&C77ezgR9uCmR%{H=4xURznlsA|KB6(*fB8q_f!()}9K-Q%85 zN}`5Qoa2psgv8v*N~|8sB<9idRoX~n*m+6i3uagSe3U9$Fo7(E%neB=IBN9xg+KS- zX1_B#l_a}badojz_6z}9Ed-qUzO7AEq|gogZO(js+@;3#;|~hIxZBI?%ilUQ-Su8anCA2tJx@<}v?= zc;yALGo5a>=09Cuj%pOr@rM5_N7ne)6HP5r4<0$5w?|*cq+A}<_phxo&dlN{_lN=4 zJKoB^FKhScmh_>W6$6WW<*m~lP%hJubC~@17n1d|$}kaWpV5=k5-;|<2$WMu^-O`pSlgvFR7?r#(5ut=N2~9PCKQ*g|2uP1VOQhI%7p&d8I`P^r4Smijf|33kAA{Eo|MC6^Fliz z{@8*W@PaRhv(UAw3u!Q`#&P=OKA~t`QG}E*r>Dc~wzujZZzFU=yL)H9>wSqsI}nCO zhh20qiCUW1llBG4nvv{-DXsV=xe1lsy6aoIJmy2~hb%g*-TX|WrO+!6?D<0PKz?Lt z>h@DM!J}MT%8NjQwG_NG|A9aFO3v3^?xfDpuDCwq3SoOCJSE@c{9(U2ZgBT?SZL0= z?QXK`i%%g%JqvsShQtm}s1fef2s)r`OYxfcR&Y}+srkmL8|s!ZIFoa9>C+tS#j)aP z$6QD;Q9QWhknE9X=@xf{Pl}wv3*A)iy@)R2dBSuvIUH_5pabmtFiYfib@tg5lh}kh zdBJaenMQ^uF{{ga@x$ZTB2A1mW*uo-^x){U5_b5#^pVM__mLfF#j6)=t&95l`zrsa zx^_n&YabNdk8*tHo4^eWH&M@ohG-n=6LPuw+u_qCTCQDRUR$NqwDpg9`n0a|r(4Oq z-#z80P9D6z8qImqusAZKnwZYBdON}kz}@OPLq&m)YB^V5S2}?}-Ah!syVNJqn=1#7 unBG8^(j0VD?;CPu*CWos*}D6l)C*N^7>rqEa)Eyc5Xjuv%7|v@68Rq`s}J-5 literal 0 HcmV?d00001 diff --git a/Chess/nqueenb.png b/Chess/nqueenb.png new file mode 100644 index 0000000000000000000000000000000000000000..54231369cc5637b2be9a876574ca0abb9044c316 GIT binary patch literal 2845 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