Python turtle海龜繪圖 漢字“樗”
<一>?使用turtle需要學習的要點

turtle是Python內部自己封裝的一個模塊,我們直接使用import就能調用。turtle的功能大致具備了畫圖需要的基本功能,例如按照方向來跑線,旋轉角度,封閉圖案填色、選色還有具體對于畫筆的操作等等,其實turtle用作單純的繪畫模塊明顯十分笨拙,更多地使用這個模塊實際上是程序員出于對語言的了解——當然也不排除有大佬用Python寫專門的繪圖軟件的這種情況。
無論是為了學習任務還是說專精python來講,這一板塊都需要實踐地掌握,紙上談兵并不可取。CSDN上還有許多大佬直接復刻動漫人物的……其難度堪稱:你大佬終究是你大佬。
再簡單的東西,總能有大佬能玩成你認為玩不起的樣子。
那么廢話不多說,一下用表格來說明一下turtle中封裝函數(shù)的基本功能。

PS:turtle畫筆的起始位置位于整個幕布的最中央,劃分四個象限,朝向東
<二>?實例

重要的還是通過實踐來理解。
我個人嘗試的是做一個較為復雜的空心漢字,也是我構思了很久的小說中的女主名字——“樗”。
在制作的過程中我首先是設計了一下,確認了圖案的大致形狀,有書法起筆也有普通的等線筆劃,我個人認為這樣比較有錯落感。因為是我自己的設計的所以禁止圖案商用,我給文做封面的時候還要用噠~
還有一件事情,點的筆劃我做的是書法起筆,在最開始的時候設置畫筆朝向,可以將豎點改為橫點或者斜點,親測有效。
點的函數(shù)如下:
def point():#自定義函數(shù)體點,因為一共有四個點能夠重復使用四次
? ? turtle.right(30)
? ? turtle.forward(8)
? ? for m in range(10):
? ? ? ? turtle.left(19)
? ? ? ? turtle.forward(2)
? ? for n in range(6):
? ? ? ? turtle.left(5)
? ? ? ? turtle.forward(3)
? ? for p in range(6):
? ? ? ? turtle.left(14)
? ? ? ? turtle.forward(1)
? ? turtle.left(78)
? ? turtle.forward(3)
? ? for q in range(4):
? ? ? ? turtle.right(9)
? ? ? ? turtle.forward(2)
? ? turtle.left(43)? ? #這一步不設置可以使得橫點變作斜點或者豎點
? ? turtle.penup()
運行的結果:

<三>?附件 代碼

import turtle
turtle.reset()
turtle.pensize(2)
turtle.pencolor('brown')
turtle.speed(10)#畫筆參數(shù)設定完成
turtle.forward(24)
turtle.left(90)
turtle.forward(12)
turtle.left(90)
turtle.forward(24)
turtle.right(90)
turtle.forward(30)
turtle.left(135)
turtle.forward(16)
turtle.left(45)
turtle.forward(18)
turtle.right(90)
turtle.forward(24)
turtle.left(45)
turtle.forward(16)
turtle.left(135)
turtle.forward(36)
turtle.right(120)
turtle.forward(10)
for i in range(30):
? ? turtle.right(1)
? ? turtle.forward(3)
turtle.left(150)
turtle.forward(13)
turtle.penup()
turtle.goto(-10,-15)#第一次跳轉從撇的線跳到了“木”的左邊豎線
turtle.pendown()
turtle.right(90)
turtle.forward(100)
turtle.left(35)
turtle.forward(16)
turtle.left(145)
turtle.forward(123)
turtle.right(135)
turtle.forward(15)
turtle.right(30)#左邊的“木”點
turtle.forward(8)
for j in range(10):
? ? turtle.left(19)
? ? turtle.forward(2)
for k in range(10):
? ? turtle.left(5)
? ? turtle.forward(3)
turtle.penup()
turtle.goto(50,55)#右邊開始
turtle.pendown()
turtle.left(165)
turtle.forward(15)
turtle.left(30)
turtle.forward(20)
turtle.right(90)
turtle.forward(20)
turtle.right(90)
turtle.forward(50)
turtle.left(90)
turtle.forward(40)
turtle.left(45)
turtle.forward(16)
turtle.left(134)
turtle.forward(46)
turtle.right(90)
turtle.forward(39)#左邊的橫
turtle.right(90)
turtle.forward(50)
turtle.left(45)
turtle.forward(14)
turtle.left(135)
turtle.forward(60)
turtle.right(90)
turtle.forward(42)#右邊的橫
turtle.right(90)
turtle.forward(40)
turtle.left(45)
turtle.forward(15)
turtle.left(135)
turtle.forward(57)#右邊豎的右線
turtle.left(90)
turtle.forward(53)#右邊橫的上線
turtle.right(90)
turtle.forward(20)
turtle.right(90)
turtle.forward(28)
turtle.left(130)
turtle.forward(8)
turtle.left(50)
turtle.forward(67)#最上面橫的上線
turtle.penup()
turtle.goto(65,5)#第一個點
turtle.pendown()
def point():#自定義函數(shù)體點,因為一共有四個點能夠重復使用四次
? ? turtle.right(30)
? ? turtle.forward(8)
? ? for m in range(10):
? ? ? ? turtle.left(19)
? ? ? ? turtle.forward(2)
? ? for n in range(6):
? ? ? ? turtle.left(5)
? ? ? ? turtle.forward(3)
? ? for p in range(6):
? ? ? ? turtle.left(14)
? ? ? ? turtle.forward(1)
? ? turtle.left(78)
? ? turtle.forward(3)
? ? for q in range(4):
? ? ? ? turtle.right(9)
? ? ? ? turtle.forward(2)
? ? turtle.left(43)? ? #這一步不設置可以使得橫點變作斜點或者豎點
? ? turtle.penup()
point()
turtle.goto(116,5)
turtle.pendown()
point()
turtle.goto(116,-15)
turtle.pendown()
point()
turtle.goto(65,-15)
turtle.pendown()
point()
turtle.goto(-10,-15)? #撇的下線
turtle.pendown()
turtle.left(73)
for c in range(15):
? ? turtle.right(2)
? ? turtle.forward(4)
turtle.right(16)
for b in range(14):
? ? turtle.right(1)
? ? turtle.forward(3)
turtle.penup()
turtle.home()
turtle.goto(60,-45)#虧的第一筆
turtle.pendown()
turtle.right(45)
turtle.forward(12)
turtle.left(45)
turtle.forward(60)
turtle.left(135)
turtle.forward(12)
turtle.left(45)
turtle.forward(60)
turtle.penup()
turtle.home()
turtle.goto(10,-64)#虧的第二筆
turtle.pendown()
turtle.right(45)
turtle.forward(12)
turtle.left(45)
turtle.forward(65)#連接下面的勾
turtle.right(120)
turtle.forward(10)
for d in range(10):
? ? turtle.right(2)
? ? turtle.forward(3)
turtle.left(140)
turtle.forward(40)
for e in range(12):
? ? turtle.right(3)
? ? turtle.forward(3)
turtle.left(270)
for f in range(24):
? ? turtle.right(2)
? ? turtle.forward(6)
turtle.right(75)
turtle.forward(30)
turtle.left(170)
turtle.forward(40)
turtle.left(10)
for g in range(5):
? ? turtle.left(19)
? ? turtle.forward(2)
turtle.right(24)
for k in range(30):
? ? turtle.left(2)
? ? turtle.forward(5)
turtle.right(60)
for g in range(10):
? ? turtle.left(16)
? ? turtle.forward(2)
for h in range(15):
? ? turtle.left(1)
? ? turtle.forward(4)
turtle.right(135)
for y in range(8):
? ? turtle.left(1)
? ? turtle.forward(4)
turtle.penup()
turtle.home()
turtle.goto(96,-72)
turtle.pendown()
turtle.forward(70)
turtle.left(135)
turtle.forward(12)
turtle.left(45)
turtle.forward(146)
turtle.hideturtle()
turtle.done()#完成后暫停頁面,進行展示,這一行可以不要
本文除表格借鑒了網(wǎng)絡上比較常用的函數(shù)解釋之外均為原創(chuàng),轉載請注明出處~~~如有錯漏歡迎諸君補充。