เมื่อฉันกำลังจะเรียนรู้การเขียนโปรแกรม Javagui ฉันเขียนเกมเล็ก ๆ
ปัจจุบันมีการใช้งานเฉพาะรุ่นสแตนด์อโลนเท่านั้นและทุกอย่างก็ผลิตได้ง่ายๆ หากคุณมีคำถามใด ๆ โปรดให้คำแนะนำกับฉัน
กระดานหมากรุกและหมากรุกที่นี่ไม่ใช่รูปภาพและพวกเขาทั้งหมดถูกวาดโดยใช้กราฟิกใน Java
ซอร์สโค้ดถูกส่งไปยัง GitHub คลิกที่นี่เพื่อไปยังซอร์สโค้ด gitHub
รายการหมวดหมู่หมากรุก Gozi ต่อไปนี้:
นำเข้า java.awt.borderlayout; นำเข้า java.awt.color; นำเข้า java.awt.container; นำเข้า java.awt.graphics; นำเข้า java.awt.event.mousevent; นำเข้า Java.awt.event.mouselistener; javax.swing.joptionpane; คลาสสาธารณะ Fiveinarow ขยาย JFrame ใช้ Mouselistener {Vector V = New Vector (); // ข้อมูลหมากรุกทั้งหมดสำหรับแต่ละขั้นตอนเวกเตอร์ขาว = เวกเตอร์ใหม่ (); // ข้อมูลหมากรุกสีขาวเวกเตอร์สีดำ = เวกเตอร์ใหม่ (); // ข้อมูลหมากรุกสีดำบูลีน B; // ใช้เพื่อตัดสินว่าธงขาวหรือหมากรุกสีดำ int whitecount, blackcount; // คำนวณจำนวนขั้นตอนหมากรุกเสียใจ int w = 25; // ระยะห่างขนาด int px = 100, py = 100; // ขนาดของบอร์ด int pxw = px + w, pyw = py + w; ความกว้าง int = W * 16, ความสูง = W * 16; int vline = width + px; // ความยาวของเส้นแนวตั้ง int hline = ความสูง + py; // ความยาวของเส้นแนวนอน/***วิธีการก่อสร้าง*/สาธารณะ Fiveinarow () {super ("Stand-Alone Goji"); this.setDefaultCloseOperation (jframe.exit_on_close); // ปิดปุ่มคอนเทนเนอร์ con = this.getContentPane (); Con.setLayout (New BorderLayout ()); this.addmouselistener (นี่); // เพิ่มฟัง this.setsize (600, 600); // ตั้งค่าขนาดแบบฟอร์ม this.setbackground (color.orange); this.setVisible (จริง); }/*** วาดกระดานหมากรุกและชิ้นหมากรุก* @param e*/สีโมฆะสาธารณะ (กราฟิก g) {g.clearrect (0, 0, this.getWidth (), this.getheight ()); // ล้าง artboard g.setcolor (color.black); // G.DrawString ("Gozi Gozi Mini Game, คลิกขวาที่จะเสียใจหมากรุกยินดีต้อนรับที่จะใช้", 180, 70); สำหรับ (int i = 0; i <15; i ++) {g.drawline (pxw+i*w, py, pxw+i*w, hline); // แต่ละเส้นแนวนอนและแนวตั้ง g.drawline (px, pyw+i*w, vline, pyw+i*w); } สำหรับ (int x = 0; x <v.size (); x ++) {string str = (สตริง) v.get (x); สตริง tmp [] = str.split ("-"); int a = integer.parseint (tmp [0]); int b = integer.parseint (tmp [1]); a = a * w + px; b = b * w + py; if (x%2 == 0) {g.setColor (color.white); } else {g.setColor (color.black); } G.Fillarc (AW/2, BW/2, W, W, 0, 360); }} @Override โมฆะสาธารณะ mouseclicked (MouseEvent E) {ถ้า (e.getButton () == e.button1) {int x = e.getx (); int y = e.gety (); x = (x - x % w) + (x % w> w / 2? w: 0); y = (y - y % w) + (y % w> w / 2? w: 0); x = (x - px) / w; y = (y - py) / w; if (x> = 0 && y> = 0 && x <= 16 && y <= 16) {ถ้า (v.contains (x+"-"+y)) {system.out.println ("มีหมากรุกอยู่แล้ว!"); } else {v.add (x+"-"+y); this.repaint (); if (v.size () % 2 == 0) {black.add (x+"-"+y); this.victory (x, y, black); // system.out.println ("หมากรุกสีดำ"); } else {white.add (x+"-"+y); this.victory (x, y, สีขาว); // system.out.println ("หมากรุกสีขาว"); } // system.out.println (e.getx ()+"-"+e.gety ()); }} else {// system.out.println (e.getx ()+"-"+e.gety ()+"|"+x+"-"+y+"/t เกินขอบเขต"); }} if (e.getButton () == e.button3) {// เมธอดเพื่อคลิกขวาที่ chess // system.out.println ("คลิกขวาที่หมากรุก-หมากรุก"); ถ้า (v.isempty ()) {joptionpane.showmessagedialog (นี่ "ไม่มีหมากรุกที่จะเสียใจ"); } else {ถ้า (v.size () % 2 == 0) {// ตัดสินว่ามันเป็นหมากรุกสีขาวที่เสียใจกับหมากรุกหรือหมากรุกสีดำที่เสียใจกับหมากรุก Blackcount ++; if (blackcount> 3) {joptionpane.showmessagedialog (นี่ "หมากรุกสีดำเสียใจ 3 ขั้นตอน"); } else {v.remove (v.lastelement ()); this.repaint (); }} else {Whitecount ++; ถ้า (Whitecount> 3) {Joptionpane.showMessagedialog (นี่ "หมากรุกสีดำเสียใจ 3 ขั้นตอน"); } else {v.remove (v.lastelement ()); this.repaint (); }}}}}}} / ** * วิธีการตัดสินชัยชนะ * @param x * @param y * @param มี * / Void Private Void Victory (int x, int y, เวกเตอร์มี) {int cv = 0; // จำนวนชิ้นหมากรุกในทิศทางแนวตั้ง int ch = 0; // จำนวนชิ้นหมากรุกแนวนอน int ci1 = 0; // จำนวนชิ้นหมากรุกในทิศทางความชัน 1 int ci2 = 0; // จำนวนชิ้นหมากรุกในทิศทางความลาดชัน 2 // คำนวณจำนวนชิ้นหมากรุกในทิศทางแนวนอนสำหรับ (int i = 1; i <5; i ++) {ถ้า (มี (มี. } else {break; }} สำหรับ (int i = 1; i <5; i ++) {if (catching.contains ((xi)+"-"+y)) {ch ++; } else {break; }} // คำนวณจำนวนชิ้นส่วนหมากรุกในทิศทางแนวตั้งสำหรับ (int i = 1; i <5; i ++) {ถ้า (มี (condent.contains (x+"-"+(y+i))) {cv ++; } else {break; }} สำหรับ (int i = 1; i <5; i ++) {if (catching.contains (x+"-"+(yi))) {cv ++; } else {break; }} // คำนวณจำนวนชิ้นหมากรุกในทิศทาง 45 °ที่เอียงสำหรับ (int i = 1; i <5; i ++) {ถ้า (มี (conditure.contains ((x+i)+"-"+(y+i))) {ci1 ++; } else {break; }} สำหรับ (int i = 1; i <5; i ++) {if (catching.contains ((xi)+"-"+(yi))) {ci1 ++; } else {break; }} // คำนวณจำนวนชิ้นหมากรุกในทิศทางความลาดชัน 135 °สำหรับ (int i = 1; i <5; i ++) {ถ้า (มี (condent.contains ((x+i)+"-"+(yi))) {ci2 ++; } else {break; }} สำหรับ (int i = 1; i <5; i ++) {if (catching.contains ((x+i)+"-"+(yi))) {ci2 ++; } else {break; }} สำหรับ (int i = 1; i <5; i ++) {if (catching.contains ((xi)+"-"+(y+i))) {ci2 ++; } else {break; }} if (ch> = 4 || cv> = 4 || ci1> = 4 || ci2> = 4) {system.out.println (v.size ()+"ขั้นตอน"); ถ้า (v.size () % 2 == 0) {// ตัดสินว่าเป็นสีดำหรือสีขาวที่จะชนะ joptionpane.showmessagedialog (null, "ดำ"); } else {joptionpane.showMessageDialog (null, "White"); } this.v.clear (); this.black.clear (); this.white.clear (); this.repaint (); }} @Override โมฆะสาธารณะ MouseEndered (MouseEvent E) {// todo วิธีการที่สร้างขึ้นอัตโนมัติ stub} @Override โมฆะสาธารณะ mouseexited (MouseEvent E) {// toDo วิธีการที่กำหนดอัตโนมัติ Mousepressed (MouseEvent E) {// TODO วิธีการสร้างอัตโนมัติ stub} @Override โมฆะสาธารณะ mouserleased (MouseEvent E) {// วิธีการที่สร้างอัตโนมัติPS: ฉันวางแผนที่จะเขียน Goji เวอร์ชันออนไลน์อื่น ๆ แต่น่าเสียดายที่ฉันไม่รู้เกี่ยวกับอินเทอร์เน็ตใน Java มากนัก ฉันต้องเรียนสักพักก่อนที่จะดำเนินการต่อและทดสอบผลการเรียนรู้ส่วนตัวของฉัน
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น