From 33102177288d6bc47ef8eaa434508422a50d1d84 Mon Sep 17 00:00:00 2001 From: Agata Halik Date: Thu, 22 Jun 2023 23:51:41 +0200 Subject: [PATCH] . --- __pycache__/board.cpython-310.pyc | Bin 1433 -> 1433 bytes __pycache__/game.cpython-310.pyc | Bin 2190 -> 2190 bytes __pycache__/move.cpython-310.pyc | Bin 5170 -> 5133 bytes __pycache__/piece.cpython-310.pyc | Bin 804 -> 804 bytes __pycache__/square.cpython-310.pyc | Bin 1133 -> 1140 bytes board.py | 2 ++ game.py | 13 ++++---- move.py | 47 ++++++++++++++++++++--------- piece.py | 4 +-- square.py | 3 -- 10 files changed, 44 insertions(+), 25 deletions(-) diff --git a/__pycache__/board.cpython-310.pyc b/__pycache__/board.cpython-310.pyc index cb4678026a52e48bb45c4e98d526201625d4cff3..5bf2f01db401d809a311c6f61adac3991ca6aa34 100644 GIT binary patch delta 49 zcmbQqJ(HU^pO=@50SI*WOi9V#$a|cTk!|u-#`(-lJj|QRnQWLC`6h2+naIdB*^M=We6=jG*M0D|s)Q&PfsH}dhb^E0L}WHS}<)i5kzSjfQ0Fj({p{xf D6(S4! delta 49 zcmeAZ>=We6=jG*M0D=QEC#2-^Y~iBu2)```OO} E02wY5QcAd?=I_QZ^_3IF2^Aj7RjlpQdlUM_z^!y#MmhaVr-HkaIvsRp;)I{ ze}N!qsfWFVwVjQBz|zJ-6v3I~V4i(<=4F}p9!sN=>btIE;P>-<-D%H0sC_H+@ftFp z7a#{d6%Rl$1r@L%xwJIjTR_KP6JcY^24yPnK%&{knnA@b3RvvhaRf*%VID%9VCPSz z1bAG5!=3Tt65Sq4PNzNq4s|pA3Vj{Q8Z7D~S!f1Bqib|w2t{Maibj`r%?|Wf9GqDl zb_HN`jD4fbTk#Su69b}b#~IRDLPW?BmJ#|*Msk2+AP^q-iR;#RipA9fc2d>HnXqwA z(>6`HhsiM%E{{$O<%2^3ex;an0$iIyPj1uWaKc2#m#31KOaySFKeN5v6@0CnZN)V_ z#~a3VQfa~}p+s0CNWwb7B{T>dge?O7?|56^=jQAuk~{i6cbCqKitvOfEEefe{`Mb< Cdq{r( delta 484 zcmYL_OD{t~6oBVUd&jh$UhQ>5+cb?wL|azYm1sSxNG0s-a3j>COe-uZk+2n!`2ik@ z#Foa=4`AU3h`k>mRwA5J3p1JTJm=(`bDF+S+tqM5$nd0}&b_yuJA1+EPNJEF7<7Vz z#K#k0*&Mx^C(`{v3Y7g2Hp6AG~kyKf1U*T|Kq9F@Y0VNpRQ_NM6v*9 z<~h1Cm&ai-c)Hi7;bMoI!C->a2NiZbR*| OU%JvS1@AL!9XG!n7Eo*e diff --git a/__pycache__/piece.cpython-310.pyc b/__pycache__/piece.cpython-310.pyc index abeb6f7c273d06a4eafd8517480c1f923d75af90..af57a7fa38012e409705d5f2204b26bc7787910f 100644 GIT binary patch delta 23 dcmZ3&wuFr@pO=@50SLPHO-Yew+Q=uy3;;j31uy^r delta 23 dcmZ3&wuFr@pO=@50SH#Do|v+PaU-7?GXO(F1-$?O diff --git a/__pycache__/square.cpython-310.pyc b/__pycache__/square.cpython-310.pyc index 47daed019b32b0e381824fdd9351e689e939703b..185492ce3fd4f422006cdc3461be666a9913e8d2 100644 GIT binary patch delta 196 zcmaFM@r8popO=@50SI*WOiB5@k#`*kiiVZ z?m%3u0wih}To__`YZ+@8Qy8-uig|!EQ#MNxKO;j5b1*|8)8uGoDehY=iACwfx0r$C t 0: self.boot_piece.append(self.board.boardlist[r][c]) - #pat + + #jeśli nie ma żadnego dostępnego ruchu który nie doprowadziłby do szachowania króla + #lub obronił króla (jeśli król jest szachowany) przed matem, to kończy się gra if len(self.boot_piece) == 0: exit(0) - #losowanie figury + + #losowanie figury z figur z dostępnymi ruchami self.value = random.randrange(0, len(self.boot_piece)) self.initial_square = self.boot_piece[self.value] + #losowanie ruchu figury self.move_initial_row = self.initial_square.row self.move_initial_column = self.initial_square.column @@ -74,6 +86,7 @@ class Move: self.move_final_square = self.initial_square.piece.valid_moves[self.value] self.move_final_row = self.move_final_square[0] self.move_final_column = self.move_final_square[1] + return 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() @@ -102,15 +115,17 @@ class Move: def mat(self, 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) pass def check_szach(self, color, initial_row, initial_column, final_row, final_column): + #zapisanie poprzedniego ustawienia tablicy i wykonanie ruchu 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 + + #szukanie króla i liczenie dostępnych ruchów dla każdego pionka for r in range(8): for c in range(8): if self.board.boardlist[r][c].has_piece(): @@ -118,19 +133,23 @@ class Move: Move.calc_moves(self, self.board.boardlist[r][c].piece, r, c) elif self.board.boardlist[r][c].piece.name == 'king': self.king_position = (r, c) + + #szukanie króla w możliwych ruchach przeciwnika 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: + #przywracanie poprzednich ustawień tablicy z pionkami self.board.boardlist[final_row][final_column].piece = self.previous_piece self.board.boardlist[initial_row][initial_column].piece = self.piece - 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) + for r4 in range(8): + for c4 in range(8): + if self.board.boardlist[r4][c4].has_piece(): + if self.board.boardlist[r4][c4].piece.color == color: + Move.calc_moves(self, self.board.boardlist[r4][c4].piece, r4, c4) return True + #przywracanie poprzednich ustawień tablicy z pionkami self.board.boardlist[final_row][final_column].piece = self.previous_piece self.board.boardlist[initial_row][initial_column].piece = self.piece for r3 in range(8): diff --git a/piece.py b/piece.py index b3ab6a0..8737030 100644 --- a/piece.py +++ b/piece.py @@ -2,8 +2,8 @@ class Piece: def __init__(self, name, color): self.name = name self.color = color - self.valid_moves = [] - self.moved = False + self.valid_moves = [] #dostępne ruchy dla figury + self.moved = False #informacja czy figura wykonała już swój pierwszy ruch, potrzebne do policzenia ruchow pawn if color == 'white': self.pawn_direction = -1 else: diff --git a/square.py b/square.py index 32832bc..2c0fdd1 100644 --- a/square.py +++ b/square.py @@ -3,17 +3,14 @@ class Square: self.row = row self.column = column self.piece = piece - def has_piece(self): if self.piece is None: return False else: return True - def is_rival(self, color): if self.has_piece() is True and self.piece.color != color: return True - def empty_or_rival(self, color): if self.is_rival(color) is True or self.has_piece() is False: return True