Анимация решателя судоку (AWT, Java) - PullRequest
0 голосов
/ 20 июня 2020

Итак, у меня есть базовая c игра / решатель судоку.

И я пытаюсь сделать очень базовую c анимацию для решателя.

Функция решателя:

   public boolean solve (int[][] sudoku)  {  
      int[] location = findFirstZero();
      int y = location[0];
      int x = location[1];
      //-1 if there was no first zero found
      if (x == -1) {
         return true;
      }
      //Uses backtracking algorathem to solve
      for (int i = 1; i <= 9; i++) {
         if (numberWorks(sudoku, y, x, i)) {
            sudoku[y][x] = i;
            //What I want to animate
            tfCells[y][x].setText(i + "");
            tfCells[y][x].setBackground(Color.GREEN);               
            if (solve(sudoku)) {
               return true;
            } else {
               sudoku[y][x] = 0;
               //Other part of what I want to animate
               tfCells[y][x].setBackground(Color.RED);
               tfCells[y][x].setText(i + "");
            }
         }
      }
      return false;
   }

Я хочу, чтобы он показал, что он работает через судоку, с полем, в котором он в настоящее время работает, чтобы он стал зеленым / красным (зеленый для текущего правильного, красный для неправильного) и отображение числа по мере его появления через него.

Я думаю, что с текущей функцией (см. выше) она в настоящее время выполняет анимацию, но делает это слишком быстро (хотя это может быть неправильно), поэтому я перепробовал множество методов задержки it (Timer, TimeUnit.SECONDS.sleep () и Thread.sleep ()), но они просто задерживают переход всех окон в зеленый цвет, а не делают это по отдельности. (Показывает результат, а не процесс).

Сообщите мне, что я делаю неправильно / если вам нужна дополнительная информация

...