now the legal moves of the pawn actually returns

moves
This commit is contained in:
Karma Riuk 2025-01-30 10:45:43 +01:00
parent 362b0e157d
commit eae87f353b

View File

@ -1,5 +1,6 @@
from logic.move import Move
from logic.move import Move, PieceMove
from logic.pieces.piece import Piece
from logic.position import Position
class Pawn(Piece):
def legal_moves(self, board) -> list[Move]:
@ -12,7 +13,7 @@ class Pawn(Piece):
(self.colour == self.BLACK and (capturable_piece := board.piece_at(self.pos.x - 1, self.pos.y - 1)))
):
if capturable_piece.colour != self.colour:
ret.append(capturable_piece.pos)
ret.append(PieceMove(self, capturable_piece.pos, is_capturing = True))
# can we capture to the right?
if self.pos.x < 7 and (
@ -21,18 +22,20 @@ class Pawn(Piece):
(self.colour == self.BLACK and (capturable_piece := board.piece_at(self.pos.x + 1, self.pos.y - 1)))
):
if capturable_piece.colour != self.colour:
ret.append(capturable_piece.pos)
ret.append(PieceMove(self, capturable_piece.pos, is_capturing = True))
if self.colour == Piece.WHITE:
for dy in range(1, 3 if self.pos.y == 1 else 2):
if self.pos.y + dy > 7 or board.piece_at(self.pos.x, self.pos.y + dy):
break
ret.append(Position(self.pos.x, self.pos.y + dy))
pos = Position(self.pos.x, self.pos.y + dy)
ret.append(PieceMove(self, pos))
else:
for dy in range(1, 3 if self.pos.y == 6 else 2):
if self.pos.y - dy < 0 or board.piece_at(self.pos.x, self.pos.y - dy):
break
ret.append(Position(self.pos.x, self.pos.y - dy))
pos = Position(self.pos.x, self.pos.y - dy)
ret.append(PieceMove(self, pos))
print(ret)