ตัวอย่างในบทความนี้แบ่งปันรหัสเฉพาะของเกม Java Sudoku สำหรับการอ้างอิงของคุณ เนื้อหาเฉพาะมีดังนี้
เกม Sudoku ที่ฉันเขียนด้วยตัวเองมีทั้งหมด 9 ระดับและรหัสมีดังนี้:
1. คลาส Doshudu ใช้เพื่อสร้างอาร์เรย์ Sudoku
นำเข้า java.util.random; ชั้นเรียนสาธารณะ Doshudu { / ** * @param args * / โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// todo วิธีการที่สร้างขึ้นอัตโนมัติ stub int [] [] เซลล์ = newshudu (); // cells = changeshu (เซลล์, 9); สำหรับ (int k = 0; k <9; k ++) {สำหรับ (int i = 0; i <9; i ++) {system.out.print (เซลล์ [k] [i]); } system.out.println (); }} สาธารณะคงที่ int [] [] newshudu () {int [] [] เซลล์ = new int [] [] {{1,2,3,4,4,5,6,7,7,8,9}, {4,5,6,7,9,9,1,1,2,3}, {7,8,9,9,9,9,5,5,9,9,9,9,9,5,9,1,1,1,1,1,1,2,5,9, {2,3,1,5,6,4,8,9,7,7}, {5,6,4,8,9,7,2,3,1}, {8,9,7,2,3,1,5,6,4,4}, {3,1,2,6,4,5,9,8,8,8,8,8,5,5,5,5,5,5,5,5,5,5,4,5,4,5,4,5s {9,7,8,3,1,2,6,4,5}}}; int counth = new random (). nextint (10); สำหรับ (int k = 0; k <counth; k ++) {cells = linetolie (เซลล์); } int count = 0; สำหรับ (int k = 0; k <12; k ++) {count = new random (). nextint (9); เซลล์ = Changeline (เซลล์นับ); } int counth2 = new random (). nextint (10); สำหรับ (int k = 0; k <counth2; k ++) {เซลล์ = linetolie (เซลล์); } เซลล์ส่งคืน; } สาธารณะคงที่ int [] [] changeline (int [] [] เซลล์, int m) {// line และการแลกเปลี่ยนแถว int n = m; int [] temp = new int [9]; n = ((m+3)> = 9)? (m+3-9): m+3; สำหรับ (int j = 0; j <9; j ++) {temp [j] = เซลล์ [m] [j]; เซลล์ [m] [j] = เซลล์ [n] [j]; เซลล์ [n] [j] = temp [j]; } เซลล์ส่งคืน; } สาธารณะคงที่ int [] [] linetolie (int [] [] เซลล์) {// line และคอลัมน์แลกเปลี่ยน int temp = 0; สำหรับ (int j = 0; j <9; j ++) {สำหรับ (int k = j+1; k <9; k ++) {temp = เซลล์ [k] [j]; เซลล์ [k] [j] = เซลล์ [j] [k]; เซลล์ [j] [k] = อุณหภูมิ; }} เซลล์ส่งคืน; - 2. คลาสการทำงานของอินเตอร์เฟส
นำเข้า Java.awt.Button; นำเข้า Java.awt.Color; นำเข้า java.awt.flowlayout; นำเข้า Java.awt.Font; นำเข้า Java.awt.Gridlayout; นำเข้า Java.awt.Point; นำเข้า Java.awt.TextField; นำเข้า java.awt.event.mouseadapter; นำเข้า java.awt.event.mousevent; นำเข้า java.awt.event.mousemotionadapter; นำเข้า java.awt.event.textevent; นำเข้า java.awt.event.textListener; นำเข้า java.util.random; นำเข้า Javax.swing.jframe; นำเข้า Javax.swing.jlabel; นำเข้า Javax.swing.jpanel; นำเข้า com.sun.awt.awtutilities; ชั้นสาธารณะ Sudoku ขยาย JFrame {Final Private TextField [] [] txtGame; int คงที่ num = 20; // จำนวนช่องว่างเปล่า int int guan = 5; // จำนวนของระดับคงที่ int add = 5; // จำนวนช่องว่างที่เพิ่มขึ้นหลังจากเลิกใช้โมฆะคงที่สาธารณะหลัก (สตริง [] args) {sudoku shudu = sudoku ใหม่ (); } สาธารณะ sudoku () {// เลย์เอาต์เริ่มต้นของการตั้งค่า jframe และการฟัง txtGame = New TextField [9] [9]; // สร้าง 81 TextField Objects Doshudu Shudu = ใหม่ doshudu (); int [] [] cells = shudu.getshudu (); // รับอาร์เรย์ sudoku สุดท้าย jpanel jpl = new jpanel (); // สร้างวัตถุ JPanel สุดท้าย int spacenum = num; // spacenum หมายถึงจำนวนฟิลด์ข้อความว่างเปล่า int [9] [9]; // คำตอบของ sudoku array system.arraycopy (เซลล์, 0, cellan, 0, cells.length); // คำตอบมาจากสำเนาอาร์เรย์ sudoku ที่สร้างขึ้นสำหรับ (int i = 0; i <9; i ++) {// พิมพ์คำตอบจากคอนโซลสำหรับ (int j = 0; j <9; } system.out.println (); } // สิ้นสุดการพิมพ์ this.setDefaultCloseOperation (this.exit_on_close); this.setsize (600, 600); this.setResizable (เท็จ); this.settitle ("Dark Horse-Li Germany-Suku Game 9 ระดับ"); สำหรับ (int i = 0; i <9; i ++) {สำหรับ (int j = 0; j <9; j ++) {txtgame [i] [j] = New TextField (); // ตั้งค่าสีพื้นหลัง textfield ถ้า ((i <3 && j <3) || (i <6 && i> = 3 && j> = 3 && j <6) || (i <9 && i> = 6 && j> = 6 && j <9)) } if ((i <6 && i> = 3 && j <3) || (i <3 && j> = 6 && j <9) || (i <9 && i> = 6 && j> = 3 && j <6)) {txtgame [i] [j] } if ((i <9 && i> = 6 && j <6)) {txtGame [i] [j] .setBackground (color.green); } if ((i <9 && i> = 6 && j <6)) {txtGame [i] [j] .setBackground (color.green); } if ((i <9 && i> = 6 && j <3) || (i <3 && j> = 3 && j <6) || (i <6 && i> = 3 && j <9 && j> = 6)) {txtgame [i] [j] } txtGame [i] [j] .setFont (ตัวอักษรใหม่ ("กล่องโต้ตอบ", Font.Center_Baseline, 60)); // ตั้งค่าขนาดตัวอักษร txtGame [i] [j] .settext (integer.toString (เซลล์ [i] [J]) txtgame [i] [j] .setenabled (เท็จ); txtgame [i] [j] .setvisible (จริง); jpl.add (txtgame [i] [j]); jpl.setVisible (จริง); }} int สุดท้าย [] [] temparray = new int [spacenum] [2]; สุดท้าย JFrame JFM = new JFrame ("เลือกหมายเลข"); // ยกเลิกชื่อ JFrame JFM.Setundecorated (จริง); // เพิ่มฟังก์ชั่นการลาก jframe จุดสิ้นสุด = จุดใหม่ (); jfm.addmouselistener (ใหม่ mouseadapter () {โมฆะสาธารณะ mousepressed (MouseEvent E) {origin.x = e.getx (); orign.y = e.gety ();}}); jfm.addmousemotionlistener (ใหม่ mousemotionadapter () {โมฆะสาธารณะ mousedragged (MouseEvent E) {point p = jfm.getLocation (); jfm.setLocation (px + e.getx () - Origin.x, py + E.gety () // ตั้งค่า jframe เป็น awtutilities โปร่งแสง SetWindowOpacity (JFM, 0.7F); JPANEL JPNL สุดท้าย = JPANEL ใหม่ (ใหม่ gridlayout (3, 3)); JFM.SetLayout (NULL); JFM.Setsize (190, 200); JFM.SetResizable (เท็จ); JPNL.SetBounds (0, 0, 190, 120); JFM.SetResizable (เท็จ); สำหรับ (int i = 0; i <spacenum; i ++) {// set textfield ให้ว่างเปล่าตามจำนวนฟิลด์ข้อความว่างเปล่าที่ต้องเป็น int rand1 = ใหม่สุ่ม (). nextint (9); int final int rand2 = ใหม่สุ่ม (). nextint (9); Temparray [i] [0] = Rand1; Temparray [i] [1] = Rand2; txtgame [rand1] [rand2] .settext (""); if (((rand1 <3 && rand2 <3) || (rand1 <6 && rand1> = 3 && rand2> = 3 && rand2 <6) || (rand1 <9 && i> = 6 && rand2> = 6 && rand2 <9)) } if (((rand1 <6 && rand1> = 3 && rand2 <3) || (rand1 <3 && rand2> = 6 && rand2 <9) || (rand1 <9 && rand1> = 6 && rand2> = 3 && rand2 <6)) {txtgame [rand1] [rand2] } if (((rand1 <9 && rand1> = 6 && rand2 <3) || (rand1 <9 && rand1> = 6 && rand2 <3) || (rand1 <1 <10 && rand1> = 6 && rand2 <3) || (rand1 <100 3 && rand2> = 3 && rand2 <6) {txtGame [rand1] [rand2] .setbackground (color.pink); } txtGame [rand1] [rand2] .addmouselistener (ใหม่ mouseadapter () {โมฆะสาธารณะ mouseclicked (MouseEvent MouseEvent) {jfm.getContentpane () removeAll (); ปุ่มใหม่ (f + 1) + ""); วิธีการที่สร้างขึ้นอัตโนมัติ txtgame [Rand1] [Rand2] .settext (btn.getlabel () + txtgame [Rand1] [Rand2]. getText ()); btndel.setbackground (color.red); // todo วิธีการที่สร้างขึ้นอัตโนมัติ txtgame [Rand1] [Rand2] .setlext (""); txtGame [rand1] [rand2] .addTextListener (textListener ใหม่ () {// เพิ่มผู้ฟังลงในฟิลด์ข้อความที่ว่างเปล่าเปรียบเทียบคำตอบหลังจากการเปลี่ยนแปลงค่าให้พิมพ์ "ดี" ในคอนโซลหากคำตอบทั้งหมดถูกต้อง spacenum; u ++) {ถ้า (txtgame [temparray [u] [0]] [temparray [u] [1]] .getText ()) .equals (จำนวนเต็ม jpl.removeall (); Mouseclicked (MouseEvent E) {// toDo วิธีการที่สร้างขึ้นอัตโนมัติ sudoku.his.dispose (); jpl.updateui (); txtgame [rand1] [rand2] .setenabled (จริง); } this.add (jpl); this.setVisible (จริง); -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น