a -†c`1ã@sJddlZddlmZmZmZmZmZmZmZddl m Z Gdd„dƒZ dS)éNé)ÚBLACKÚROWSÚREDÚ SQUARE_SIZEÚCOLSÚWHITEÚBROWN)ÚPiecec@sleZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z gfdd„Z gfdd„Z dS)ÚBoardcCs*g|_d|_|_d|_|_| ¡dS)Né r)ÚboardÚred_leftÚ white_leftÚ red_kingsÚ white_kingsÚ create_board©Úself©rú3C:\Users\User\Desktop\JT\Dambrete\checkers\board.pyÚ__init__s  zBoard.__init__c CsR| t¡ttƒD]:}t|dtdƒD]$}tj |t|t |t t t f¡q&qdS)Né) ÚfillrÚrangerrÚpygameÚdrawÚrectr r)rÚwinÚrowÚcolrrrÚ draw_squares s  zBoard.draw_squarescCsŽ|j|||j|j|j|j|j|j<|j||<| ||¡|tdksZ|dkrŠ| ¡|jtkr||jd7_n|j d7_ dS)Nrr) r rr ÚmoverZ make_kingÚcolorrrr)rÚpiecerr rrrr"s:  z Board.movecCs|j||S)N)r ©rrr rrrÚ get_pieceszBoard.get_piececCs¦ttƒD]˜}|j g¡ttƒD]~}|d|ddkrŽ|dkrZ|j| t||tƒ¡qž|dkr||j| t||tƒ¡qž|j| d¡q |j| d¡q qdS)Nrréér)rrr Úappendrr rrr%rrrr s   zBoard.create_boardcCsJ| |¡ttƒD]2}ttƒD]$}|j||}|dkr| |¡qqdS)Nr)r!rrrr r)rrrr r$rrrr.s    z Board.drawcCsP|D]F}d|j|j|j<|dkr|jtkr<|jd8_q|jd8_qdS)Nrr)r rr r#rrr)rÚpiecesr$rrrÚremove6s  z Board.removecCs |jdkrdS|jdkrdSdS)Nrrr)rrrrrrÚwinner?s   z Board.winnerc Csâi}|jd}|jd}|j}|jtks.|jr~| | |dt|ddƒd|j|¡¡| | |dt|ddƒd|j|¡¡|jt ksŽ|jrÞ| | |dt |dt ƒd|j|¡¡| | |dt |dt ƒd|j|¡¡|S)Nrr'éÿÿÿÿ) r rr#rZkingÚupdateÚ_traverse_leftÚmaxÚ_traverse_rightrÚminr)rr$ÚmovesÚleftÚrightrrrrÚget_valid_movesGs  ((((zBoard.get_valid_movesc Csi}g}t|||ƒD]ô} |dkr&q |j| |} | dkrè|rL|sLq n"|rb|||| |f<n ||| |f<|rà|dkrŠt| ddƒ} nt| dtƒ} | |j| || |||d|d¡| |j| || |||d|d¡q n| j|krúq n| g}|d8}q|S©Nrr-r'r)Úskipped) rr r0r2rr.r/r1r#) rÚstartÚstopÚstepr#r4r8r3ÚlastÚrÚcurrentrrrrr/Vs0 $$  zBoard._traverse_leftc Csi}g}t|||ƒD]ô} |tkr&q |j| |} | dkrè|rL|sLq n"|rb|||| |f<n ||| |f<|rà|dkrŠt| ddƒ} nt| dtƒ} | |j| || |||d|d¡| |j| || |||d|d¡q n| j |krúq n| g}|d7}q|Sr7) rrr r0r2rr.r/r1r#) rr9r:r;r#r5r8r3r<r=r>rrrrr1ws0 $$  zBoard._traverse_rightN)Ú__name__Ú __module__Ú __qualname__rr!r"r&rrr+r,r6r/r1rrrrr s   !r ) rÚ constantsrrrrrrr r$r r rrrrÚs$