В этой статье используется конкретный код версии Java версии игрового интерфейса Sudoku для вашей ссылки. Конкретный контент заключается в следующем
Внедрение внедрения:
Напишите описание изображения здесь
Основная функция используется для запуска программы:
пакет hlc.shudu.app; импорт hlc.shudu.src.shuduhelper; import hlc.shudu.ui.shudumainframe; открытый класс appstart {public static void main (string [] args) {shudumainframe mainframe = new Shudumainframe (); manaframe.setvisible (true); }}Основной класс форм (включая область сообщений, область времени, игровая зона):
Пакет hlc.shudu.ui; импорт java.awt.borderlayout; import java.awt.color; импорт java.awt.font; import java.awt.gridlayout; импорт java.awt.event.actionevent; импорт java.awt.event.actionlistener; импорт java.sql.time; java.text.simpledateformat; import javax.swing.icon; import javax.swing.imageicon; импорт javax.swing.jbutton; импорт javax.swing.jframe; импорт javax.swing.jlabel; импорт javax.swing.jpanel; импорт javax.javiing; импорт. javax.swing.border.titledborder;/** Судоку главная форма*/public class shudumainframe extends jframe {public static int pass = 1; // Уровень общественного статического JLABEL LBPASS; // отображать Level Lable Public Static Long OphingTime = 0; // Игрок Используйте частные Shuducanvers Panelcanvers; // Основная игровая зона общественного статического таймера UsertimeAction; /** Конструктор по умолчанию*/ public shudumainframe () {// Метод инициализации init (); // Добавить компонент addComponent (); // Добавить основную игровую зону addCanvers (); } /** Добавить основную игровую область* / private void AddCanvers () {panelCanvers = new Shuducanvers (); PanelCanvers.Setborder (новый название worledBorder («Игровая зона»); // Добавить основную игровую область в форму this.add (панель Canvers, borderlayout.center); } /** Добавить область компонента* / private void addComponent () {jpanel panelcomponent = new jpanel (); // Добавить область сообщения addPanelmsg (panelcomponent); // Добавить область времени addPaneltime (панель -компонент); // Добавить компонент в верхнюю часть формы this.add (панель component, borderlayout.north); } private void addPaneltime (JPanel PanelComponent) {jPanel paneltime = new jPanel (); paneltime.setborder (новый название workborder ("Time")); paneltime.setlayout (new Gridlayout (2, 1)); окончательный jlabel lbsystime = new jlabel (); окончательный jlabel lbusertime = new jlabel (); paneltime.add (lbsystime, borderlayout.north); paneltime.add (lbusertime, borderlayout.south); // Установить системный таймер времени SystimeAction = новый таймер (500, new ActionListener () {@Override public void actionPerformed (actionEvent e) {long timemillis = System.currentTimeMillis (); SimpleDateFormat df = new SimpleDateFormat ("yyyy-mm-dd hhh: mm: sstemtme. df.format (timemillis)); SystimeAction.Start (); USERTIMEACTION = новый таймер (1000, New ActionListener () {@Override public void actionPerformed (actionEvent e) {lbusertime.settext («Вы использовали:»+ (++ usingtime)+ "sec.");}}); usertimeaction.start (); panelcomponent.add (paneltime, borderlayout.east); } /** Добавить область сообщения* / private void addPanelmsg (jpanel panelcomponent) {// panelcomponent.setborder (new название ("Область сообщения")); panelcomponent.setlayout (new Gridlayout (1, 3)); Font Font14 = новый шрифт ("", 4, 14); Font font28 = новый шрифт ("", 2, 28); Jpanel panalmsg = new jpanel (); Panalmsg.setborder (новый название workborder ("зона сообщения")); Jlabel lbpass1 = new jlabel ("level:"); lbpass1.setfont (font14); dansemsg.add (lbpass1); // отображать количество уровней lbpass = new jlabel ("" + pass); lbpass.setforeground (color.red); lbpass.setfont (font28); dansemsg.add (lbpass); Jlabel lbpass2 = new jlabel ("off/10 уровней" всего "); lbpass2.setfont (font14); dansemsg.add (lbpass2); PanelComponent.Add (PanalMsg, Borderlayout.center); }/** Инициализация интерфейса*/private void init () {ImageICon Image = new ImageICon ("icon/icon.png"); this.seticonimage (image.getimage ()); // Установить начальный размер окна this.SetSize (515, 600); // Установить начальную позицию окна This.SetLocation (500, 50); // Установить заголовок окна This.SetTitle ("Sukua Game (от: hou longchao)"); // Установить форму, чтобы не изменить размер this.SetReSizable (false); // Установить операцию закрытия по умолчанию this.setDefaultCloseoPeration (jframe.exit_on_close); }}ГАГА ЗАЯЛА:
пакет hlc.shudu.ui; импорт hlc.shudu.src.shuduhelper; импорт java.awt.borderlayout; импорт java.awt.color; импорт java.awt.dialog.modalexclusion java.awt.event.mouselistener; import javax.swing.jdialog; импорт javax.swing.joptionpane; import javax.swing.jpanel; импорт javax.swing.border.border; импорт javax.swing.border.titledborder; Public Class Shuducaners Exclers jpanellersellerselser. клетки; // Получить судоку массив int [] [] maps = new int [9] [9]; private selectnumframe selectnum; /** Конструктор по умолчанию*/ public shuducanvers () {shudumainframe.usedtime = 0; maps = shuduhelper.getmap (); // загрузить область судоку this.setLayout (null); клетки = новый Shuducell [9] [9]; for (int i = 0; i <9; i ++) {for (int j = 0; j <9; j ++) {// this.remove (cells [i] [j]); // Создать клеточные клетки [i] [j] = new shuducell (); // Установить положения ячейки [i] [j] .setLocation (20 + i * 50 + (i / 3) * 5, 20 + j * 50 + (j / 3) * 5); if (passrole (shudumainframe.pass)) {cells [i] [j] .settext ("" + maps [i] [j]); // Установить фоновые цветные ячейки [i] [j] .setbackground (getColor (Maps [i] [j])); клетки [i] [j] .setenabled (false); клетки [i] [j] .setforeground (color.gray); } else {cells [i] [j] .AddMouseListener (это); } this.add (клетки [i] [j]); }} checkfinish (); // reloadCanvers (); } /** Проверьте, будет ли он завершен* / private void checkfinish () {for (int i = 0; i <9; i ++) {for (int j = 0; j <9; j ++) {if (! Check (i, j)) {return; }}} // Остановить пользовательский таймер shudumainframe.usertimeAction.stop (); // очистить всех слушателей ячеек clearallListener (); // Добавить один в номер проходов shudumainframe.pass += 1; if (shudumainframe.pass> 10) {int o = joptionpane .showconfirmdialog (это, «вы прошли уровень, вы начали?», "", 0); if (o == 1) {System.Exit (0); } else {shudumainframe.pass = 1; }} else {joptionpane.showmessageDialog (это, «Поздравляю с прохождением этого уровня! Время, потраченное:« + shudumainframe.usedtime + »Seconds/n скоро выйдет на следующий уровень!»); } // Обновление подсказки уровня shudumainframe.lbpass.settext ("" + shudumainframe.pass); // запустить новый уровень ReloadCanvers (); // Открыть пользовательский таймер shudumainframe.usertimeAction.start (); } / * * Проверьте ячейку на указанных координатах * / Private Booleance Check (int i, int j) {if (cells [i] [j] .getText (). Isempty ()) {return false; } for (int k = 0; k <9; k ++) {if (cells [i] [j] .getText (). equals (cells [i] [k] .getText (). trim ()) && i! = k) {return false; } if (cells [i] [j] .getText (). trim (). equals (cells [k] [j] .getText (). trim ()) && i! = k) {return false; } int ii = (i / 3) * 3 + k / 3; int jj = (j / 3) * 3 + k % 3; if (cells [i] [j] .getText (). trim (). equals (cells [ii] [jj] .getText (). trim ()) &&! (i == ii && j == jj)) {return false; }} вернуть true; } /** Перезагрузить область Sudoku* / public void reloadCanvers () {shudumainframe.usedtime = 0; я <9; i ++) {for (int j = 0; j <9; j ++) {this.remove (cells [i] [j]); // Создать клеточные клетки [i] [j] = new shuducell (); // Установить положения ячейки [i] [j] .setLocation (20 + i * 50 + (i / 3) * 5, 20 + j * 50 + (j / 3) * 5); if (passrole (shudumainframe.pass)) {cells [i] [j] .settext ("" + maps [i] [j]); // Установить фоновые цветные ячейки [i] [j] .setbackground (getColor (Maps [i] [j])); клетки [i] [j] .setenabled (false); клетки [i] [j] .setforeground (color.gray); } else {cells [i] [j] .AddMouseListener (это); } this.add (клетки [i] [j]); }} this.repaint (); checkfinish (); } / * * Случайно генерируется, отображается ли число в этой позиции * / private boolean passrole (int pass) {// todo автоматическое сгенерированное метод return math.random () * 11> pass; } /** Получить цвет на основе числа* / private color getColor (int i) {color = color.pink; Switch (i) {Case 1: Color = новый цвет (255, 255, 204); перерыв; Случай 2: цвет = новый цвет (204, 255, 255); перерыв; Случай 3: цвет = новый цвет (255, 204, 204); перерыв; Случай 4: цвет = новый цвет (255, 204, 153); перерыв; Случай 5: цвет = новый цвет (204, 255, 153); перерыв; Случай 6: цвет = новый цвет (204, 204, 204); перерыв; Случай 7: цвет = новый цвет (255, 204, 204); перерыв; Случай 8: цвет = новый цвет (255, 255, 255); перерыв; Случай 9: цвет = новый цвет (153, 255, 153); перерыв; по умолчанию: перерыв; } вернуть цвет; } @Override public void mouseClicked (mouseevent e) {// todo автоматически генерируемый метод} @override public void mousepressed (mouseevent e) {int redes = e.getmodifiers (); if ((redes & inputevent.button3_mask)! = 0) {// правой щелчок // очистить содержимое в ячейке Click ((Shuducell) e.getSource ()). setText (""); } else if ((режимы и inputevent.button1_mask)! = 0) {// левый щелчок // Если выбранное окно номера существует, уничтожьте if (selectnum! = null) {selectnum.dispece (); } // Создать новое окно выбора selectNum = new SelectNumFrame (); // установить в модальное окно selectnum.setmodal (true); // Установите положение окна выбора на мониторе SELECTNUM.SetLocation (E.GetLocationOnsCreen (). X, E.GetLocationOnsCreen (). Y); // Передайте ячейку с щелчкой в окно выбора номеров selectnum.setcell ((shuducell) e.getsource ()); // Отображение окна выбора номера SelectNum.SetVisible (true); } checkfinish (); } / * * Очистить все ячейки 'щелчок прослушивание * / private void clearalllistener () {for (int i = 0; i <9; i ++) {for (int j = 0; j <9; j ++) {cells [i] [j] .RemovemouseListener (это); }}} @Override public void mousereeleedeleadeled (mouseevent e) {// todo с генерируемым автоматическим методом} @override public void mouseEnted (mouseevent e) {// todo Auto-генерированный метод atuber witue-webene-void mouseexited (museevent e) {// todo aut-gene-gene-gene-gene-gene-gene-gene-gene-gene-gene-gene-gene-Судоку ячейка:
пакет hlc.shudu.ui; импорт java.awt.color; import java.awt.font; импорт javax.swing.jbutton; открытый класс Shuducell Extens jbutton {public shuducell () {this.setsize (50,50); Font font = новый шрифт ("", 2,24); this.setfont (font); this.setbackground (новый цвет (255,153,102)); this.setforeground (color.blue); }}Комплекс выбора номеров:
Пакет hlc.shudu.ui; импорт java.awt.color; import java.awt.window; импорт java.awt.event.inputevent; импорт java.awt.event.mouseevent; импорт java.awt.event.mouseelistener; импорт javax.swing.shutton; импорт. javax.swing.jframe; открытый класс SelectNumFrame расширяет JDialog реализует MouseListener {Private Shuducell Cell; public void setcell (shuducell cell) {this.cell = cell; } public selectnumframe () {// скрыть панель инструментов на интерфейсе this.setundecorated (true); это. setize (150, 150); this.setbackground (новый цвет (255,204,153, 123)); this.setlayout (null); addnum (); } // Добавить числа 1 ~ 9 private void addnum () {for (int i = 0; i <3; i ++) {for (int j = 0; j <3; j ++) {jbutton btn = new jbutton (); btn.setsize (50, 50); btn.setlocation (i*50, j*50); btn.settext (""+(j*3+i+1)); btn.addmouseListener (это); this.add (btn); }}} @Override public void mouseClicked (mouseevent e) {// todo с генерируемым методом atub} @override public void mousepressed (mouseevent e) {int modes = e.getmodifiers (); if ((medes & inputevent.button1_mask)! = 0) {jbutton btn = (jbutton) e.getsource (); cell.settext (btn.getText ()); } this.dispose (); } @Override public void mouserealeedEleadeedued (mouseevent e) {// todo Автогенерированный метод stub} @override public void mouseEnted (mouseevent e) {// todo Auto Generated Method Stub} Mouseexited (mouseevent e) {// todo Автогенерированный метод stub}}Полный пакет можно загрузить на GitHub: https://github.com/houlongchao/shudu.git
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.