// 第一步:完成顶层十字 void completeTopCross(Cube& cube) { // 获取当前魔方状态 CubeState state = cube.getState();

// 如果顶层中心块不是白色,则需要先将其旋转到顶部
if (state.up[1][1] != WHITE) {
	// 找到白色中心块所在的面
	Color face;
	if (state.front[1][1] == WHITE) {
		face = FRONT;
	} else if (state.left[1][1] == WHITE) {
		face = LEFT;
	} else if (state.right[1][1] == WHITE) {
		face = RIGHT;
	} else if (state.back[1][1] == WHITE) {
		face = BACK;
	}

	// 将白色中心块旋转到顶部
	switch (face) {
		case FRONT:
			cube.rotate(UP, CLOCKWISE);
			cube.rotate(RIGHT, CLOCKWISE);
			cube.rotate(DOWN, COUNTERCLOCKWISE);
			cube.rotate(RIGHT, COUNTERCLOCKWISE);
			cube.rotate(UP, COUNTERCLOCKWISE);
			cube.rotate(RIGHT, CLOCKWISE);
			cube.rotate(DOWN, COUNTERCLOCKWISE);
			cube.rotate(RIGHT, COUNTERCLOCKWISE);
			break;
		case LEFT:
			cube.rotate(UP, COUNTERCLOCKWISE);
			cube.rotate(FRONT, COUNTERCLOCKWISE);
			cube.rotate(UP, CLOCKWISE);
			cube.rotate(FRONT, CLOCKWISE);
			break;
		case RIGHT:
			cube.rotate(UP, CLOCKWISE);
			cube.rotate(FRONT, CLOCKWISE);
			cube.rotate(UP, COUNTERCLOCKWISE);
			cube.rotate(FRONT, COUNTERCLOCKWISE);
			break;
		case BACK:
			cube.rotate(UP, COUNTERCLOCKWISE);
			cube.rotate(LEFT, CLOCKWISE);
			cube.rotate(DOWN, CLOCKWISE);
			cube.rotate(LEFT, COUNTERCLOCKWISE);
			cube.rotate(UP, COUNTERCLOCKWISE);
			cube.rotate(LEFT, CLOCKWISE);
			cube.rotate(DOWN, CLOCKWISE);
			cube.rotate(LEFT, COUNTERCLOCKWISE);
			break;
	}
}

// 如果顶层中心块已经是白色,则直接进行下一步操作
// 将白色边块旋转到顶部
while (state.up[0][1] != WHITE || state.front[2][1] != GREEN || state.right[2][1] != RED || state.back[0][1] != BLUE || state.left[2][1] != ORANGE) {
	// 如果白色边块在前面,则将其旋转到右边
	if (state.front[2][1] == WHITE) {
		cube.rotate(UP, COUNTERCLOCKWISE);
		cube.rotate(RIGHT, CLOCKWISE);
		cube.rotate(FRONT, CLOCKWISE);
		cube.rotate(RIGHT, COUNTERCLOCKWISE);
		cube.rotate(FRONT, COUNTERCLOCKWISE);
		cube.rotate(UP, CLOCKWISE);
		cube.rotate(FRONT, CLOCKWISE);
		cube.rotate(RIGHT, CLOCKWISE);
		cube.rotate(FRONT, COUNTERCLOCKWISE);
		cube.rotate(RIGHT, COUNTERCLOCKWISE);
	}
	// 如果白色边块在右边,则将其旋转到后面
	else if (state.right[2][1] == WHITE) {
		cube.rotate(UP, CLOCKWISE);
		cube.rotate(BACK, CLOCKWISE);
		cube.rotate(RIGHT, CLOCKWISE);
		cube.rotate(BACK, COUNTERCLOCKWISE);
		cube.rotate(RIGHT, COUNTERCLOCKWISE);
		cube.rotate(UP, COUNTERCLOCKWISE);
		cube.rotate(RIGHT, CLOCKWISE);
		cube.rotate(BACK, CLOCKWISE);
		cube.rotate(RIGHT, COUNTERCLOCKWISE);
		cube.rotate(BACK, COUNTERCLOCKWISE);
	}
	// 如果白色边块在后面,则将其旋转到左边
	else if (state.back[0][1] == WHITE) {
		cube.rotate(UP, COUNTERCLOCKWISE);
		cube.rotate(LEFT, COUNTERCLOCKWISE);
		cube.rotate(BACK, CLOCKWISE);
		cube.rotate(LEFT, CLOCKWISE);
		cube.rotate(BACK, COUNTERCLOCKWISE);
		cube.rotate(UP, CLOCKWISE);
		cube.rotate(BACK, CLOCKWISE);
		cube.rotate(LEFT, COUNTERCLOCKWISE);
		cube.rotate(BACK, COUNTERCLOCKWISE);
		cube.rotate(LEFT, CLOCKWISE);
	}
	// 如果白色边块在左边,则将其旋转到前面
	else if (state.left[2][1] == WHITE) {
		cube.rotate(UP, CLOCKWISE);
		cube.rotate(FRONT, COUNTERCLOCKWISE);
		cube.rotate(LEFT, CLOCKWISE);
		cube.rotate(FRONT, CLOCKWISE);
		cube.rotate(LEFT, COUNTERCLOCKWISE);
		cube.rotate(UP, COUNTERCLOCKWISE);
		cube.rotate(LEFT, CLOCKWISE);
		cube.rotate(FRONT, COUNTERCLOCKWISE);
		cube.rotate(LEFT, COUNTERCLOCKWISE);
		cube.rotate(FRONT, CLOCKWISE);
	}

	// 更新魔方状态
	state = cube.getState();
}

}


原文地址: https://www.cveoy.top/t/topic/b1h2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录