+
+ # Reset the board from a string
+ def reset_board(self, s):
+ self.pieces = {"white" : [], "black" : []}
+ self.king = {"white" : None, "black" : None}
+ self.grid = [[None] * w for _ in range(h)]
+ for x in range(w):
+ for y in range(h):
+ self.grid[x][y] = None
+
+ for line in s.split("\n"):
+ if line == "":
+ continue
+ if line[0] == "#":
+ continue
+
+ tokens = line.split(" ")
+ [x, y] = map(int, tokens[len(tokens)-1].split(","))
+ current_type = tokens[1]
+ types = map(lambda e : e.strip(" '[],"), line.split('[')[1].split(']')[0].split(','))
+
+ target = Piece(tokens[0], x, y, types)
+ target.current_type = current_type
+
+ try:
+ target.choice = types.index(current_type)
+ except:
+ target.choice = -1
+
+ self.pieces[tokens[0]].append(target)
+ if target.current_type == "king":
+ self.king[tokens[0]] = target
+
+ self.grid[x][y] = target