- getPotentialWildebeestMoves(sq) {
- return this.getSlideNJumpMoves(
- sq,
- V.steps[V.KNIGHT].concat(V.steps[WildebeestRules.CAMEL]),
- "oneStep"
- );
+ // "Sliders": at most 3 steps
+ getSlideNJumpMoves([x, y], steps, oneStep) {
+ let moves = [];
+ outerLoop: for (let step of steps) {
+ let i = x + step[0];
+ let j = y + step[1];
+ let stepCount = 1;
+ while (V.OnBoard(i, j) && this.board[i][j] == V.EMPTY) {
+ moves.push(this.getBasicMove([x, y], [i, j]));
+ if (oneStep || stepCount == 3) continue outerLoop;
+ i += step[0];
+ j += step[1];
+ stepCount++;
+ }
+ if (V.OnBoard(i, j) && this.canTake([x, y], [i, j]))
+ moves.push(this.getBasicMove([x, y], [i, j]));
+ }
+ return moves;
+ }
+
+ getPotentialPhoenixMoves(sq) {
+ return this.getSlideNJumpMoves(sq, V.steps[V.PHOENIX], "oneStep");