Доброго времени суток! Нужна помощь в доработке логики игры и редактор уровней, который считывает и записывает уровни в файл.
Класс GraphicApp, содержит UI часть игры и следующие объекты:
XButton buttons[][] = new XButton[row][col]; - инициализация массива кнопок;
byte[][] checksumm = new byte[row][col]; - инициализация массива, содержащего вид рельса для данной кнопки.
int[][] checks = new int[row][col]; - инициализация массива, содержащего вариант статуса (в классе Xbutton будет подробнее)
Методы:
SetGuess() - создает маршрут, в котором checksumm - содержит номер картинки рельса, checks - доступность рельса(по умолчанию: не доступно - 0; доступно -1)
GraphicApp() конструктор класс;
CreateFrame() - создает окно;
InitPanel() - отвечает за сетку кнопок;
CreateRightPanel() - правая панель(боковая);
InitButtons() - создает массив кнопок; (кнопки с i=0 и j=0 не доступны(count поставил туда временно))
Solve() - проверяет совпадает ли номер картинки рельса, заданного массивом checksumm (переменная num) с выбранным номером картинки рельса (value) и статус (TO_GUESS - для решения, GIVEN - дано системой и др). Должен вывести true - если нет неправильных/не выбранных(у которых статус TO_GUESS) рельсов.
D() - вспомогательный метод для CreateRightPanel(), чтобы не писать много кода.
show() - здесь все ясно.
Класс Xbutton, на котором основываются кастомные кнопки:
Xbutton() - конструктор, в котором содержатся картинки рельс, переменные xi и jy - значения строки и столбца соответственно.
Далее геттеры и сеттеры.
ActionPeformed() - прослшивает кнопку, и если на нее нажали меняет в switch value на +1 и сравнивает value с num.
SetVariable(номер нужной картинки рельса, доступность рельса, строка, столбец) - используется в InitButtons(), чтобы положить в buttons[][] массив checksumm и checks, проверяет статус доступности рельса и ставит ему из CellStatus определенный статус.
SetButtons() - ставит картинку неюзабельному рельсу и другие юзабельные рельсы красит либо в желтый(неправильный статус), либо зеленый(правильный статус).
Слушатель клавиатуры аналогичен ActionPerformed.
Класс Logic - проверяет Solve() в GraphicApp, и если он true - выводит уведомление о победе.
Класс ComponentDrag - вспомогательный и работает криво(он нужен для перетаскивания мышкой рельсов с правой (боковой) панели в центральную панель с сеткой кнопок).
Класс Starter - для показа главного окна.
Остальные классы для резерва (мало используются).
Проблема - ячейки не сохраняют свой статус, а постоянно приводятся в изначальное состояние + если у value убрать static - он будет при любых решениях 0/
| Гарантия на работу | 1 год |
| Средний балл | 4.52 |
| Стоимость | Назначаете сами |
| Эксперт | Выбираете сами |
| Уникальность работы | от 70% |