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/TwistyBandagedEvil.java
119 119
// PUBLIC API
120 120
// TODO
121 121

  
122
  public void randomizeNewScramble(int[] scramble, Random rnd, int oldRotAxis, int oldRow,
123
                                   int numScramble, int remScrambles, int remDoubleScrambles)
122
  public void randomizeNewScramble(int[][] scramble, Random rnd, int num)
124 123
    {
125
    if( numScramble==1 )
124
    if( num==0 )
126 125
      {
127
      scramble[0] = rnd.nextInt(ROTATION_AXIS.length);
126
      scramble[num][0] = rnd.nextInt(ROTATION_AXIS.length);
128 127
      }
129 128
    else
130 129
      {
131 130
      int newVector = rnd.nextInt(ROTATION_AXIS.length-1);
132
      scramble[0] = (newVector>=oldRotAxis ? newVector+1 : newVector);
131
      scramble[num][0] = (newVector>=scramble[num-1][0] ? newVector+1 : newVector);
133 132
      }
134 133

  
135 134
    float rowFloat = rnd.nextFloat();
......
138 137
      {
139 138
      if( rowFloat<=mRowChances[row] )
140 139
        {
141
        scramble[1] = row;
140
        scramble[num][1] = row;
142 141
        break;
143 142
        }
144 143
      }
145 144

  
146
    int random = rnd.nextInt(remScrambles);
147
    int result = random<remDoubleScrambles ? 2:1;
148
    int sign   = rnd.nextInt(2);
149

  
150
    scramble[2] = sign==0 ? result : -result;
145
    switch( rnd.nextInt(4) )
146
      {
147
      case 0: scramble[num][2] = -2; break;
148
      case 1: scramble[num][2] = -1; break;
149
      case 2: scramble[num][2] =  1; break;
150
      case 3: scramble[num][2] =  2; break;
151
      }
151 152
    }
152 153

  
153 154
///////////////////////////////////////////////////////////////////////////////////////////////////

Also available in: Unified diff