def determinePiece(self): self.dest = self.board.stringToLoc(self.dest) possible = Piece.piecesForType(self.pieceType, self.isWhite) if possible: for p in possible: loc = self.board.locationOfPiece(p) if loc == None: self.notes += 'Error: piece location not found\n' continue if self.piece: if self.piece.isalpha(): #in column if loc[0] != ord(self.piece) - 97: continue else: #in row if loc[1] != int(self.piece) - 1: continue if self.pieceType == 'R': if (loc[0] == self.dest[0] or loc[1] == self.dest[1]): self.piece = p self.location = loc break elif self.pieceType == 'N': if ((loc[0] + 2 == self.dest[0] and (loc[1] + 1 == self.dest[1] or loc[1] - 1 == self.dest[1])) or (loc[0] - 2 == self.dest[0] and (loc[1] + 1 == self.dest[1] or loc[1] - 1 == self.dest[1])) or (loc[1] + 2 == self.dest[1] and (loc[0] + 1 == self.dest[0] or loc[0] - 1 == self.dest[0])) or (loc[1] - 2 == self.dest[1] and (loc[0] + 1 == self.dest[0] or loc[0] - 1 == self.dest[0]))): self.piece = p self.location = loc break elif self.pieceType == 'B': if ((loc[0]+loc[1]) % 2 == (self.dest[0]+self.dest[1]) % 2): self.piece = p self.location = loc break elif self.pieceType == 'Q': if (loc[0] == self.dest[0] or loc[1] == self.dest[1] or ((loc[0]+loc[1]) % 2 == (self.dest[0]+self.dest[1]) % 2)): self.piece = p self.location = loc break elif self.pieceType == 'K': self.piece = p self.location = loc break else: #pawn if self.capture: if ((self.dest[0] == loc[0] + 1 or self.dest[0] == loc[0] - 1) and (self.dest[1] == loc[1] + 1 or self.dest[1] == loc[1] - 1)): self.piece = p self.location = loc break else: if (loc[0] == self.dest[0] and self.dest[1] <= loc[1] + 2 and self.dest[1] >= loc[1] - 2): self.piece = p self.location = loc break else: return