Python turtle海龟绘图 汉字“樗”
<一> 使用turtle需要学习的要点

turtle是Python内部自己封装的一个模块,我们直接使用import就能调用。turtle的功能大致具备了画图需要的基本功能,例如按照方向来跑线,旋转角度,封闭图案填色、选色还有具体对于画笔的操作等等,其实turtle用作单纯的绘画模块明显十分笨拙,更多地使用这个模块实际上是程序员出于对语言的了解——当然也不排除有大佬用Python写专门的绘图软件的这种情况。
无论是为了学习任务还是说专精python来讲,这一板块都需要实践地掌握,纸上谈兵并不可取。CSDN上还有许多大佬直接复刻动漫人物的……其难度堪称:你大佬终究是你大佬。
再简单的东西,总能有大佬能玩成你认为玩不起的样子。
那么废话不多说,一下用表格来说明一下turtle中封装函数的基本功能。

PS:turtle画笔的起始位置位于整个幕布的最中央,划分四个象限,朝向东
<二> 实例

重要的还是通过实践来理解。
我个人尝试的是做一个较为复杂的空心汉字,也是我构思了很久的小说中的女主名字——“樗”。
在制作的过程中我首先是设计了一下,确认了图案的大致形状,有书法起笔也有普通的等线笔划,我个人认为这样比较有错落感。因为是我自己的设计的所以禁止图案商用,我给文做封面的时候还要用哒~
还有一件事情,点的笔划我做的是书法起笔,在最开始的时候设置画笔朝向,可以将竖点改为横点或者斜点,亲测有效。
点的函数如下:
def point():#自定义函数体点,因为一共有四个点能够重复使用四次
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)#画笔参数设定完成
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():#自定义函数体点,因为一共有四个点能够重复使用四次
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()#完成后暂停页面,进行展示,这一行可以不要
本文除表格借鉴了网络上比较常用的函数解释之外均为原创,转载请注明出处~~~如有错漏欢迎诸君补充。

