def setSquare(self, c: Coord, p: Piece): if (c.isValid() == False): raise Exception("Invalid set, out of bounds: Tried to get at " + str(c)) self.board[c.y][c.x] = Piece(p.name, p.team, p.id, p.timeMoved)
def getPossibleMoves(self, c: Coord): if (c.isValid() == False): return -1 p = self.getSquare(c) enemyTeam = 0 if p.team == 1 else 1 if p.name == "knight": deltas = [ Coord(1, 2), Coord(2, 1), Coord(-1, 2), Coord(-2, 1), Coord(1, -2), Coord(2, -1), Coord(-1, -2), Coord(-2, -1), ] out = [] for delta in deltas: temp = c + delta if (temp.isValid() and self.getSquare(temp).team != p.team): out.append(temp) return out elif p.name == "king": deltas = [ Coord(-1, 0), Coord(-1, -1), Coord(0, -1), Coord(1, -1), Coord(1, 0), Coord(1, 1), Coord(0, 1), Coord(-1, 1) ] out = [] for delta in deltas: temp = c + delta if (temp.isValid() and self.getSquare(temp).team != p.team): out.append(temp) return out elif p.name == "rook": deltas = [Coord(-1, 0), Coord(1, 0), Coord(0, 1), Coord(0, -1)] out = [] for delta in deltas: temp = c + delta while (temp.isValid() and self.getSquare(temp).team != p.team): if (self.getSquare(temp).team == enemyTeam): out.append(temp) break out.append(temp) temp = temp + delta return out elif p.name == "bishop": deltas = [Coord(-1, 1), Coord(-1, -1), Coord(1, 1), Coord(1, -1)] out = [] for delta in deltas: temp = c + delta while (temp.isValid() and self.getSquare(temp).team != p.team): if (self.getSquare(temp).team == enemyTeam): out.append(temp) break out.append(temp) temp = temp + delta return out elif p.name == "queen": deltas = [ Coord(-1, 0), Coord(1, 0), Coord(0, 1), Coord(0, -1), Coord(-1, 1), Coord(-1, -1), Coord(1, 1), Coord(1, -1) ] out = [] for delta in deltas: temp = c + delta while (temp.isValid() and self.getSquare(temp).team != p.team): if (self.getSquare(temp).team == enemyTeam): out.append(temp) break out.append(temp) temp = temp + delta return out elif p.name == "pawn": out = [] forwards = Coord(0, 1) if (p.team == 0): forwards = Coord(0, -1) if (self.getSquare(c + forwards).team == -1): out.append(c + forwards) if (p.timeMoved == 0 and self.getSquare(c + forwards + forwards).team == -1): out.append(c + forwards + forwards) #capturing deltas = [Coord(-1, 0) + forwards, Coord(1, 0) + forwards] for delta in deltas: t = c + delta # print("Coord:",t) # print("Square:",self.getSquare(t)) # print("Team:",self.getSquare(t).team) if t.isValid() and self.getSquare(t).team == enemyTeam: out.append(t) """Add en passant if extra time""" return out raise Exception("Tried to get move at non piece square " + str(c))
def getSquare(self, c: Coord): if (c.isValid() == False): raise Exception("Invalid get, out of bounds: Tried to get at " + str(c)) return self.board[c.y][c.x]