Beispiel #1
0
 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