From 5c9d3fd678061a0f6aedd779931a04458b089c98 Mon Sep 17 00:00:00 2001 From: Agata Halik Date: Thu, 15 Jun 2023 16:22:32 +0200 Subject: [PATCH] Szach --- __pycache__/board.cpython-310.pyc | Bin 1451 -> 1168 bytes __pycache__/game.cpython-310.pyc | Bin 2198 -> 2208 bytes __pycache__/king.cpython-310.pyc | Bin 948 -> 968 bytes __pycache__/move.cpython-310.pyc | Bin 4058 -> 5331 bytes __pycache__/piece.cpython-310.pyc | Bin 804 -> 1020 bytes board.py | 7 ++- game.py | 1 + king.py | 1 + main.py | 14 +++-- move.py | 100 +++++++++++++++++++++++------- piece.py | 9 ++- 11 files changed, 103 insertions(+), 29 deletions(-) diff --git a/__pycache__/board.cpython-310.pyc b/__pycache__/board.cpython-310.pyc index 79613c87ec09024c1f7ca3c1f6f30da89bad93e7..decdaa9e345e565f321336b9aeebf2b0c3106c39 100644 GIT binary patch delta 282 zcmZ3@J%N)ipO=@50SH(myHga{H}cJ7;%5SK*?`y?h>NQjCU0X>4`)qbEn!Y!OJQ$j zYG$rs$YM!hm1Ia^wP7e>O5sT10LpQuFv8_HfN~s2a%`A#DGb33np~6lSfuK2v1DiF zr5Eu4t$PWw`xa|qX=-YoCTkQ&L1KAcd{KUR6lZ=(Mrsj=Sp-s2#0(<%fP^MfkpNgv za(+&JQ4uRh987S4So}Z&go{CHI2hR&ftZPnQHDu|QGu~a&?!H$C}r|1maTlCFyLX} L0m}0+v4{cybUHRb delta 583 zcmZuuJ5Iwu5Z#Zxar_OIDAJ$^A)(yC9f*3KGRhcDmaEAi=XS-|1ifw+KJ+|tb#J1@nW zUXr`;mF2u3&!k|v5qAo@W^25gnCn9}BJ<-$L1PmX)*l7!lh}+%%kzUg*SrCIckeHo z7FfX00vtgLG!G-R4Q$|@eF4qens*QKuI4@9{nlUZz7YrTv>*UM?_Yx;A~Crk!=r2E zzyfQ5fa|O&fNB6YUKz88RaO~F%Cr(`HXTp$njs+`r;CZ4)h3$oXH;f6UnWUb8;viW zX5*n4S?Ir4ay9D8e3B?UDi0J2t0*)oA7IE;4_=k|BwwUbA?C644lFzc02qrC0E-F= c!31^LDIKr@gpGi4#x_6v+eMd4T+oH=7m~1eX#fBK diff --git a/__pycache__/game.cpython-310.pyc b/__pycache__/game.cpython-310.pyc index c11e0d422df9095187abd473b66df7f1b1508799..dca92e41a3c67c74a9ef4a71873d2c58adbb43a0 100644 GIT binary patch delta 60 zcmbOxxImCMpO=@50SLZDbfr{mvOnF8~0Nh73#q delta 49 zcmZ1=I8Bf@pO=@50SK5&J5szh@`|uCT1-}A*PR^Bp3MW2;9%rn?*2x^qDtxziic1npGLv&tOEU6PChIUObFu;TaxgG4@=Xq7jspPE C_7{Et delta 83 zcmX@XzJ;APpO=@50SI1Jbfi3=$lEK+1mrjXaj^)HNM(p(Oks#(N?}Z4YGH_C-nd(h hiIH*gBPLBomdQNKDwFM)mDyQ<3ON{fCTB6n0RRMk5fK0Y diff --git a/__pycache__/move.cpython-310.pyc b/__pycache__/move.cpython-310.pyc index f3112b65613e4553e5d4488b1c9d702dac3dce1f..1bfe1f956d87c596190ab98f92b731a7b5760120 100644 GIT binary patch literal 5331 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 diff --git a/__pycache__/piece.cpython-310.pyc b/__pycache__/piece.cpython-310.pyc index 852294745645a757cffa279c6e037080558b07f6..64fc705333c63e5c0dd4e0762670a4c20dbdf553 100644 GIT binary patch literal 1020 zcmZWnJ#X7E5GAP(%Zlx!M%!fR&{0K^A5a8Efd(zm!3f}`5DXB4jq}z{Y5U11?4fI^bb+p^Lrz#yLq; ztYRYF80FORJ$m^Wq2@J{tQLrT$`G+RqE!nJbD>|*U#K#4 zC_v*cW=bnbO~OGDEiws-R&kZ&SztAGsnRdn!(O_JuwuH8;qS{&Zzjj8oL6}}UhtarEQK$@7LicEB(+`^SwlJW{ZUnai?BcMb_IrG}+n(UA z7L$4#qny^6BM_0fNkgvbL;*MS7>M>EVGmTQD%FZk5AzT8^7(Sua&DI&{rNrG_A$}* zZ)kUjk9s~NeG<>2Y^vn{yM0Qlo+B*xTi!=2MnQ)zjoyotjW6-UaGp}$lk)3%l(rR3 zx@pty8D;wf^eDD~l-490c}bFa%;R3)vwFhJk5DYCZS65F%oTY@E%RHmn*XfhRXfVeEV`DLj^oIoao06Fm%XJSf9 zJV>ILdvXAiOCS$WP?NC;q#sCu^r7qENlDE~ElGuF0$E?o1SGf^tAqkFQ0 + self.kopia = [] + for move in self.board.boardlist[r][c].piece.valid_moves: + if Move.check_szach(self, color, r, c, move[0], move[1]) is False: + self.kopia.append(move) + self.board.boardlist[r][c].piece.valid_moves=self.kopia + for xddr in range(8): + for xddc in range(8): + if self.board.boardlist[xddr][xddc].has_piece() and self.board.boardlist[xddr][xddc].piece.color!=color: + if (len(self.board.boardlist[xddr][xddc].piece.valid_moves)>0): + self.boot_piece.append(self.board.boardlist[xddr][xddc]) + if (len(self.boot_piece)==0): + print("MAT") + exit(0) self.value = random.randrange(0, len(self.boot_piece)) self.initial_piece = self.boot_piece[self.value] while len(self.initial_piece.piece.valid_moves) == 0: self.value = random.randrange(0, len(self.boot_piece)) self.initial_piece = self.boot_piece[self.value] + print(self.initial_piece.row, self.initial_piece.column) self.move_initial_row = self.initial_piece.row self.move_initial_column = self.initial_piece.column #random move for piece self.value = random.randrange(0, len(self.initial_piece.piece.valid_moves)) self.move_final = self.initial_piece.piece.valid_moves[self.value] + self.move_final_row = self.move_final[0] self.move_final_column = self.move_final[1] self.x = self.board.boardlist[self.move_initial_row][self.move_initial_column].piece @@ -69,8 +80,8 @@ class Move: return self.x, self.move_initial_row, self.move_initial_column, self. move_final_row, self.move_final_column def calc_moves(self, piece, row, column): - piece.delete_moves() - #piece.valid_moves=[] + #piece.delete_moves() + piece.valid_moves=[] if piece.name == 'rook': Rook.straightline_moves(self, piece, row, column,True) pass @@ -90,16 +101,63 @@ class Move: King.king_moves(self, piece, row, column) pass - def pawn_promotion(self, x, final_row, final_column): + def pawn_promotion(self, x, final_row): if x.name == "pawn": - if (final_row==0) or (final_row==7): + if (final_row == 0) or (final_row == 7): x.name == "queen" def mat(self, x, final_row, final_column): if self.board.boardlist[final_row][final_column].has_piece(): if self.board.boardlist[final_row][final_column].piece.name == 'king': + + print("MAT") exit(0) - #def szach(self,color): - # for + pass + + def check_szach(self, color, initial_row, initial_column, final_row, final_column):#kolor przeciwnika + + self.piece = self.board.boardlist[initial_row][initial_column].piece + self.previous_piece = self.board.boardlist[final_row][final_column].piece + self.board.boardlist[initial_row][initial_column].piece = None + self.board.boardlist[final_row][final_column].piece = self.piece + for rowxd in range(8): + for columnxd in range(8): + if self.board.boardlist[rowxd][columnxd].has_piece(): + if self.board.boardlist[rowxd][columnxd].piece.color == color: + Move.calc_moves(self, self.board.boardlist[rowxd][columnxd].piece, rowxd, columnxd) + for r1 in range(8): + for c1 in range(8): + if self.board.boardlist[r1][c1].has_piece(): + if self.board.boardlist[r1][c1].piece.name=='king' and self.board.boardlist[r1][c1].piece.color != color: + self.king_position= (r1,c1) + #tu skonczylas + for r2 in range(8): + for c2 in range(8): + if self.board.boardlist[r2][c2].has_piece(): + if self.board.boardlist[r2][c2].piece.color == color: + if self.king_position in self.board.boardlist[r2][c2].piece.valid_moves: + self.board.boardlist[final_row][final_column].piece=self.previous_piece + self.board.boardlist[initial_row][initial_column].piece= self.piece + #print("XXXXXXXXXXXXXXXXXXX") + for rowxd2 in range(8): + for columnxd2 in range(8): + if self.board.boardlist[rowxd2][columnxd2].has_piece(): + if self.board.boardlist[rowxd2][columnxd2].piece.color == color: + Move.calc_moves(self, self.board.boardlist[rowxd2][columnxd2].piece, rowxd2,columnxd2) + #print("valid moves przeciwnika") + #print(self.board.boardlist[r2][c2].piece.valid_moves) + return True + + self.board.boardlist[final_row][final_column].piece = self.previous_piece + self.board.boardlist[initial_row][initial_column].piece = self.piece + for rowxd in range(8): + for columnxd in range(8): + if self.board.boardlist[rowxd][columnxd].has_piece(): + if self.board.boardlist[rowxd][columnxd].has_piece(): + if self.board.boardlist[rowxd][columnxd].piece.color == color: + Move.calc_moves(self, self.board.boardlist[rowxd][columnxd].piece, rowxd, columnxd) + return False + + @staticmethod def numbers_to_letters(number): diff --git a/piece.py b/piece.py index 4bd7fc6..475936d 100644 --- a/piece.py +++ b/piece.py @@ -5,14 +5,19 @@ class Piece: self.valid_moves = [] self.moved = False if color == 'white': + if (self.name=='king'): + self.where_king=(3,7) self.pawn_direction = -1 else: self.pawn_direction = 1 + if (self.name=='king'): + self.where_king=(3,7) def add_moves(self, move): self.valid_moves.append(move) def delete_moves(self): self.valid_moves = [] + def change_where_king(self, move): + self.where_king = move + - #def czy_szachuje(self, row, column, color): - # self.ruch=[]