+
+/* Uncomment to make every game stupidly easy -- winnable in 1 move */
+#if 0
+ /* Force empty space to the border */
+ if (board_position(board->x, board->y) & GOAL_MASK) {
+ switch (rng_uniform_int(4)) {
+ case 0: game_do_move(board, board->x, 0); break;
+ case 1: game_do_move(board, board->x, 4); break;
+ case 2: game_do_move(board, 0, board->y); break;
+ case 3: game_do_move(board, 4, board->y); break;
+ }
+ }
+
+ /* Force goal to match the current board */
+ for (i = 0; i < 3; i++) {
+ board->goal[i] = (board->game[i] & GOAL_MASK) >> GOAL_SHIFT;
+ }
+
+ /* Move empty space back to the centre */
+ if (board->x == 0 || board->x == 4) {
+ game_do_move(board, 1+rng_uniform_int(3), board->y);
+ }
+
+ if (board->y == 0 || board->y == 4) {
+ game_do_move(board, board->x, 1+rng_uniform_int(3));
+ }
+#endif