Project

General

Profile

« Previous | Next » 

Revision 373fa45f

Added by Leszek Koltunski about 4 years ago

Progress making the Solver state more abstract.

View differences:

src/main/java/org/distorted/solvers/Solver.java
22 22
import android.content.res.Resources;
23 23

  
24 24
import org.distorted.main.R;
25
import org.distorted.main.RubikActivity;
25
import org.distorted.objects.RubikObjectList;
26 26
import org.distorted.states.RubikState;
27 27
import org.distorted.states.RubikStateSolver;
28 28

  
......
31 31
public class Solver implements Runnable
32 32
{
33 33
  private String mObjectPosition;
34
  private RubikActivity mAct;
34
  private Resources mRes;
35
  private RubikObjectList mObject;
36
  private int mSize;
35 37

  
36 38
///////////////////////////////////////////////////////////////////////////////////////////////////
37 39

  
38
  public Solver(RubikActivity act, String position )
40
  public Solver(Resources res, RubikObjectList object, int size, String position )
39 41
    {
42
    mRes            = res;
43
    mObject         = object;
44
    mSize           = size;
40 45
    mObjectPosition = position;
41
    mAct            = act;
42 46
    }
43 47

  
44 48
///////////////////////////////////////////////////////////////////////////////////////////////////
45 49

  
46
  public void start()
50
  private void solveCube3(RubikStateSolver solver)
47 51
    {
48
    Thread thr = new Thread(this);
49
    thr.start();
52
    String result;
53

  
54
    if( !org.distorted.solvers.cube3.Search.prepare(mRes) )
55
      result= "Error 9";
56
    else
57
      result = org.distorted.solvers.cube3.Search.solution(mObjectPosition, 24, 20);
58

  
59
    if (result.contains("Error"))
60
      {
61
      switch (result.charAt(result.length() - 1))
62
        {
63
        case '1': result = mRes.getString(R.string.solver_cube3_error1); break;
64
        case '2': result = mRes.getString(R.string.solver_cube3_error2); break;
65
        case '3': result = mRes.getString(R.string.solver_cube3_error3); break;
66
        case '4': result = mRes.getString(R.string.solver_cube3_error4); break;
67
        case '5': result = mRes.getString(R.string.solver_cube3_error5); break;
68
        case '6': result = mRes.getString(R.string.solver_cube3_error6); break;
69
        case '7': result = mRes.getString(R.string.solver_cube3_error7); break;
70
        case '8': result = mRes.getString(R.string.solver_cube3_error8); break;
71
        case '9': result = mRes.getString(R.string.solver_cube3_error9); break;
72
        }
73

  
74
      solver.displayErrorDialog(result);
75
      }
76
    else
77
      {
78
      solver.setSolved(result);
79
      }
50 80
    }
51 81

  
52 82
///////////////////////////////////////////////////////////////////////////////////////////////////
53 83

  
54
  public void interrupt()
84
  private void interruptCube3()
55 85
    {
56 86
    org.distorted.solvers.cube3.Search.interrupt();
57 87
    }
58 88

  
89
///////////////////////////////////////////////////////////////////////////////////////////////////
90

  
91
  public void start()
92
    {
93
    Thread thr = new Thread(this);
94
    thr.start();
95
    }
96

  
59 97
///////////////////////////////////////////////////////////////////////////////////////////////////
60 98

  
61 99
  public void run()
62 100
    {
63
    Resources res = mAct.getResources();
64 101
    RubikStateSolver solver = (RubikStateSolver) RubikState.SVER.getStateClass();
65
    String result;
66 102

  
67
    if( !org.distorted.solvers.cube3.Search.prepare(res) )
68
      result= "Error 9";
69
    else
70
      result = org.distorted.solvers.cube3.Search.solution(mObjectPosition, 24, 20);
71

  
72
    if (result.contains("Error"))
103
    if( mObject == RubikObjectList.CUBE && mSize == 3)
73 104
      {
74
      switch (result.charAt(result.length() - 1))
75
        {
76
        case '1': result = res.getString(R.string.error1); break;
77
        case '2': result = res.getString(R.string.error2); break;
78
        case '3': result = res.getString(R.string.error3); break;
79
        case '4': result = res.getString(R.string.error4); break;
80
        case '5': result = res.getString(R.string.error5); break;
81
        case '6': result = res.getString(R.string.error6); break;
82
        case '7': result = res.getString(R.string.error7); break;
83
        case '8': result = res.getString(R.string.error8); break;
84
        case '9': result = res.getString(R.string.error9); break;
85
        }
86

  
87
      solver.displayErrorDialog(mAct,result);
105
      solveCube3(solver);
88 106
      }
89 107
    else
90 108
      {
91
      solver.setSolved( mAct, org.distorted.solvers.cube3.Search.numMoves(), result);
109
      solver.displayErrorDialog(mRes.getString(R.string.solver_generic_error1));
92 110
      }
93 111
    }
94 112
}  

Also available in: Unified diff