วันนี้ฉันจะเขียนเกี่ยวกับการใช้เกล็ดหิมะ K-level Koch (ค่า k ต้องให้คุณเข้าร่วมด้วยตนเอง) สำหรับเกล็ดหิมะ Koch คืออะไรโปรด Baidu
ก่อนอื่นลองคิดเกี่ยวกับวิธีการเขียนโปรแกรมนี้ เมื่อนับ = 0 ควรเป็นสามเหลี่ยม จุดทั้งสามนี้จะถูกกำหนดตั้งแต่ต้นและการเปลี่ยนแปลงในอนาคตจะพัฒนาขึ้นอยู่กับสามจุดเหล่านี้ เมื่อไม่ใช่ 0 คุณต้องคำนวณ 9 คะแนนที่สัมพันธ์กับรูปสามเหลี่ยมนี้คือสองคะแนนในแต่ละขอบและจุดสุดยอดที่สามของสามเหลี่ยมที่สอดคล้องกับมัน
ก่อนอื่นให้เพิ่มแผงใน JFrame และเราจำเป็นต้องวาดรูปภาพบนแผงนี้
มาดูภาพนี้อีกครั้ง ภาพนี้แนะนำกระบวนการคำนวณอีกสามจุดผ่านสองจุด
ตอนนี้เริ่มวาดในแผง:
showpanel คลาสคงที่ขยาย JPanel {หมายเลข int = 0; โมฆะสาธารณะ setNumber (หมายเลข int) {this.number = จำนวน; ทาสีใหม่ (); } โมฆะสาธารณะ PaintComponent (กราฟิก g) {super.paintComponent (g); // วาดแผงด้าน int ง่าย ๆ = (int) (math.min ((int) getWidth (), (int) getheight ())*0.8); int high = (int) (side*math.cos (math.toradians (30))); จุด P1 = จุดใหม่ (getWidth () / 2, 10); จุด P2 = จุดใหม่ (getWidth () / 2 - ด้านข้าง / 2, 10 + สูง); จุด P3 = จุดใหม่ (getWidth () / 2 + ด้านข้าง / 2, 10 + สูง); playkochsnowflake (g, จำนวน, p1, p2); playkochsnowflake (g, จำนวน, p2, p3); playkochsnowflake (g, จำนวน, p3, p1); -ตอนนี้เริ่มเขียนฟังก์ชั่นเรียกซ้ำ
โมฆะสาธารณะคงที่ playkochsnowflake (กราฟิก g, หมายเลข int, จุด P1, จุด p2) {ถ้า (จำนวน == 0) {g.drawline (p1.x, p1.y, p2.x, p2.y); } else {int deltax = p2.x - p1.x; int deltay = p2.y - p1.y; จุด x = จุดใหม่ (p1.x + deltax / 3, p1.y + deltay / 3); จุด y = จุดใหม่ (p1.x + deltax * 2 /3, p1.y + deltay * 2/3); จุด y = จุดใหม่ (p1.x + deltax * 2 /3); จุด z = จุดใหม่ ((int) ((p1.x + p2.x) / 2 + math.sin (math.toradians (60)) * (p1.y - p2.y) / 3), (int) (p1.y + p2.y) / 2 + math.sin (Math.toradians (60)) playkochsnowflake (g, number - 1, p1, x); playkochsnowflake (g, number - 1, x, z); playkochsnowflake (g, number - 1, z, y); playkochsnowflake (g, number - 1, z); playkochsnowflake (g, number - 1, z); playkochsnowflake (g, number - 1, z); playkochsnowflake (g, number - 1, z); playkochsnowflake (g, number - 1, z); playkochsnowflake (g, จำนวน - 1, y, p2); -จากนั้นเพิ่ม JTextfield JTA ลงในแผงหลัก ข้อมูลที่ป้อนจะถูกส่งผ่านไปยังจำนวน ดังนั้นเพิ่มผู้ฟังลงไป หากมีอินพุตข้อมูลอยู่แล้วให้เรียกใช้ฟังก์ชัน setNumber () ในนั้นเพื่อตั้งค่าตัวแปรตัวเลข
jta.addactionListener (ใหม่ actionListener () {โมฆะสาธารณะ actionperformed (actionEvent Arg0) {spl.setNumber (integer.parseint (jta.getText ()));}}); ดังนั้นโดยรวมแล้วเสร็จแล้วและส่วนที่เหลือคือการตั้งค่าแบบฟอร์มคำตอบสั้น ๆ
นี่คือรหัส Java ที่สมบูรณ์:
นำเข้า Java.awt.BorderLayout; นำเข้า java.awt.flowlayout; นำเข้า java.awt.graphics; นำเข้า Java.awt.Point; นำเข้า java.awt.event.actionEvent; นำเข้า java.awt.event.actionListener; นำเข้า Javax.swing.jframe; นำเข้า Javax.swing.jlabel; นำเข้า Javax.swing.jpanel; นำเข้า Javax.swing.jtextfield; Snowflake ระดับสาธารณะขยาย JFrame {ส่วนตัว jtextfield jta = ใหม่ jtextfield (5); private showpanel spl = new showpanel (); showpanel คลาสคงที่ขยาย JPanel {หมายเลข int = 0; โมฆะสาธารณะ setNumber (หมายเลข int) {this.number = จำนวน; ทาสีใหม่ (); } โมฆะสาธารณะ PaintComponent (กราฟิก g) {super.paintComponent (g); // วาดแผงด้าน int ง่าย ๆ = (int) (math.min ((int) getWidth (), (int) getheight ())*0.8); int high = (int) (side*math.cos (math.toradians (30))); จุด P1 = จุดใหม่ (getWidth () / 2, 10); จุด P2 = จุดใหม่ (getWidth () / 2 - ด้านข้าง / 2, 10 + สูง); จุด P3 = จุดใหม่ (getWidth () / 2 + ด้านข้าง / 2, 10 + สูง); playkochsnowflake (g, จำนวน, p1, p2); playkochsnowflake (g, จำนวน, p2, p3); playkochsnowflake (g, จำนวน, p3, p1); } โมฆะคงที่สาธารณะ playkochsnowflake (กราฟิก g, หมายเลข int, จุด P1, จุด P2) {ถ้า (จำนวน == 0) {G.Drawline (P1.X, P1.Y, P2.X, P2.Y); } else {int deltax = p2.x - p1.x; int deltay = p2.y - p1.y; จุด x = จุดใหม่ (p1.x + deltax / 3, p1.y + deltay / 3); จุด y = จุดใหม่ (p1.x + deltax * 2 /3, p1.y + deltay * 2/3); จุด y = จุดใหม่ (p1.x + deltax * 2 /3); จุด z = จุดใหม่ ((int) ((p1.x + p2.x) / 2 + math.sin (math.toradians (60)) * (p1.y - p2.y) / 3), (int) (p1.y + p2.y) / 2 + math.sin (Math.toradians (60)) playkochsnowflake (g, number - 1, p1, x); playkochsnowflake (g, number - 1, x, z); playkochsnowflake (g, number - 1, z, y); playkochsnowflake (g, number - 1, z); playkochsnowflake (g, number - 1, z); playkochsnowflake (g, number - 1, z); playkochsnowflake (g, number - 1, z); playkochsnowflake (g, number - 1, z); playkochsnowflake (g, จำนวน - 1, y, p2); }}} Snowflake สาธารณะ () {jPanel panel = new JPanel (); panel.setLayout (ใหม่ flowlayout ()); Panel.Add (ใหม่ JLabel ("โปรดป้อนหมายเลข")); Panel.Add (JTA); เพิ่ม (spl, borderlayout.center); เพิ่ม (แผง, Borderlayout.south); jta.addactionListener (ใหม่ actionListener () {โมฆะสาธารณะ actionperformed (actionEvent Arg0) {spl.setNumber (integer.parseint (jta.getText ()));}}); } โมฆะคงที่สาธารณะหลัก (สตริง args []) {เกล็ดหิมะเกล็ดหิมะ = ใหม่เกล็ดหิมะ (); Snowflake.setsize (300, 300); Snowflake.settitle ("Snowflake"); Snowflake.SetLocationRelativeto (NULL); Snowflake.setVisible (จริง); -ภาพการทำซ้ำ:
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น