Я только что закончил писать решение sudoku. Он имеет два класса: консольный решатель и решатель gui. У консольного решателя есть метод под названием solve, который рекурсивно решает судоку. Gui расширяет консольный решатель, а также использует его метод решения. Легко следить за каждым шаге рекурсии, распечатав поле судоку внутри метода, прежде чем делать другой рекурсивный вызов, например:Как получить рекурсивные вызовы от метода
System.out.println(field);
// solve next cell
if (j < 8) solve(field, row, column + 1);
else solve(field, row + 1, 0;
}
Но как я могу идти об отображении изменений в поле в gui? Я использую JTable для отображения поля sudoku в gui. В настоящее время я просто показываю результат, но не шаги, ведущие к нему, что кажется скучным.
Вот некоторые более соответствующий код:
/* solve button action listener/handler */
solveButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
/* solve the sudoku and display it
* in solve table.
*/
fieldToTable(field, solveTable); //put sudoku field in display
try {
solve(field, 0, 0); // Solve starting at [0,0]
} catch (SolvedException d) {
/* SOLVED */
}
} //End of action handler
}); // End of action listener
/* Done with solve button action listener */
Не могли бы вы опубликовать более соответствующий код? –
Моя первая мысль заключается в том, чтобы GUI реализовал некоторый интерфейс, который может обновить необходимую информацию, тогда ваши рекурсивные вызовы могут проходить по этому экземпляру интерфейса и вызвать метод интерфейса с соответствующей информацией (по крайней мере, с указанием местоположения ячейки и значения) –
Yassin: Just отредактированный пост с кодом, используемым в классе sudokuGUI Крикет: Мне жаль, но я ничего не понимаю. Я новичок. – yeahboy