Пример #1
0
  // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  // Gives CubieCube representation of a faceletcube
  CubieCube toCubieCube() {
    byte ori;
    CubieCube ccRet = new CubieCube();
    for (int i = 0; i < 8; i++) ccRet.cp[i] = URF; // invalidate corners
    for (int i = 0; i < 12; i++) ccRet.ep[i] = UR; // and edges
    Color col1, col2;
    for (Corner i : Corner.values()) {
      // get the colors of the cubie at corner i, starting with U/D
      for (ori = 0; ori < 3; ori++)
        if (f[cornerFacelet[i.ordinal()][ori].ordinal()] == U
            || f[cornerFacelet[i.ordinal()][ori].ordinal()] == D) break;
      col1 = f[cornerFacelet[i.ordinal()][(ori + 1) % 3].ordinal()];
      col2 = f[cornerFacelet[i.ordinal()][(ori + 2) % 3].ordinal()];

      for (Corner j : Corner.values()) {
        if (col1 == cornerColor[j.ordinal()][1] && col2 == cornerColor[j.ordinal()][2]) {
          // in cornerposition i we have cornercubie j
          ccRet.cp[i.ordinal()] = j;
          ccRet.co[i.ordinal()] = (byte) (ori % 3);
          break;
        }
      }
    }
    for (Edge i : Edge.values())
      for (Edge j : Edge.values()) {
        if (f[edgeFacelet[i.ordinal()][0].ordinal()] == edgeColor[j.ordinal()][0]
            && f[edgeFacelet[i.ordinal()][1].ordinal()] == edgeColor[j.ordinal()][1]) {
          ccRet.ep[i.ordinal()] = j;
          ccRet.eo[i.ordinal()] = 0;
          break;
        }
        if (f[edgeFacelet[i.ordinal()][0].ordinal()] == edgeColor[j.ordinal()][1]
            && f[edgeFacelet[i.ordinal()][1].ordinal()] == edgeColor[j.ordinal()][0]) {
          ccRet.ep[i.ordinal()] = j;
          ccRet.eo[i.ordinal()] = 1;
          break;
        }
      }
    return ccRet;
  };