Artikel ini membagikan kode spesifik dari versi Java dari implementasi antarmuka game Sudoku untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
Rendering Implementasi:
Tulis deskripsi gambar di sini
Fungsi utama digunakan untuk memulai program:
Paket hlc.shudu.app; import hlc.shudu.src.shuduhelper; import hlc.shudu.ui.shudumainframe; kelas publik appstart {public static void main (string [] args) {shudumainframe mainframe = shudumainframe baru (); mainframe.setVisible (true); }}Kelas Formulir Utama (termasuk area pesan, area waktu, area permainan):
Paket hlc.shudu.ui; impor java.awt.borderlayout; import java.awt.color; import java.awt.font; java.awt.gridlayout; import java.awt.event.actionevent; impor java.awt.event.actionliserener; aksivent; java.text.simpledateFormat; impor javax.swing.icon; import javax.swing.imageicon; import javax.swing.jbutton; impor javax.swing.jframe; impor javax.swing.jlabel; impor javax.swing.jpanel; impor javax.swing.jlabel; impor javax.swing.jpanel; impor javax.swing. javax.swing.border.titledborder;/** bentuk utama sudoku*/kelas publik shudumainframe memperluas jframe {public static int pass = 1; // level public static jlabel lbpass; // Tampilkan level level level static lama digunakan = 0; // pemain menggunakan panelcanvers shuducanvers pribadi; // Area Game Utama Publik Statis Timer UserTimeAction; /** Konstruktor default*/ shudumainframe publik () {// Metode inisialisasi init (); // tambahkan komponen addComponent (); // Tambahkan area game utama AddCanvers (); } /** Tambahkan area game utama* / private void addCanvers () {PanelCanvers = new shuducanvers (); PanelCanvers.SetBorder (Titledborder baru ("Area Game")); // Tambahkan area game utama ke bentuk this.add (PanelCanvers, borderlayout.center); } /** Tambahkan area komponen* / private void addComponent () {jpanel panelComponent = new jpanel (); // Tambahkan area pesan addPanelMSG (PanelComponent); // Tambahkan area waktu addPanelTime (PanelComponent); // tambahkan komponen ke bagian atas bentuk ini. } private void addPaneltime (jpanel panelComponent) {jpanel paneltime = new jpanel (); PanelTime.setBorder (judul baru ("waktu")); PanelTime.setLayout (GridLayout baru (2, 1)); final jlabel lbsyTime = jLabel baru (); final jlabel lbusertime = jlabel baru (); Paneltime.add (lbsystime, borderlayout.north); Paneltime.add (lbusertime, borderlayout.south); // Set system time timer Timer sysTimeAction = new Timer(500, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { long timeMillis = System.currentTimeMillis(); SimpleDateFormat df = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); lbSysTime.setText(" System time: " + df.format (timeMillis));}}); Systimeaction.start (); userTimeAction = timer baru (1000, ActionListener baru () {@Override public void actionPerformed (actionEvent e) {lbusertime.setText ("Anda telah menggunakan:"+ (++ digunakan)+ "sec.");}}); userTimeAction.start (); PanelComponent.Add (Paneltime, BorderLayout.East); } /** Tambahkan area pesan* / private void addPanelMSG (jPanel PanelComponent) {// PanelComponent.setBorder (judul baru ("Area Pesan")); PanelComponent.SetLayout (GridLayout baru (1, 3)); Font font14 = font baru ("", 4, 14); Font font28 = font baru ("", 2, 28); Jpanel panelmsg = jpanel baru (); panelmsg.setborder (judul baru ("area pesan")); Jlabel lbpass1 = jlabel baru ("level:"); lbpass1.setfont (font14); panelmsg.add (lbpass1); // Tampilkan jumlah level lbpass = jLabel baru ("" + pass); lbpass.setForeGround (Color.Red); lbpass.setfont (font28); panelmsg.add (lbpass); Jlabel lbpass2 = jLabel baru ("off/10 level total"); lbpass2.setFont (font14); panelmsg.add (lbpass2); PanelComponent.Add (PanelMSG, BorderLayout.Center); }/** Inisialisasi antarmuka*/private void init () {ImageIcon Image = new ImageIcon ("Ikon/icon.png"); this.seticonimage (image.getImage ()); // atur ukuran jendela awal this.setsize (515, 600); // atur posisi awal jendela this.setlocation (500, 50); // atur judul jendela this.settitle ("Sukua Game (oleh: Hou Longchao)"); // atur formulir untuk tidak mengubah ukuran this.setresible (false); // Atur operasi tutup default this.setDefaultCloseOperation (jframe.exit_on_close); }}Canvas Area Game:
Paket hlc.shudu.ui; impor hlc.shudu.src.shuduhelper; impor java.awt.borderlayout; impor java.awt.color; import java.awt.dialog.modalexclusion; java.awt.event.mouselistener; impor javax.swing.jdialog; impor javax.swing.joptionpane; impor javax.swing.jpanel; impor javax.swing.border.border; impor javax.swing.border.titledborder; Kelas publik Shuducanerenerenererenererenererenerenerenerenerenerenerenererenerenerenererenerenererenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenererenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenenereenerenerenerenerenerenerenerenerenereneirahurahanenahurahan memberd Sel shuducell [] []; // Dapatkan sudoku array int [] [] peta = int new [9] [9]; SelectNumFrame Private SelectNum; /** Konstruktor default*/ public shuducanvers () {shudumainframe.usedtime = 0; peta = shuduhelper.getMap (); // Muat area Sudoku this.setLayout (null); sel = Shuducell baru [9] [9]; untuk (int i = 0; i <9; i ++) {for (int j = 0; j <9; j ++) {// this.remove (sel [i] [j]); // Buat sel sel [i] [j] = shuducell baru (); // atur sel posisi [i] [j] .setlocation (20 + i * 50 + (i / 3) * 5, 20 + j * 50 + (j / 3) * 5); if (passrole (shudumainframe.pass)) {sel [i] [j] .setText ("" + peta [i] [j]); // atur sel warna latar belakang [i] [j] .setBackground (getColor (peta [i] [j])); sel [i] [j] .setenabled (false); sel [i] [j] .setForeground (color.gray); } else {sel [i] [j] .addmouseListener (ini); } this.add (sel [i] [j]); }} checkFinish (); // ReloadCanvers (); } /** Periksa apakah itu selesai* / private void checkFinish () {for (int i = 0; i <9; i ++) {for (int j = 0; j <9; j ++) {if (! Check (i, j)) {return; }}} // Hentikan timer pengguna shudumainframe.userTimeAction.stop (); // Bersihkan semua pendengar sel ClearAllListener (); // tambahkan satu ke nomor pass shudumainframe.pass += 1; if (shudumainframe.pass> 10) {int o = jOptionPane .showconfirmDialog (ini, "Anda telah lulus level, apakah Anda sudah mulai lagi?", "", 0); if (o == 1) {System.exit (0); } else {shudumainframe.pass = 1; }} else {joptionpane.showmessagealog (ini, "Selamat telah melewati level ini! Waktu yang dihabiskan:" + shudumainframe.usedtime + "detik/n akan segera memasuki level berikutnya!"); } // Perbarui level prompt shudumainframe.lbpass.setText ("" + shudumainframe.pass); // Mulai level baru reloadCanvers (); // buka timer pengguna shudumainframe.userTimeAction.start (); } / * * Periksa sel pada koordinat yang ditentukan * / periksa boolean pribadi (int i, int j) {if (sel [i] [j] .getText (). IsEmpty ()) {return false; } untuk (int k = 0; k <9; k ++) {if (sel [i] [j] .getText (). sama (sel [i] [k] .getText (). trim ()) && i! = k) {return false; } if (sel [i] [j] .getText (). trim (). sama (sel [k] [j] .getText (). trim ()) && i! = k) {return false; } int ii = (i / 3) * 3 + k / 3; int jj = (j / 3) * 3 + k % 3; if (sel [i] [j] .getText (). trim (). sama dengan (sel [ii] [jj] .getText (). trim ()) &&! (i == ii && j == jj)) {return false; }} return true; } /** Reload Sudoku Area* / public void reloadCanvers () {shudumainframe.usedtime = 0; I <9; i ++) {for (int j = 0; j <9; j ++) {this.remove (sel [i] [j]); // Buat sel sel [i] [j] = shuducell baru (); // atur sel posisi [i] [j] .setlocation (20 + i * 50 + (i / 3) * 5, 20 + j * 50 + (j / 3) * 5); if (passrole (shudumainframe.pass)) {sel [i] [j] .setText ("" + peta [i] [j]); // atur sel warna latar belakang [i] [j] .setBackground (getColor (peta [i] [j])); sel [i] [j] .setenabled (false); sel [i] [j] .setForeground (color.gray); } else {sel [i] [j] .addmouseListener (ini); } this.add (sel [i] [j]); }} this.repaint (); checkfinish (); } / * * Hasilkan secara acak apakah nomor tersebut ditampilkan dalam posisi ini * / private boolean passrole (int pass) {// TODO METODE AUTO-EKSITEGITED RETTOM MATH.RANDOM () * 11> Pass; } /** Dapatkan warna berdasarkan nomor* / private color getColor (int i) {color color = color.pink; switch (i) {case 1: color = warna baru (255, 255, 204); merusak; case 2: warna = warna baru (204, 255, 255); merusak; Kasus 3: Warna = Warna Baru (255, 204, 204); merusak; Kasus 4: Warna = Warna Baru (255, 204, 153); merusak; Kasus 5: Warna = Warna Baru (204, 255, 153); merusak; Kasus 6: Warna = Warna Baru (204, 204, 204); merusak; Kasus 7: Warna = Warna Baru (255, 204, 204); merusak; Kasus 8: Warna = Warna Baru (255, 255, 255); merusak; case 9: warna = warna baru (153, 255, 153); merusak; default: break; } return color; } @Override public void mouseclicked (mouseEvent e) {// todo Metode yang dihasilkan otomatis stub} @Override public void mousepressed (mouseEvent e) {int mode = e.getModifiers (); if ((Mode & InputEvent.button3_mask)! = 0) {// kanan-klick // Bersihkan konten pada sel klik ((shuducell) e.getSource ()). setText (""); } else if ((Mode & InputEvent.button1_mask)! = 0) {// Klik kiri // Jika jendela nomor yang dipilih ada, hancurkan if (selectnum! = null) {selectnum.dispose (); } // Buat jendela pilihan baru selectNum = selectNumFrame baru (); // atur ke jendela modal selectnum.setModal (true); // Atur posisi jendela seleksi pada monitor selectnum.setlocation (e.getLocationONScreen (). X, e.getLocationONScreen (). Y); // Lewati sel yang diklik ke jendela pemilihan nomor selectnum.setcell ((shuducell) e.getSource ()); // Tampilkan Jendela Pilihan Nomor SelectNum.SetVisible (true); } checkfinish (); } / * * Bersihkan semua sel 'klik mendengarkan * / private void clearAllListener () {for (int i = 0; i <9; i ++) {for (int j = 0; j <9; j ++) {sel [i] [j] .removemouseListener (ini); } } } @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 }}Sel Sudoku:
Paket hlc.shudu.ui; impor java.awt.color; impor java.awt.font; import javax.swing.jbutton; kelas publik shuducell memperluas jbutton {public shuducell () {this.setsize (50.50); Font font = font baru ("", 2,24); this.setfont (font); this.setBackground (warna baru (255.153.102)); this.setForeground (color.blue); }}Kotak Pemilihan Nomor:
Paket hlc.shudu.ui; impor java.awt.color; impor java.awt.window; impor java.awt.event.inputevent; import java.awt.event.mouseevent; impor java.awt.mouselistener; impor javax.swing.swing javax.swing.jframe; kelas publik selectNumFrame memperluas jDialog mengimplementasikan MouseListener {private shuducell cell; public void setCell (sel shuducell) {this.cell = sel; } public selectNumFrame () {// Sembunyikan bilah alat pada antarmuka this.setundecorated (true); this.setsize (150, 150); this.setBackground (warna baru (255.204.153, 123)); this.setLayout (null); addnum (); } // Tambahkan angka 1 ~ 9 private void addnum () {for (int i = 0; i <3; i ++) {for (int j = 0; j <3; j ++) {jbutton btn = jbutton baru (); btn.setsize (50, 50); btn.setlocation (i*50, j*50); btn.setText (""+(j*3+i+1)); btn.addmouseListener (ini); this.add (btn); }}} @Override public void mouseclicked (mouseEvent e) {// TODO Metode yang dihasilkan secara otomatis} @Override public void mousepressed (mouseEvent e) {int mode = e.getModifiers (); if ((Mode & InputEvent.button1_mask)! = 0) {jbutton btn = (jbutton) e.getSource (); cell.setText (btn.getText ()); } this.dispose (); } @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 mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void MouseExited (MouseEvent E) {// TODO Metode yang dihasilkan otomatis Stub}}Paket lengkap dapat diunduh di github: https://github.com/houlongchao/shudu.git
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.