欢迎光临散文网 会员登陆 & 注册

Python turtle海龟绘图 汉字“樗”

2022-02-03 13:54 作者:Straiack  | 我要投稿

<一> 使用turtle需要学习的要点

turtle是Python内部自己封装的一个模块,我们直接使用import就能调用。turtle的功能大致具备了画图需要的基本功能,例如按照方向来跑线,旋转角度,封闭图案填色、选色还有具体对于画笔的操作等等,其实turtle用作单纯的绘画模块明显十分笨拙,更多地使用这个模块实际上是程序员出于对语言的了解——当然也不排除有大佬用Python写专门的绘图软件的这种情况。

无论是为了学习任务还是说专精python来讲,这一板块都需要实践地掌握,纸上谈兵并不可取。CSDN上还有许多大佬直接复刻动漫人物的……其难度堪称:你大佬终究是你大佬。

再简单的东西,总能有大佬能玩成你认为玩不起的样子。

那么废话不多说,一下用表格来说明一下turtle中封装函数的基本功能。

该图片为不完全统计

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

<二> 实例

重要的还是通过实践来理解。

我个人尝试的是做一个较为复杂的空心汉字,也是我构思了很久的小说中的女主名字——“樗”。

在制作的过程中我首先是设计了一下,确认了图案的大致形状,有书法起笔也有普通的等线笔划,我个人认为这样比较有错落感。因为是我自己的设计的所以禁止图案商用,我给文做封面的时候还要用哒~

还有一件事情,点的笔划我做的是书法起笔,在最开始的时候设置画笔朝向,可以将竖点改为横点或者斜点,亲测有效。

点的函数如下:

  1. def point():#自定义函数体点,因为一共有四个点能够重复使用四次

  2.     turtle.right(30)

  3.     turtle.forward(8)

  4.     for m in range(10):

  5.         turtle.left(19)

  6.         turtle.forward(2)

  7.     for n in range(6):

  8.         turtle.left(5)

  9.         turtle.forward(3)

  10.     for p in range(6):

  11.         turtle.left(14)

  12.         turtle.forward(1)

  13.     turtle.left(78)

  14.     turtle.forward(3)

  15.     for q in range(4):

  16.         turtle.right(9)

  17.         turtle.forward(2)

  18.     turtle.left(43)    #这一步不设置可以使得横点变作斜点或者竖点

  19.     turtle.penup()

运行的结果:

汉字“樗”


<三> 附件 代码

  1. import turtle

  2. turtle.reset()

  3. turtle.pensize(2)

  4. turtle.pencolor('brown')

  5. turtle.speed(10)#画笔参数设定完成

  6. turtle.forward(24)

  7. turtle.left(90)

  8. turtle.forward(12)

  9. turtle.left(90)

  10. turtle.forward(24)

  11. turtle.right(90)

  12. turtle.forward(30)

  13. turtle.left(135)

  14. turtle.forward(16)

  15. turtle.left(45)

  16. turtle.forward(18)

  17. turtle.right(90)

  18. turtle.forward(24)

  19. turtle.left(45)

  20. turtle.forward(16)

  21. turtle.left(135)

  22. turtle.forward(36)

  23. turtle.right(120)

  24. turtle.forward(10)

  25. for i in range(30):

  26.     turtle.right(1)

  27.     turtle.forward(3)

  28. turtle.left(150)

  29. turtle.forward(13)

  30. turtle.penup()

  31. turtle.goto(-10,-15)#第一次跳转从撇的线跳到了“木”的左边竖线

  32. turtle.pendown()

  33. turtle.right(90)

  34. turtle.forward(100)

  35. turtle.left(35)

  36. turtle.forward(16)

  37. turtle.left(145)

  38. turtle.forward(123)

  39. turtle.right(135)

  40. turtle.forward(15)

  41. turtle.right(30)#左边的“木”点

  42. turtle.forward(8)

  43. for j in range(10):

  44.     turtle.left(19)

  45.     turtle.forward(2)

  46. for k in range(10):

  47.     turtle.left(5)

  48.     turtle.forward(3)

  49. turtle.penup()

  50. turtle.goto(50,55)#右边开始

  51. turtle.pendown()

  52. turtle.left(165)

  53. turtle.forward(15)

  54. turtle.left(30)

  55. turtle.forward(20)

  56. turtle.right(90)

  57. turtle.forward(20)

  58. turtle.right(90)

  59. turtle.forward(50)

  60. turtle.left(90)

  61. turtle.forward(40)

  62. turtle.left(45)

  63. turtle.forward(16)

  64. turtle.left(134)

  65. turtle.forward(46)

  66. turtle.right(90)

  67. turtle.forward(39)#左边的横

  68. turtle.right(90)

  69. turtle.forward(50)

  70. turtle.left(45)

  71. turtle.forward(14)

  72. turtle.left(135)

  73. turtle.forward(60)

  74. turtle.right(90)

  75. turtle.forward(42)#右边的横

  76. turtle.right(90)

  77. turtle.forward(40)

  78. turtle.left(45)

  79. turtle.forward(15)

  80. turtle.left(135)

  81. turtle.forward(57)#右边竖的右线

  82. turtle.left(90)

  83. turtle.forward(53)#右边横的上线

  84. turtle.right(90)

  85. turtle.forward(20)

  86. turtle.right(90)

  87. turtle.forward(28)

  88. turtle.left(130)

  89. turtle.forward(8)

  90. turtle.left(50)

  91. turtle.forward(67)#最上面横的上线

  92. turtle.penup()


  93. turtle.goto(65,5)#第一个点

  94. turtle.pendown()

  95. def point():#自定义函数体点,因为一共有四个点能够重复使用四次

  96.     turtle.right(30)

  97.     turtle.forward(8)

  98.     for m in range(10):

  99.         turtle.left(19)

  100.         turtle.forward(2)

  101.     for n in range(6):

  102.         turtle.left(5)

  103.         turtle.forward(3)

  104.     for p in range(6):

  105.         turtle.left(14)

  106.         turtle.forward(1)

  107.     turtle.left(78)

  108.     turtle.forward(3)

  109.     for q in range(4):

  110.         turtle.right(9)

  111.         turtle.forward(2)

  112.     turtle.left(43)    #这一步不设置可以使得横点变作斜点或者竖点

  113.     turtle.penup()

  114. point()

  115. turtle.goto(116,5)

  116. turtle.pendown()

  117. point()

  118. turtle.goto(116,-15)

  119. turtle.pendown()

  120. point()

  121. turtle.goto(65,-15)

  122. turtle.pendown()

  123. point()

  124. turtle.goto(-10,-15)  #撇的下线

  125. turtle.pendown()

  126. turtle.left(73)

  127. for c in range(15):

  128.     turtle.right(2)

  129.     turtle.forward(4)

  130. turtle.right(16)

  131. for b in range(14):

  132.     turtle.right(1)

  133.     turtle.forward(3)

  134. turtle.penup()

  135. turtle.home()

  136. turtle.goto(60,-45)#亏的第一笔

  137. turtle.pendown()

  138. turtle.right(45)

  139. turtle.forward(12)

  140. turtle.left(45)

  141. turtle.forward(60)

  142. turtle.left(135)

  143. turtle.forward(12)

  144. turtle.left(45)

  145. turtle.forward(60)

  146. turtle.penup()

  147. turtle.home()

  148. turtle.goto(10,-64)#亏的第二笔

  149. turtle.pendown()

  150. turtle.right(45)

  151. turtle.forward(12)

  152. turtle.left(45)

  153. turtle.forward(65)#连接下面的勾

  154. turtle.right(120)

  155. turtle.forward(10)

  156. for d in range(10):

  157.     turtle.right(2)

  158.     turtle.forward(3)

  159. turtle.left(140)

  160. turtle.forward(40)

  161. for e in range(12):

  162.     turtle.right(3)

  163.     turtle.forward(3)

  164. turtle.left(270)

  165. for f in range(24):

  166.     turtle.right(2)

  167.     turtle.forward(6)

  168. turtle.right(75)

  169. turtle.forward(30)

  170. turtle.left(170)

  171. turtle.forward(40)

  172. turtle.left(10)

  173. for g in range(5):

  174.     turtle.left(19)

  175.     turtle.forward(2)

  176. turtle.right(24)

  177. for k in range(30):

  178.     turtle.left(2)

  179.     turtle.forward(5)

  180. turtle.right(60)

  181. for g in range(10):

  182.     turtle.left(16)

  183.     turtle.forward(2)

  184. for h in range(15):

  185.     turtle.left(1)

  186.     turtle.forward(4)

  187. turtle.right(135)

  188. for y in range(8):

  189.     turtle.left(1)

  190.     turtle.forward(4)

  191. turtle.penup()

  192. turtle.home()

  193. turtle.goto(96,-72)

  194. turtle.pendown()

  195. turtle.forward(70)

  196. turtle.left(135)

  197. turtle.forward(12)

  198. turtle.left(45)

  199. turtle.forward(146)

  200. turtle.hideturtle()

  201. turtle.done()#完成后暂停页面,进行展示,这一行可以不要

本文除表格借鉴了网络上比较常用的函数解释之外均为原创,转载请注明出处~~~如有错漏欢迎诸君补充。


Python turtle海龟绘图 汉字“樗”的评论 (共 条)

分享到微博请遵守国家法律