Python使用turtle庫繪制科赫雪花詳細代碼
更新時間:2024年05月23日 10:43:07 作者:南宮幻雅
科赫曲線是一種分形,其形態(tài)非常像雪花,因此又被稱作科赫雪花、雪花曲線,這篇文章主要給大家介紹了關于Python使用turtle庫繪制科赫雪花的相關資料,需要的朋友可以參考下
實驗題目:
turtle庫的使用
實驗目的:
掌握Python語言程序的基本結構
掌握turtle庫的使用方法
編寫python程序,實現以下功能:
3.1把繪制科赫雪花的代碼封裝為函數,繪制3朵以上的雪花,雪花出現的位置并不固定,并填充不同的顏色
# 導入turtle模塊 import turtle # 定義繪制科赫雪花的函數 def koch_snowflake(size, level): # 如果繪制的級數為0,直接向前走 if level == 0: turtle.forward(size) else: # 否則,按照科赫曲線的規(guī)則,分四段繪制 koch_snowflake(size / 3, level - 1) # 第一段 turtle.left(60) # 左轉60度 koch_snowflake(size / 3, level - 1) # 第二段 turtle.right(120) # 右轉120度 koch_snowflake(size / 3, level - 1) # 第三段 turtle.left(60) # 左轉60度 koch_snowflake(size / 3, level - 1) # 第四段 # 設置畫筆速度和顏色 turtle.speed(10) turtle.pencolor("black") # 隱藏海龜 turtle.hideturtle() # 提起畫筆,移動到左下角 turtle.penup() turtle.goto(-200, -100) # 放下畫筆,開始繪制 turtle.pendown() # 繪制第一朵雪花,填充紫色 turtle.fillcolor("purple") turtle.begin_fill() for i in range(3): # 三次循環(huán),繪制三條邊 koch_snowflake(200, 3) # 調用函數,繪制邊長為200,級數為3的科赫曲線 turtle.right(120) # 右轉120度,準備繪制下一條邊 turtle.end_fill() # 提起畫筆,移動到右上角 turtle.penup() turtle.goto(100, 150) # 放下畫筆,開始繪制 turtle.pendown() # 繪制第二朵雪花,填充橙色 turtle.fillcolor("orange") turtle.begin_fill() for i in range(3): koch_snowflake(100, 3) # 調用函數,繪制邊長為100,級數為3的科赫曲線 turtle.right(120) turtle.end_fill() # 提起畫筆,移動到右下角 turtle.penup() turtle.goto(200, -50) # 放下畫筆,開始繪制 turtle.pendown() # 繪制第三朵雪花,填充米色 turtle.fillcolor("beige") turtle.begin_fill() for i in range(3): koch_snowflake(150, 3) # 調用函數,繪制邊長為150,級數為3的科赫曲線 turtle.right(120) turtle.end_fill() # 結束繪制,保持窗口 turtle.done()
運行結果
3.2分析花千樹的結構,設計遞歸算法,畫一棵花千樹,如下圖所示,顏色自選
# 導入turtle模塊 import turtle # 導入random模塊 import random # 定義一個繪制樹枝的函數 def draw_branch(t, length, angle, color): # 如果長度大于5,繼續(xù)繪制 if length > 5: # 設置畫筆顏色 t.color(color) # 向前移動指定長度 t.forward(length) # 向右轉指定角度 t.right(angle) # 遞歸繪制右邊的樹枝 draw_branch(t, length - random.randint(10, 20), angle - random.randint(10, 20), color) # 向左轉兩倍的角度 t.left(2 * angle) # 遞歸繪制左邊的樹枝 draw_branch(t, length - random.randint(10, 20), angle - random.randint(10, 20), color) # 向右轉回原來的角度 t.right(angle) # 后退指定長度 t.backward(length) # 定義一個繪制花朵的函數 def draw_flower(t, x, y, size, color): # 抬起畫筆 t.penup() # 移動到指定位置 t.goto(x, y) # 放下畫筆 t.pendown() # 設置畫筆顏色 t.color(color) # 開始填充 t.begin_fill() # 循環(huán)八次 for i in range(8): # 向前移動指定大小 t.forward(size) # 向左轉45度 t.left(45) # 結束填充 t.end_fill() # 創(chuàng)建一個turtle對象 t = turtle.Turtle() # 設置畫筆粗細 t.pensize(3) # 設置畫筆速度 t.speed(10) # 抬起畫筆 t.penup() # 后退200像素 t.backward(200) # 放下畫筆 t.pendown() # 設置畫筆顏色為棕色 t.color("brown") # 向左轉90度 t.left(90) # 調用繪制樹枝的函數,參數為turtle對象,長度為100,角度為30,顏色為棕色 draw_branch(t, 100, 30, "brown") # 抬起畫筆 t.penup() # 隱藏畫筆 t.hideturtle() # 獲取屏幕對象 s = turtle.Screen() # 獲取屏幕上所有的畫筆對象 pens = s.turtles() # 遍歷所有的畫筆對象 for p in pens: # 獲取畫筆的位置 x, y = p.pos() # 獲取畫筆的顏色 color = p.color()[0] # 如果顏色是棕色,說明是樹枝 if color == "brown": # 以一定的概率在樹枝上繪制花朵 if random.random() < 0.3: # 隨機選擇一個花朵的顏色 flower_color = random.choice(["pink", "red", "purple", "yellow"]) # 隨機選擇一個花朵的大小 flower_size = random.randint(5, 10) # 調用繪制花朵的函數,參數為turtle對象,位置,大小,顏色 draw_flower(t, x, y, flower_size, flower_color) # 保持窗口 turtle.done()
運行結果
總結
到此這篇關于Python使用turtle庫繪制科赫雪花的文章就介紹到這了,更多相關Python turtle庫繪制科赫雪花內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!