Pengalaman sweeping swing adalah untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
Baru -baru ini, saya membuat permainan kecil setelah belajar ayunan: ranjau ranjau
1. Desain pendahuluan
2. Implementasi
Bahkan, inti dari menyelesaikan game ini terletak pada memanipulasi array. Kode utama di bawah ini adalah Main.java:
Paket pertama; impor java.awt.color; import java.awt.dimension; impor java.awt.font; import java.awt.gridlayout; import java.awt.image; import java.awt.toolkit; import java.awt.datatransfer.awt.toolkit; java.awt.datatransfer.awt.toolkit; java.awt.event.ActionListener; impor java.awt.event.mouseevent; impor java.awt.event.mouselistener; import java.io.bufferedreader; impor java.io.bufferedwriter; impor java.io.ioEcception; impor java.io.ininputer; java.net.serversocket; impor java.net.socket; impor java.sql.drivermanager; impor java.sql.sqlexception; impor java.util.hashset; impor java.util.set; impor java.util.util.uuid; impor javax.swing; impor java.util.util.uuid; impor javax.swing. javax.swing.jframe; import javax.swing.jlabel; impor javax.swing.jmenu; import javax.swing.jmenubar; import javax.swing.jmenuitem; impor javax.swing.joptionpane; impor javax.swing.timer; com.mysql.jdbc.statement; kelas publik utama memperluas jframe mengimplementasikan ActionListener, MouseListener { / *** yijian* / private static final long serialversionuid = 1l; // Deklarasi Parameter Awal JMenuitem JMinew, JMISAVE, JMiopen, Jmiexit, JMichuji, Jmizhongji, JMigaoji, JMishowinfo, JMiziding; Toolkit toolkit = toolkit.getDefaultToolKit (); // Dapatkan toolkit default. Clipboard clipboard = toolkit.getSystemClipboard (); // Dapatkan instance dari System Calibrate // sebagai antarmuka ke alat clipboard yang disediakan oleh platform asli. // Dua Ikon Ikon Imageicon = ImageIcon baru ("g: //eclipse-workspace//classtest_thundergame//mine.png"); ImageIcon icon1 = ImageIcon baru ("g: //eclipse-workspace//classtest_thundergame//flag.png"); Private static int num = 1; // num ini adalah nomor guntur, Anda dapat menulis program untuk mengubah // snum final static private = 9; // snum ini adalah jumlah ubin ranjau, Anda dapat menulis program untuk mengubah jbutton pribadi [] [] jb; private int [] [] peta; bendera boolean [] []; bendera boolean [] []; int couttime; // menyatakan koneksi objek koneksi con; // driver name string driver = "com.mysql.jdbc.driver"; // url: arahkan ke nama basis data yang akan diakses string url = "jdbc: mysql: // localhost: 3306/testsql3"; // MySQL Konfigurasi Pengguna Pengguna Pengguna = "Root"; // kata sandi string kata sandi = "huang"; Publik Main (int snum, int mines) {// Main Interface Constructor Settitle ("Mine-Sheeping"); // Jumlah awal guntur num = tambang; JMenubar greenbar = jmenubar baru (); // menu wadah greenbar.setopaque (true); greenbar.setBackground (warna baru (250, 250, 250)); greenbar.setPreferredSize (dimensi baru (800, 28)); greenbar.setfont (font baru (font.dialog_input, font.italic, 16)); // menu jmenu filemenu1 = jmenu baru ("game"); Jmenu filemenu2 = jmenu baru ("kesulitan"); Jmenu filemenu3 = jmenu baru ("bantuan:"); greenbar.add (filemenu1); greenbar.add (filemenu2); greenbar.add (jMishowInfo = filemenu3); fileMenu1.setFont (font baru (font.dialog_input, font.italic, 16)); fileMenu2.setFont (font baru (font.dialog_input, font.italic, 16)); fileMenu3.setFont (font baru (font.dialog_input, font.italic, 16)); // item menu filemenu1.add (jminew = jMenuitem baru ("game baru")); filemenu1.add (jMISAVE = jMenuitem baru ("versi peringkat")); filemenu1.add (jmiziding = jMenuitem baru ("custom")); filemenu1.addseparator (); filemenu1.add (jmiExit = jMenuitem baru ("keluar")); filemenu2.add (jmichuji = jMenuitem baru ("junior")); filemenu2.add (jmizhongji = jMenuitem baru ("Intermediate")); filemenu2.add (jmigaoji = jMenuitem baru ("lanjutan")); filemenu3.add (jMishowInfo = jMenuitem baru ("Informasi Pengembang")); Jminew.addactionListener (ini); Jmiexit.addactionlistener (ini); JMISAVE.AddActionListener (ini); JMISAVE.AddActionListener (ini); JMishowInfo.addactionListener (ini); Jmichuji.addactionlistener (ini); Jmizhongji.addactionlistener (ini); Jmigaoji.addactionlistener (ini); Jmiziding.addactionListener (ini); Jmiziding.setFont (font baru (font.dialog_input, font.italic, 16)); JMishowInfo.setfont (font baru (font.dialog_input, font.italic, 16)); Jminew.setfont (font baru (font.dialog_input, font.italic, 16)); JMISAVE.SETFONT (font baru (font.dialog_input, font.italic, 16)); Jmiexit.setfont (font baru (font.dialog_input, font.italic, 16)); Jmichuji.setfont (font baru (font.dialog_input, font.italic, 16)); Jmizhongji.setfont (font baru (font.dialog_input, font.italic, 16)); Jmizhongji.setfont (font baru (font.dialog_input, font.italic, 16)); Jmigaoji.setfont (font baru (font.dialog_input, font.italic, 16)); setjmenubar (greenbar); Ikon Image = toolkit.getDefaultToolKit (). GetImage ("g: //eclipse-workspace//classtest_thundergame//mine.png"); seticonimage (ikon); setLayout (gridlayout baru (snum, snum)); jb = jbutton baru [snum] [snum]; peta = int baru [snum] [snum]; // Peta tombol ke dalam array flags = boolean baru [map.length] [peta [0] .length]; // simpan bendera tabel rekaman = boolean baru [peta.length] [peta [0] .length]; // simpan penghitungan tabel rekaman int = 0; // bleigh while (count <num) {int i = (int) (math.random () * map.length); // hang int j = (int) (math.random () * peta [0] .length); // lie if (peta [i] [j]! = ' *') {Peta [i] [j] = ' *; Count ++; }} untuk (int i = 0; i <snum; i ++) {for (int j = 0; j <snum; j ++) {jb [i] [j] = new jbutton (); jb [i] [j] .setname (i + "_" + j); JB [i] [j] .setBackground (warna baru (220, 220, 220)); jb [i] [j] .setFont (font baru (font.dialog_input, font.italic, 10)); jb [i] [j] .addactionListener (ini); jb [i] [j] .addmouseListener (this); // tambahkan pendengar mouse add (jb [i] [j]); }} // timer jlabel ststus = new jlabel (); Jlabel Times = JLabel baru (); Jlabel miao = jlabel baru (); tambahkan (ststus); tambahkan (kali); Times.setText ("0"); miao.setText ("detik"); settimer (waktu); couttime = 0; ststus.setText ("waktu:"); greenbar.add (ststus); greenbar.add (Times, right_alignment); greenbar.add (miao, right_alignment); Times.setFont (font baru (font.dialog_input, font.italic, 16)); ststus.setfont (font baru (font.dialog_input, font.italic, 16)); miao.setfont (font baru (font.dialog_input, font.italic, 16)); setsize (700, 700); setLocationRelativeto (null); setVisible (true); // setDefaultCloseOperation (jframe.exit_on_close); setDefaultCloseOperation (Dispose_on_Close); // Tambahkan baris ini} private void settimer (jlabel time) {// waktu mendengarkan final jlabel vartime = waktu; Timer timeAction = timer baru (1000, actionListener () {public void actionPerformed (actionEvent e) {couttime ++; vartime.setText (""+couttime);}}); timeAction.start (); } private void showTheclick (int x, int y) {// klik event implementasi if (peta [x] [y] == '*') {jb [x] [y] .seticon (ikon); showmines (); } else {int count1 = 0; untuk (int a = x - 1; a <= x+1; a ++) {for (int b = y - 1; b <= y+1; b ++) {if (! (a <0 || b <0 || b> = peta [0] .length || a> = map.length) && peta [a] [b] == '*) Count1); }} flag [x] [y] = true; if (count1 == 0) {jb [x] [y] .setBackground (color.white); } else {jb [x] [y] .setText (count1 + ""); jb [x] [y] .setFont (font baru (font.dialog_input, font.italic, 20)); jb [x] [y] .setBackground (color.white); } if (count1 == 0) {for (int i = x - 1; i <= x+1; i ++) {for (int j = y - 1; j <= y+1; j ++) {if (! (i <0 || j <0 || i> = peta. == false) {showtheclick (i, j); // loop traversal} else {// mencegah akses berulang}}}}}}}}}} private void showmines () {// tampilkan semua guntur // metode yang dihasilkan auto-{iT; i = peta. peta.length; //}}} // Akhiri game int b = joptionpane.showoptiondialog (null, "oh, itu meledak, game baru?", "Kotak konfirmasi", joptionpane.yes_no_option, joptionpane.question_message, null, null, null); if (b == 1) {System.exit (0); } else {setVisible (false); Main baru (MAP.Length, num); }} @Override public void actionPerformed (actionEvent e) {// event listening processing // TODO Metode yang dihasilkan secara otomatis Stub if (e.getSource () == JMinew) {setVisible (false); Main baru (MAP.Length, num); } lain if (e.getSource () == jMiSave) {showrange (); } lain jika (e.getSource () == jmiExit) {System.exit (0); } lain jika (e.getSource () == jMiziding) {new selfMines (); } lain jika (e.getSource () == jmichuji) {setVisible (false); Main baru (5,3); } lain jika (e.getSource () == jMishowInfo) {myInfo baru (); } lain jika (e.getSource () == jmizhongji) {setVisible (false); Main baru (10,10); } lain jika (e.getSource () == jmigaoji) {setVisible (false); Main baru (20,60); } else {objek obj = e.getSource (); int x, y; String [] strm = ((jbutton) obj) .getName (). Split ("_"); x = integer.parseint (strm [0]); y = integer.parseint (strm [1]); Showtheclick (X, Y); checkSuccess (); // periksa apakah game sudah lebih dari}} private void showrange () {// tunjukkan peringkat baru shiyan13 (peta.length); } private void checkSuccess () {// Tentukan apakah game sudah lebih // TODO Metode yang dihasilkan secara otomatis stub int count = Map.length * peta [0] .length; untuk (int i = 0; i <map.length; i ++) {for (int j = 0; j <map [0] .length; j ++) {if (flags [i] [j] == true) count--; }} if (count == num) {string uuid = uuid.randomuuid (). ToString (). ReplaceAll ("-", ""); // Tabel ini secara unik menunjukkan uuid // tautan ke database dan menyimpan data waktu coba {class.forname (driver); con = (koneksi) driverManager.getConnection (url, pengguna, kata sandi); String sql; if (! con.isclosed ()) {// ta.settext (""); System.out.println ("Menghubungkan Database berhasil"); // Buat Pernyataan Objek Pernyataan = (pernyataan) con.createStatement (); // if (map.length == 10) {// // Pernyataan SQL untuk dieksekusi SQL = "INSERT INTO MIDDLEREARE (USERID, USERTIME) VALUES (/" " + UUID +"/"," + COUTTIME + ");"; Pernyataan.ExecuteUpdate (SQL); con.close (); } else if (map.length == 5) {sql = "masukkan ke dalam rang (userid, usertime) nilai (/" " + uuid +"/"," + couttime + ");"; Pernyataan.ExecuteUpdate (SQL); con.close (); } else if (map.length == 20) {sql = "masukkan ke dalam toprange (userid, usertime) value (/" " + uuid +"/"," + couttime + ");"; Pernyataan.ExecuteUpdate (SQL); con.close (); } else {}} catch (classNotFoundException e) {// Database Driver Class Class Exception Handling System.out.println ("error"); e.printstacktrace (); } catch (sqlexception e) {// system.out.println (e); System.err.println ("Data tidak ditemukan"); // int i = joptionpane.showconfirmDialog (null, "Pernyataan SQL yang Anda masukkan tidak benar", // "tidak ditemukan", joptionpane.yes_no_option); } catch (Exception e) {E.PrintStackTrace (); } akhirnya {System.out.println ("Database berhasil mendapatkan data!"); } int i = jOptionPane.showoptiondialog (null, "Selamat telah lulus tes, apakah Anda melanjutkan?", "Kotak Konfirmasi", joptionpane.yes_no_option, joptionpane.question_message, null, null, null); // ststus.settext ("halo"+i); if (i == 1) {System.exit (0); } else {setVisible (false); Main baru (MAP.Length, num); }}} @Override public void mouseclicked (mouseEvent e) {// TODO Metode yang dihasilkan otomatis Stub int C = e.getButton (); if (c == mouseEvent.button3) {objek obj1 = e.getSource (); int x, y; String [] strm = ((jbutton) obj1) .getName (). Split ("_"); x = integer.parseint (strm [0]); y = integer.parseint (strm [1]); if (flag [x] [y] == false && flags [x] [y] == false) {// Masukkan flag jb [x] [y] .seticon (icon1); flag [x] [y] = true; } else {jb [x] [y] .seticon (null); flag [x] [y] = false; } } } @Override public void mousePressed(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 }}3. Sadarilah efeknya
4. Implementasi Fungsi Utama
(1) Fungsi Sapu Tambang Dasar (pembakaran tambang acak, penyisipan bendera)
(2) Anda dapat memilih Kesulitan (3) Anda dapat menyesuaikan jumlah tambang menyapu dan jumlah kisi (4) waktu yang ditetapkan (5) Tambahkan fungsi peringkat (penyimpanannya dalam database sesuai waktu)
(6) Mengemasnya ke dalam file EXE (dengan JRE) dapat dijalankan di beberapa platform. (Gunakan exe4j untuk mengemas paket JAR)
Jika Anda memerlukan kode sumber, Anda dapat meninggalkan email! Ini adalah kode sumber: permainan sapu-tambang
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.