Как я могу ускорить рекурсию в графическом интерфейсе Minesweeper? ⇐ JAVA
Как я могу ускорить рекурсию в графическом интерфейсе Minesweeper?
Я работаю над игрой-сапером в Java Swing, она работает правильно, однако, когда я проверяю нули, соседствующие с другими 0, программа становится невероятно медленной (от 20 до 23 секунд). Я пытаюсь получить рекурсивный доступ каждую кнопку JButton с помощью поиска в глубину. Есть ли способ сделать это быстрее?
Ссылка на графический интерфейс Сапера Эта ссылка показывает проблему. Всякий раз, когда я нажимаю 0 в сетке, моей программе требуется слишком много времени, чтобы щелкнуть каждую соседнюю кнопку. Я пробовал использовать стек и очередь, и они оба работают примерно одинаково медленно. Мой основной класс занимается логикой бомбы, а мой класс GUIArray занимается созданием графического интерфейса, а в методе findZero класса GUIArray происходит рекурсия (метод doClick() — это рекурсивный вызов). Могу ли я как-нибудь оптимизировать это, чтобы нажатие кнопки с 0 было почти мгновенным? Спасибо за любую помощь!
импортировать javax.swing.*; импортировать java.awt.*; импортировать java.awt.event.ActionEvent; импортировать java.awt.event.ActionListener; импортировать java.awt.event.MouseAdapter; импортировать java.awt.event.MouseEvent; общественный класс GUIArray { частный статический окончательный int ROWS = 14; частный статический финал int COLS = 18; частный статический окончательный int WIDTH = 1000; частный статический окончательный int HEIGHT = 800; частный статический INT BombCount = 0; частный статический окончательный JLabel countLabel = новый JLabel(Integer.toString(bombCount)); общественный интервал я = 0; общественный интервал n = 0; public static void main(String[] args) { Шрифт f1 = новый шрифт(Font.DIALOG, Font.BOLD, 14); //цвет, когда кнопка была нажата Цвет color2 = новый цвет(153, 102, 0); Цвет color3 = новый цвет (102, 51, 0); Кнопка JButton[][] = новая кнопка JButton[ROWS][COLS]; Панель JPanel = новый JPanel (новый GridLayout (ROWS, COLS)); //panel.add(countLabel); for (int i = 0; i
Я работаю над игрой-сапером в Java Swing, она работает правильно, однако, когда я проверяю нули, соседствующие с другими 0, программа становится невероятно медленной (от 20 до 23 секунд). Я пытаюсь получить рекурсивный доступ каждую кнопку JButton с помощью поиска в глубину. Есть ли способ сделать это быстрее?
Ссылка на графический интерфейс Сапера Эта ссылка показывает проблему. Всякий раз, когда я нажимаю 0 в сетке, моей программе требуется слишком много времени, чтобы щелкнуть каждую соседнюю кнопку. Я пробовал использовать стек и очередь, и они оба работают примерно одинаково медленно. Мой основной класс занимается логикой бомбы, а мой класс GUIArray занимается созданием графического интерфейса, а в методе findZero класса GUIArray происходит рекурсия (метод doClick() — это рекурсивный вызов). Могу ли я как-нибудь оптимизировать это, чтобы нажатие кнопки с 0 было почти мгновенным? Спасибо за любую помощь!
импортировать javax.swing.*; импортировать java.awt.*; импортировать java.awt.event.ActionEvent; импортировать java.awt.event.ActionListener; импортировать java.awt.event.MouseAdapter; импортировать java.awt.event.MouseEvent; общественный класс GUIArray { частный статический окончательный int ROWS = 14; частный статический финал int COLS = 18; частный статический окончательный int WIDTH = 1000; частный статический окончательный int HEIGHT = 800; частный статический INT BombCount = 0; частный статический окончательный JLabel countLabel = новый JLabel(Integer.toString(bombCount)); общественный интервал я = 0; общественный интервал n = 0; public static void main(String[] args) { Шрифт f1 = новый шрифт(Font.DIALOG, Font.BOLD, 14); //цвет, когда кнопка была нажата Цвет color2 = новый цвет(153, 102, 0); Цвет color3 = новый цвет (102, 51, 0); Кнопка JButton[][] = новая кнопка JButton[ROWS][COLS]; Панель JPanel = новый JPanel (новый GridLayout (ROWS, COLS)); //panel.add(countLabel); for (int i = 0; i
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение