รูปแบบเศษส่วนอยู่รอบตัวเราในธรรมชาติ เหมือนกิ่งเล็กๆ ที่ดึงออกมาจากใบของใบเฟิร์นที่มีลักษณะคล้ายใบเฟิร์นนั่นเอง หรือก้อนกรวดมักจะมีรูปร่างคล้ายภูเขา! ดังนั้น แนวคิดเรื่องการทำซ้ำของลวดลายขนาดเล็กเพื่อสร้างลวดลายขนาดใหญ่นี้จึงเรียกว่าต้นไม้เศษส่วน ในการเขียนโปรแกรมหลาม เรายังสามารถสร้างต้นไม้เศษส่วนโดยใช้โมดูลต่างๆ ที่มีอยู่
การใช้โมดูล pygame
โมดูลนี้มีฟังก์ชันที่จำเป็นในการสร้างต้นไม้เศษส่วน ในที่นี้ ขั้นแรกเราจะกำหนดขนาดเลย์เอาต์ของหน้าจอ จากนั้นกำหนดความลึกที่รูปแบบจะทำซ้ำเอง การเรียกซ้ำมีบทบาทสำคัญที่นี่ เนื่องจากเราจะทำซ้ำรูปแบบเดิมซ้ำแล้วซ้ำเล่าจนถึงระดับความลึกที่กำหนด
ตัวอย่าง
import pygame, math pygame.init() screen = pygame.display.set_mode((750, 650)) pygame.display.set_caption("Fractal Tree") display = pygame.display.get_surface() def drawTree(a, b, pos, deepness): if deepness: c = a + int(math.cos(math.radians(pos)) * deepness * 10.0) d = b + int(math.sin(math.radians(pos)) * deepness * 10.0) pygame.draw.line(display, (127,255,0), (a, b), (c, d), 1) drawTree(c, d, pos - 25, deepness - 1) drawTree(c, d, pos + 25, deepness- 1) def process(event): if event.type == pygame.QUIT: exit(0) drawTree(370, 650, -90, 10) pygame.display.flip() while True: process(pygame.event.wait())
ผลลัพธ์
การเรียกใช้โค้ดด้านบนทำให้เราได้ผลลัพธ์ดังต่อไปนี้:
การใช้เต่า
การใช้โมดูล Turtle เราสามารถทำตามแนวทางที่คล้ายกันได้ ที่นี่โปรแกรมเต่าเริ่มวาดกิ่งก้านของต้นไม้เป็นลวดลายซ้ำๆ โดยเพียงแค่เปลี่ยนทิศทางการวาด เรากำหนดมุมที่ฟังก์ชันจะทำซ้ำ จากนั้นเราจะได้ต้นไม้ที่สมบูรณ์
ตัวอย่าง
import turtle def tree(Length,n): if Length > 10: n.forward(Length) n.right(25) tree(Length-15,n) n.left(50) tree(Length-15,n) n.right(25) n.backward(Length) def function(): n = turtle.Turtle() data = turtle.Screen() n.left(90) n.up() n.backward(100) n.down() n.color("green") tree(85,n) data.exitonclick() function()
ผลลัพธ์
การเรียกใช้โค้ดด้านบนทำให้เราได้ผลลัพธ์ดังต่อไปนี้: