Project

General

Profile

« Previous | Next » 

Revision f702f4ef

Added by Leszek Koltunski almost 2 years ago

Make error reporting in the Solver a bit better.

View differences:

src/main/java/org/distorted/solvers/SolverMain.java
26 26
  private final Resources mRes;
27 27
  private final TwistyObject mObject;
28 28
  private final long mSignature;
29
  private int mColorID;
29 30

  
30 31
///////////////////////////////////////////////////////////////////////////////////////////////////
31 32

  
......
66 67

  
67 68
    SolverSearch.prepare(mRes);
68 69
    String objectPosition = prepareCube3position();
69
    result = SolverSearch.solution(objectPosition, 24, 20);
70
    int check = checkPosition(objectPosition);
70 71

  
71
    if (result.contains("Error"))
72
    if( check<0 )
72 73
      {
73
      switch (result.charAt(result.length() - 1))
74
      result = SolverSearch.solution(objectPosition, 24, 20);
75

  
76
      if (result.contains("Error"))
74 77
        {
75
        case '1': result = mRes.getString(R.string.solver_cube3_error1); break;
76
        case '2': result = mRes.getString(R.string.solver_cube3_error2); break;
77
        case '3': result = mRes.getString(R.string.solver_cube3_error3); break;
78
        case '4': result = mRes.getString(R.string.solver_cube3_error4); break;
79
        case '5': result = mRes.getString(R.string.solver_cube3_error5); break;
80
        case '6': result = mRes.getString(R.string.solver_cube3_error6); break;
81
        case '7': result = mRes.getString(R.string.solver_cube3_error7); break;
82
        case '8': result = mRes.getString(R.string.solver_cube3_error8); break;
83
        case '9': result = mRes.getString(R.string.solver_cube3_error9); break;
78
        switch (result.charAt(result.length() - 1))
79
          {
80
          case '1': result = mRes.getString(R.string.solver_cube3_error1); break;
81
          case '2': result = mRes.getString(R.string.solver_cube3_error2); break;
82
          case '3': result = mRes.getString(R.string.solver_cube3_error3); break;
83
          case '4': result = mRes.getString(R.string.solver_cube3_error4); break;
84
          case '5': result = mRes.getString(R.string.solver_cube3_error5); break;
85
          case '6': result = mRes.getString(R.string.solver_cube3_error6); break;
86
          case '7': result = mRes.getString(R.string.solver_cube3_error7); break;
87
          case '8': result = mRes.getString(R.string.solver_cube3_error8); break;
88
          case '9': result = mRes.getString(R.string.solver_cube3_error9); break;
89
          }
90

  
91
        solver.displayErrorDialog(result);
92
        }
93
      else
94
        {
95
        solver.setSolved(result);
84 96
        }
85

  
86
      solver.displayErrorDialog(result);
87 97
      }
88 98
    else
89 99
      {
90
      solver.setSolved(result);
100
      String color = mRes.getString(mColorID);
101
      result = mRes.getString(R.string.solver_cube3_error1,check,color);
102
      solver.displayErrorDialog(result);
91 103
      }
92 104
    }
93 105

  
......
128 140
    return -1;
129 141
    }
130 142

  
143
///////////////////////////////////////////////////////////////////////////////////////////////////
144

  
145
  private int checkPosition(String position)
146
    {
147
    int[] numColors = new int[6];
148
    int len = position.length();
149

  
150
    for(int i=0; i<len; i++)
151
      {
152
      char ch = position.charAt(i);
153

  
154
      switch(ch)
155
        {
156
        case 'R': numColors[0]++; break;
157
        case 'L': numColors[1]++; break;
158
        case 'U': numColors[2]++; break;
159
        case 'D': numColors[3]++; break;
160
        case 'F': numColors[4]++; break;
161
        case 'B': numColors[5]++; break;
162
        }
163
      }
164

  
165
    if( numColors[0]<9 ) { mColorID = R.string.color_yellow; return numColors[0]; }
166
    if( numColors[1]<9 ) { mColorID = R.string.color_white ; return numColors[1]; }
167
    if( numColors[2]<9 ) { mColorID = R.string.color_blue  ; return numColors[2]; }
168
    if( numColors[3]<9 ) { mColorID = R.string.color_green ; return numColors[3]; }
169
    if( numColors[4]<9 ) { mColorID = R.string.color_red   ; return numColors[4]; }
170
    if( numColors[5]<9 ) { mColorID = R.string.color_orange; return numColors[5]; }
171

  
172
    return -1;
173
    }
174

  
131 175
///////////////////////////////////////////////////////////////////////////////////////////////////
132 176
// order: Up --> Right --> Front --> Down --> Left --> Back
133 177
// (because the first implemented Solver - the two-phase Cube3 one - expects such order)

Also available in: Unified diff