Revision 373fa45f
Added by Leszek Koltunski about 4 years ago
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
Progress making the Solver state more abstract.