Project

General

Profile

« Previous | Next » 

Revision 5043d5d0

Added by Leszek Koltunski about 3 years ago

Refactor the automatic scrambling. From now on, it is not needed to care about single and double turns when randomizing a new turn.

View differences:

src/main/java/org/distorted/objects/TwistyBandaged3Plate.java
107 107
// PUBLIC API
108 108
// TODO
109 109

  
110
  public void randomizeNewScramble(int[] scramble, Random rnd, int oldRotAxis, int oldRow,
111
                                   int numScramble, int remScrambles, int remDoubleScrambles)
110
  public void randomizeNewScramble(int[][] scramble, Random rnd, int num)
112 111
    {
113
    if( numScramble==1 )
112
    if( num==0 )
114 113
      {
115
      scramble[0] = rnd.nextInt(ROTATION_AXIS.length);
114
      scramble[num][0] = rnd.nextInt(ROTATION_AXIS.length);
116 115
      }
117 116
    else
118 117
      {
119 118
      int newVector = rnd.nextInt(ROTATION_AXIS.length-1);
120
      scramble[0] = (newVector>=oldRotAxis ? newVector+1 : newVector);
119
      scramble[num][0] = (newVector>=scramble[num-1][0] ? newVector+1 : newVector);
121 120
      }
122 121

  
123 122
    float rowFloat = rnd.nextFloat();
......
126 125
      {
127 126
      if( rowFloat<=mRowChances[row] )
128 127
        {
129
        scramble[1] = row;
128
        scramble[num][1] = row;
130 129
        break;
131 130
        }
132 131
      }
133 132

  
134
    int random = rnd.nextInt(remScrambles);
135
    int result = random<remDoubleScrambles ? 2:1;
136
    int sign   = rnd.nextInt(2);
137

  
138
    scramble[2] = sign==0 ? result : -result;
133
    switch( rnd.nextInt(4) )
134
      {
135
      case 0: scramble[num][2] = -2; break;
136
      case 1: scramble[num][2] = -1; break;
137
      case 2: scramble[num][2] =  1; break;
138
      case 3: scramble[num][2] =  2; break;
139
      }
139 140
    }
140 141

  
141 142
///////////////////////////////////////////////////////////////////////////////////////////////////

Also available in: Unified diff