def _valid_ray(orig, dest, board): """ :param orig: origin :param dest: destination :return: true if a nothing is on the way between the origin and the destination """ (d0, d1, _) = dest base = utilities.get_base_vector(utilities.get_rel_vector(orig, dest)) tmp = utilities.add_vector(orig, base) (t0, t1, _) = tmp while t0 is not d0 or t1 is not d1: print(tmp) for i in range(0, 6): if board.get_piece((t0, t1, i)): return False if not _is_other_color(board.get_piece(orig), board.get_piece((t0, t1, i))): return False tmp = utilities.add_vector(tmp, base) (t0, t1, _) = tmp return True
def move_atk_board(self, orig, dest): """ moves an attack board on a pin and all pieces on top of it to the new pin updates the usable fields """ if orig not in self.atkBoards: return if dest not in self.atkBoards: # get bottom-left field on king's side if orig[0] == "Q": field = self.pins[int(orig[2])] else: field = utilities.add_vector(self.pins[int(orig[2])], (4, 0, 0)) vector = self._get_rel_atk_board_vector(orig, dest) all_origins = (field, utilities.add_vector(field, (0, 1, 0)), utilities.add_vector(field, (1, 0, 0)), utilities.add_vector(field, (1, 1, 0))) for o in all_origins: self.set_piece(utilities.add_vector(o, vector), self.get_piece(o)) self.set_piece(o, None) self.atkBoards.remove(orig) self.atkBoards.append(dest)
def move_atk_board(self, orig, dest): """ moves an attack board on a pin and all pieces on top of it to the new pin updates the usable fields """ if orig not in self.atkBoards: return if dest not in self.atkBoards: # get bottom-left field on king's side if orig[0] == "Q": field = self.pins[int(orig[2])] else: field = utilities.add_vector(self.pins[int(orig[2])], (4, 0, 0)) vector = self._get_rel_atk_board_vector(orig, dest) all_origins = (field, utilities.add_vector(field, (0, 1, 0)), utilities.add_vector(field, (1, 0, 0)), utilities.add_vector(field, (1, 1, 0)) ) for o in all_origins: self.set_piece(utilities.add_vector(o, vector), self.get_piece(o)) self.set_piece(o, None) self.atkBoards.remove(orig) self.atkBoards.append(dest)