Dieser Artikel teilt den spezifischen Code der Java -Version der Implementierung von Sudoku Game Interface als Referenz. Der spezifische Inhalt ist wie folgt
Implementierungsrenderungen:
Schreiben Sie hier eine Bildbeschreibung
Die Hauptfunktion wird verwendet, um das Programm zu starten:
Paket hlc.shudu.app; importieren hlc.shudu.src.shuduhelper; import hlc.shudu.ui.shudumainframe; public class Appstart {public static void main (String [] args) {shudumainframe Mainframe = new Shudumainframe (); mainframe.setvisible (true); }}Hauptformularklasse (einschließlich Nachrichtenbereich, Zeitbereich, Spielbereich):
Paket hlc.shudu.ui; import Java.awt.borderLayout; Import Java.awt.color; Import Java.awt.font; Import Java.awt.gridLayout; Import Java.awt.Event.ActionEvent; Java.Text.SimpledateFormat; Import Javax.swing.icon; Import Javax.swing.imageicon; Import Javax.swing.jbutton; Import Javax.swing.jframe import Javax.swing.jlabel; javax.swing.border.titledBorder;/** Sudoku Hauptform*/Public Class Shudumainframe erweitert JFrame {public static int pass = 1; // Level Public static Jlabel LBPass; // Zeigen Sie das lable öffentliche statische Long -Gebrauch des Levels an = 0; // Spieler Private Shucanvers PanelCanvers verwenden; // Hauptspielbereich öffentlicher statischer Timer Usertimereaction; /** Standardkonstruktor*/ public shudumainframe () {// Initialisierungsmethode init (); // Komponente hinzufügen addComponent (); // Hauptspielfläche hinzufügen addCanvers (); } /** Hauptspielbereich hinzufügen* / private void addCanvers () {panelCanvers = new Shucanvers (); panelCanvers.setBorder (neuer Titel ("Game Area")); // Fügen Sie den Hauptspielbereich dem Formular This.add (panelCanvers, borderLayout.Center) hinzu; } /** Komponentenbereich hinzufügen* / private void addComponent () {jpanel panelComponent = new JPanel (); // Message Area Addpanelmsg (Panel Component) hinzufügen; // Zeitbereich Addpaneltime (PanelComponent) hinzufügen; // Komponente oben in der Form des Formulars in diesem. } private void addpaneltime (jpanel panelComponent) {jpanel paneltime = new jpanel (); Paneltime.SetBorder (neuer Titel ("Zeit"); Paneltime.SetLayout (neuer GridLayout (2, 1)); endgültig jlabel lbSystime = new JLabel (); endgültig JLabel lBUSERTime = new JLabel (); Paneltime.add (lbSystime, BorderLayout.North); Paneltime.add (lbuSertime, borderLayout.South); // System Time Timer Timer SystimeAction = New Timer (500, New ActionListener () {@Override public void ActionPerformed (ActionEvent e) {Long Timemillis = System.CurrentTimemillis (); SimpleDateFormat Df = new SimpledateFormat ("YyyyyyyyyyyMm-dddddh: Mm: SSSYTIMT"); df.format (Timemillis)); systimereaction.start (); UserStimeAction = New Timer (1000, new ActionListener () {@Override public void actionPerformed (actionEvent e) {lBuSertime.setText ("Sie haben verwendet:"+ (++ Gebraucht)+ "Sec.");}}); UserTimeAction.Start (); PanelComponent.Add (Paneltime, BorderLayout.East); } /** Nachrichtenbereich hinzufügen* / private void addpanelmsg (jpanel panelComponent) {// PanelComponent.SetBorder (neuer Titelborder ("Nachrichtenbereich"); PanelComponent.SetLayout (neuer GridLayout (1, 3)); Schriftart Font14 = neue Schriftart ("", 4, 14); Schriftart font28 = neue Schriftart ("", 2, 28); Jpanel panelmsg = new Jpanel (); panelmsg.setBorder (neuer Titel ("Nachrichtenbereich")); JLabel lbpass1 = new JLabel ("Level:"); lbpass1.setfont (font14); panelmsg.add (lbpass1); // Zeigen Sie die Anzahl der Ebenen an lbpass = new JLabel ("" + pass); lbpass.setforenground (color.red); lbpass.setfont (font28); panelmsg.add (lbpass); JLabel lbpass2 = neuer JLabel ("Off/10 Level insgesamt"); lbpass2.setfont (font14); panelmsg.add (lbpass2); panelComponent.add (panelmsg, borderLayout.Center); }/** Schnittstelleninitialisierung*/private void init () {imageicon image = new imageicon ("icon/icon.png"); this.seticonimage (image.getImage ()); // Setzen Sie die anfängliche Fenstergröße. SetSize (515, 600); // Setzen Sie die Anfangsposition des Fensters this.setLocation (500, 50); // Setzen Sie den Fenstertitel this.settitle ("Sukua -Spiel (von: hou longchao)"); // Setzen Sie das Formular so, dass die Größe nicht geändert wird. // Setzen Sie den Standard -Schließvorgang this.setDefaultCloseOperation (jframe.exit_on_close); }}Spielfläche Leinwand:
Paket hlc.shudu.ui; import hlc.shudu.src.shuduhelper; import java.awt.borderlayout; import Java.awt.color; importieren java.awt.dialog.modaleExclusionStype; java.awt.event.mouselistener; import javax.swing.jdialog; import Javax.swing.joptionpane; import Javax.swing.jpanel; Javax.swing.border.border; Shuducell [] [] Zellen; // Holen Sie sich das Sudoku -Array int [] [] maps = new int [9] [9]; private SelectNumframe Selectnum; /** Standardkonstruktor*/ public shucanvers () {shudumainframe.UTEDTIME = 0; Maps = Shuduhelper.getMap (); // den Sudoku -Bereich this.setLayout (null) laden; Zellen = neuer Shuducell [9] [9]; für (int i = 0; i <9; i ++) {für (int j = 0; j <9; j ++) {// this.remove (Zellen [i] [j]); // Zellzellen erstellen [i] [j] = neuer Shuducell (); // Positionszellen einstellen [i] [j] .Setlocation (20 + i * 50 + (i / 3) * 5, 20 + J * 50 + (j / 3) * 5); if (passROLE (shudumainframe.pass)) {Zellen [i] [j] .setText ("" + maps [i] [j]); // Hintergrundfarbe Zellen setzen [i] [j] .Setbackground (getColor (Karten [i] [j])); Zellen [i] [j] .setenabled (false); Zellen [i] [j] .setforenground (color.gray); } else {cells [i] [j] .addmouselistener (this); } this.add (Zellen [i] [j]); }} checkfinish (); // reloadCanvers (); } /** Prüfen, ob es abgeschlossen ist }}} // Stoppen Sie den Benutzer -Timer shudumainframe.ustimeAction.stop (); // Alle Zellhörer löschen ClearAllListener (); // Fügen Sie eine der Passnummer Shudumainframe hinzu. Pass += 1; if (shudumainframe.pass> 10) {int o = joptionpane .showConFirMdialog (dies, "Sie haben das Level bestanden, haben Sie von vorne angefangen?", "", 0); if (o == 1) {System.exit (0); } else {shudumainframe.pass = 1; }} else {joptionpane.showMessagedialog (dies, "Herzlichen Glückwunsch zur Übergabe dieser Stufe! Zeit, die verbracht wurde:" + shudumainframe. } // Aktualisieren Sie die Ebene Eingabeaufforderung shudumainframe.lbpass.setText ("" + shudumainframe.pass); // eine neue Ebene reloadCanvers () starten; // Öffnen Sie den Benutzer -Timer Shudumainframe.UsertimeAction.start (); } / * * Überprüfen Sie die Zelle an den angegebenen Koordinaten * / private boolean Check (int i, int j) {if (Zellen [i] [j] .GIETTEXT (). Isempty ()) {return false; } für (int k = 0; k <9; k ++) {if (Zellen [i] [j] .GETTEXT (). Equals (Zellen [i] [k] .GETTEXT (). TRIM ()) && i! = k) {return false; } if (Zellen [i] [j] .GIETTEXT (). TRIM (). Equals (Zellen [k] [j] .GETTEXT (). TRIM ()) && i! = k) {return false; } int ii = (i / 3) * 3 + k / 3; int jj = (j / 3) * 3 + k % 3; if (Zellen [i] [j] .GETTEXT (). TRIM (). Equals (Zellen [ii] [jj] .GETTEXT (). TRIM ()) &&! (I == ii && j == jj)) {return false; }} return true; } /** Reload Sudoku Area* / public void reloadCanvers () {shudumainframe.UTEDTIME = 0; i <9; i ++) {für (int j = 0; j <9; j ++) {this.remove (Zellen [i] [j]); // Zellzellen erstellen [i] [j] = neuer Shuducell (); // Positionszellen einstellen [i] [j] .Setlocation (20 + i * 50 + (i / 3) * 5, 20 + J * 50 + (j / 3) * 5); if (passROLE (shudumainframe.pass)) {Zellen [i] [j] .setText ("" + maps [i] [j]); // Hintergrundfarbe Zellen setzen [i] [j] .Setbackground (getColor (Karten [i] [j])); Zellen [i] [j] .setenabled (false); Zellen [i] [j] .setforenground (color.gray); } else {cells [i] [j] .addmouselistener (this); } this.add (Zellen [i] [j]); }} this.Repaint (); checkfinish (); } / * * Zufällig generieren Sie, ob die Nummer in dieser Position angezeigt wird } /** Farbe basierend auf der Nummer* / private Farbe getColor (int i) {color color = color.pink; Switch (i) {Fall 1: color = neue Farbe (255, 255, 204); brechen; Fall 2: Farbe = neue Farbe (204, 255, 255); brechen; Fall 3: Farbe = neue Farbe (255, 204, 204); brechen; Fall 4: Farbe = neue Farbe (255, 204, 153); brechen; Fall 5: Farbe = neue Farbe (204, 255, 153); brechen; Fall 6: Farbe = neue Farbe (204, 204, 204); brechen; Fall 7: Farbe = neue Farbe (255, 204, 204); brechen; Fall 8: Farbe = neue Farbe (255, 255, 255); brechen; Fall 9: Farbe = neue Farbe (153, 255, 153); brechen; Standard: Break; } return color; } @Override public void mouseclicked (MouseEvent e) {// Todo automatisch generierte Methode Stub} @Override public void mousepression (mouseEvent e) {int modes = e.getModifiers (); if ((modi & inputEvent.button3_mask)! } else if ((modi & inputEvent.button1_mask)! } // Erstellen Sie ein neues Auswahlfenster selectNum = new SelectNumFrame (); // auf das modale Fenster einstellen auswählen. SetModal (true); // Setzen Sie die Position des Auswahlfensters im Monitor SelectNum.SetLocation (E.getLocationOnscreen (). X, E.GetLocationOnscreen (). Y); // Übergeben Sie die geklickte Zelle an das Fenster der Zahlenauswahl aus. // Zeigen Sie das Fenster zur Auswahl der Nummer an. } checkfinish (); } / * * Alle Zellen löschen 'Klicken Sie auf Hören * / private void clearAllListener () {für (int i = 0; i <9; i ++) {für (int j = 0; j <9; j ++) {Zellen [i] [j] .RemoveMouselistener (this); } } } @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub }}Sudoku -Zelle:
Paket hlc.shudu.ui; import Java.awt.color; Import Java.awt.font; Import Javax.swing.jbutton; öffentliche Klasse Shuducell erweitert Jbutton {public shuducell () {this.setsize (50,50); Schriftart = neue Schriftart ("", 2,24); this.setfont (Schriftart); this.Setbackground (neue Farbe (255.153,102)); this.setforenground (color.blue); }}Zahlenauswahlfeld:
Paket hlc.shudu.ui; import Java.awt.color; Import Java.awt.window; Import Java.awt.event.inputEvent; javax.swing.jframe; public class Selectnumframe erweitert JDialog implementiert Mouselistener {private Shuducell -Zelle; public void setCell (Shuducell -Zelle) {this.cell = cell; } public selectNumframe () {// Die Symbolleiste in der Schnittstelle ausblenden. this.setsize (150, 150); this.Setbackground (neue Farbe (255,204, 153, 123)); this.setLayout (null); addnum (); } // Nummern 1 ~ 9 private void addnum () {für (int i = 0; i <3; i ++) {für (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 (dies); this.add (btn); }}} @Override public void mouseclicked (MouseEvent e) {// Todo automatisch generierter Methode Stub} @Override public void mousepressioned (MouseeEvent e) {int modi = e.getModifiers (); if ((modi & inputEvent.button1_mask)! = 0) {jbutton btn = (jbutton) e.getSource (); cell.setText (btn.getText ()); } this.dispose (); } @Override public void mouSerelest (MouEevent e) {// Todo Auto-Generated-Methode Stub} @Override public void mousteered (MouseEvent e) {// toDo auto-generierter Methode Stub} @override öffentlich void mousevented (Mousevent e) { / / todo auto-generated methode-@ouvel @ / / todo auto-generated method modus @ouvel { / / todo auto-generated methode methode (mousevent e) { / todo auto-kaut-modus @ouvern {{ / todo auto auto-modal Mouseexited (MouseeEvent e) {// Todo automatisch generierter Methode Stub}}Das komplette Paket kann auf Github heruntergeladen werden: https://github.com/houlongchao/shudu.git
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.