บทความก่อนหน้านี้พูดถึง Java ที่ใช้สองเกมหมากรุก Gozi (2) วาดกระดานหมากรุกและกระดานหมากรุกได้ถูกวาด ต่อไปเราจำเป็นต้องใช้ฟังก์ชั่นควบคุมฟังก์ชั่นหลัก:
1) เลือกชิ้นหมากรุก
2) วาดชิ้นหมากรุก
3) ตัดสินผู้ชนะ
4) แลกเปลี่ยนหมากรุก
ตระหนักถึงส่วนของการวาดชิ้นหมากรุกก่อน
-
ก่อนอื่นกำหนดคลาสหมากรุก คลาสนี้มีสองแอตทริบิวต์: สีของชิ้นส่วน (0- หมายถึงสีดำและ 1- หมายถึงสีขาว) และไม่ว่าจะย้าย (ฉันวางแผนที่จะใช้อาร์เรย์สองมิติเพื่อเก็บข้อมูลการเลี้ยวชิ้นหมากรุก)
Chessman.java
แพ็คเกจ xchen.test.simplegobang; หมากรุกระดับสาธารณะ {สี int ส่วนตัว; // 1-white, 0-black private boolean วาง = false; หมากรุกสาธารณะ (สี int, วางบูลีน) {this.color = color; this.placed = วาง; } บูลีนสาธารณะ getPlaced () {return วาง; } โมฆะสาธารณะ setplaced (วางบูลีน) {this.placed = วาง; } public int getColor () {return color; } โมฆะสาธารณะ setColor (สี int) {this.color = color; - จากนั้นเราได้วาดส่วนรหัสของกระดานหมากรุกในส่วนก่อนหน้าและเพิ่มรหัสสำหรับการวาดชิ้นหมากรุก ฉันใช้หมากรุกสองชิ้น (หนึ่งสีขาวและสีดำหนึ่งสีตั้งอยู่ในกระดานหมากรุก [8, 8], [7, 7]) เพื่อทดสอบรหัสสำหรับการวาดชิ้นหมากรุก
drawchessboard.java
แพ็คเกจ xchen.test.simplegobang; นำเข้า java.awt.graphics; นำเข้า java.awt.graphics2d; นำเข้า Java.awt.RadialgradientPaint; นำเข้า java.awt.image; นำเข้า java.awt.toolkit; นำเข้า Java.awt.Color; นำเข้า Javax.swing.jpanel; Public Class Drawchessboard ขยาย JPanel {สุดท้าย int คงที่สีดำ = 0; int คงสุดท้าย int สีขาว = 1; Public Int ChessColor = Black; ภาพสาธารณะ Boardimg; แถว int ส่วนตัวสุดท้าย = 19; Chessman [] [] chessstatus = New Chessman [แถว] [แถว]; Public Drawchessboard () {boardimg = toolkit.getdefaulttoolkit (). getImage ("res/drawable/chessboard2.png"); if (boardimg == null) system.err.println ("png ไม่มีอยู่"); // ทดสอบการวาดหมากรุกส่วนหนึ่งหมากรุกหมากรุก = นักชิมใหม่ (0, จริง); Chessstatus [7] [7] = Chessman; Chessman Chessman2 = New Chessman (1, True); Chessstatus [8] [8] = Chessman2; // ทดสอบ Draw Chessman Part Simple} @Override Void PaintComponent (กราฟิก g) {// วิธีการที่สร้างอัตโนมัติแบบอัตโนมัติ super.paintComponent (G); int imgwidth = boardimg.getheight (นี่); int imgheight = boardimg.getWidth (นี่); int fwidth = getWidth (); int fheight = getheight (); int x = (fwidth-imgwidth)/2; int y = (fheight-imgheight)/2; G.Drawimage (Boardimg, X, Y, Null); int margin = x; int span_x = imgwidth/rows; int span_y = imgheight/rows; // วาดเส้นแนวนอนสำหรับ (int i = 0; i <rows; i ++) {g.drawline (x, y+i*span_y, fwidth-x, y+i*span_y); } // วาดเส้นแนวตั้งสำหรับ (int i = 0; i <rows; i ++) {g.drawline (x+i*span_x, y, x+i*span_x, fheight-y); } // วาดชิ้นหมากรุกสำหรับ (int i = 0; i <rows; i ++) {สำหรับ (int j = 0; j <rows; j ++) {ถ้า (chessstatus [i] [j]! int pos_x = x+i*span_x; int pos_y = y+j*span_y; int chessman_width = 20; Float Radius_b = 20; Float Radius_W = 50; float [] fractions = new float [] {0f, 1f}; java.awt.color [] colors_b = ใหม่ java.awt.color [] {color.black, color.white}; สี [] colors_w = สีใหม่ [] {color.white, color.black}; สีรัศมี if (chessstatus [i] [j] .getColor () == 1) {system.out.println ("วาดหมากรุกสีขาว"); สี = ใหม่ radialgradientPaint (pos_x-chessman_width/2f, pos_y-chessman_width/2f, radius_w*2, เศษส่วน, colors_w); } else {system.out.println ("วาดหมากรุกสีดำ"); สี = ใหม่ radialgradientPaint (pos_x-chessman_width/2f, pos_y-chessman_width/2f, radius_b*2, เศษส่วน, colors_b); } ((graphics2d) g) .setPaint (สี); ((graphics2d) g) .filloval (pos_x-chessman_width/2, pos_y-chessman_width/2, chessman_width, chessman_width); - รหัสโมดูลหลักยังคงไม่เปลี่ยนแปลง
Main.java
แพ็คเกจ xchen.test.simplegobang; นำเข้า Java.awt.Container; นำเข้า Javax.swing.jframe; นำเข้า xchen.test.simplegobang.drawchessboard; ชั้นเรียนสาธารณะ Main ขยาย JFrame {Private Drawchessboard Drawchessboard; Public Main () {drawchessboard = new Drawchessboard (); // ชื่อเฟรม Settitle ("Stand-Alone Goji"); container containerPane = getContentPane (); containerpane.add (drawchessboard); } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {main m = new main (); M.Setsize (800, 800); M.SetVisible (จริง); -เรียกใช้!
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น