def __init__(self, cube_size=2, block_size=None, start_pos=None, block_color=None, set_colors=True): RubiksCube.__init__(self, cube_size, False) BVCube.__init__(self, start_pos, cube_size) BFps.__init__(self) if block_size is None or block_size < 2: self._block_size = 2 else: self._block_size = block_size if block_color is None: self._block_color = color.gray(0.4) else: self._block_color = block_color start_point = self._dimension*self._block_size/2 start_vector = self._pos - vector(start_point, start_point, start_point) half_block = vector(self._block_size/2, self._block_size/2, self._block_size/2) # generate all the cubes for x in xrange(self._dimension): for y in xrange(self._dimension): for z in xrange(self._dimension): current_vector = vector(self._block_size*x, self._block_size*y, self._block_size*z) current_block_pos = start_vector + half_block + current_vector self._array[x][y][z] = VCube(current_block_pos,self._block_color,self._block_size*2) self.reset_array(set_colors)
def from_xml(xml_object, size): rubikscube = RubiksCube(size) for x in Helper.CUBE_SIDES: side = [[None for k in xrange(size)] for i in xrange(size)] for y in range(rubikscube.get_size()): for z in range(rubikscube.get_size()): value = xml_object.find(x+"/Part-"+str(y)+"-"+str(z)).text if value == str(None): side[y][z] = None else: side[y][z] = int(value) rubikscube.set_side(x, side) return rubikscube
def set_part(self, side, x, y, color, create_mode=False): if create_mode: RubiksCube.set_part(self, side, x, y, color) else: if side == "Front": self._array[x][y][self._dimension-1].get_front().color = color if side == "Back": self._array[x][y][0].get_back().color = color if side == "Top": self._array[x][self._dimension-1][y].get_top().color = color if side == "Bottom": self._array[x][0][y].get_bottom().color = color if side == "Left": self._array[0][x][y].get_left().color = color if side == "Right": self._array[self._dimension-1][x][y].get_right().color = color
def to_code_cube(input_cube): if input_cube.__class__ == RubiksCube().__class__: return input_cube cube = RubiksCube(input_cube.get_size(), False) for side in Helper.CUBE_SIDES: current_side = input_cube.get_side(side) for x in range(input_cube.get_size()): for y in range(input_cube.get_size()): if current_side[x][y].color in Helper.CUBE_COLOR: current_side[x][y] = Helper.CUBE_COLOR.index(current_side[x][y].color) else: current_side[x][y] = None cube.set_side(side, current_side) return cube
def filter_cube(self, input_cube, xml_cube): temp_cube = RubiksCube(self.cube_size, False) for side in Helper.CUBE_SIDES: current_side = input_cube.get_side(side) match_side = xml_cube.get_side(side) new_side = [] for x in range(self.cube_size): new_side.append([]) for y in range(self.cube_size): if match_side[x][y] is None: new_side[x].append(None) else: new_side[x].append(current_side[x][y]) temp_cube.set_side(side, new_side) return temp_cube
def turn_x(self, index, direction): for r in xrange(self.fps): rate(self.rate) for x in xrange(self._dimension): for y in xrange(self._dimension): if index >= 0: self._array[index][x][y].rotate(self.degrees90/self.fps, vector(direction*-1, 0, 0), self._pos) else: for rows in range(self._dimension): self._array[rows][x][y].rotate(self.degrees90/self.fps, vector(direction*-1, 0, 0), self._pos) if index >= 0: RubiksCube.turn_x(self, index, direction) else: for rows in range(self._dimension): RubiksCube.turn_x(self, rows, direction)
for x in range(self.cube_size): for y in range(self.cube_size): if current_side[x][y] is not None: current_side[x][y] = (current_side[x][y] + set_num) % 6 local_cube.set_side(side, current_side) return local_cube myXml = XmlParser() myObject = myXml.read_file("2.1.xml", True) myObject2 = myXml.read_file("xxx_cube.xml", True) x = RubiksCube(3) x2 = RubiksCube(3) x2.turn_z(-1,1) #RubiksCubeConverter.to_visual_cube(myObject._start_cube) #RubiksCubeConverter.to_visual_cube(myObject2._start_cube) main = PatternFinder(3) #print main.find_pattern(x, x2) print main.find_pattern(myObject2._start_cube, myObject._start_cube) #print main.find_pattern(x, x2) #print main.find_pattern(myObject._start_cube, myObject2._start_cube) #for cube in mycubes: