// 根据旋转方式调整 orange 面的状态 switch (rotation) { case CLOCKWISE: // 将 up 面向左旋转一次,将 right 面上下颠倒后向左旋转一次,将 down 面向右旋转一次,将 left 面上下颠倒后向右旋转一次 for (int i = 0; i < 3; i++) { temp[i][2] = up[i][0]; up[i][0] = left[2 - i][2]; left[2 - i][2] = down[i][0]; down[i][0] = right[2 - i][0]; right[2 - i][0] = temp[i][2]; } // 将 orange 面向右旋转一次 for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { temp[i][j] = back[2 - j][i]; } } for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { back[i][j] = temp[i][j]; } } break; case COUNTERCLOCKWISE: // 将 up 面向右旋转一次,将 right 面上下颠倒后向右旋转一次,将 down 面向左旋转一次,将 left 面上下颠倒后向左旋转一次 for (int i = 0; i < 3; i++) { temp[i][2] = up[i][0]; up[i][0] = right[2 - i][0]; right[2 - i][0] = down[i][0]; down[i][0] = left[2 - i][2]; left[2 - i][2] = temp[i][2]; } // 将 orange 面向左旋转一次 for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { temp[i][j] = back[j][2 - i]; } } for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { back[i][j] = temp[i][j]; } } break; case DOUBLE: // 将 up 面向左旋转一次,将 right 面上下颠倒后向左旋转一次,将 down 面向右旋转一次,将 left 面上下颠倒后向右旋转一次 for (int i = 0; i < 3; i++) { temp[i][2] = up[i][0]; up[i][0] = down[2 - i][0]; down[i][0] = temp[i][2]; } for (int i = 0; i < 3; i++) { temp[i][2] = right[2 - i][0]; right[2 - i][0] = left[i][2]; left[i][2] = temp[i][2]; } // 将 orange 面旋转180度 for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { temp[i][j] = back[2 - i][2 - j]; } } for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { back[i][j] = temp[i][j]; } } break; } break; // 退出switch语句

魔方旋转:完整 ORANGE 面旋转代码

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

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