当前位置:   article > 正文

python创意turtle作品和代码,python turtle创意绘图_python的turtle库创意绘图

python的turtle库创意绘图

大家好,小编为大家解答turtle编程创意绘图精美图的问题。很多人还不知道turtle创意作品及编写程序,现在让我们一起来看看吧!

北京冬奥会开幕式上除了“中国结”雪花外,还有一个浪漫元素就是蒲公英PHP与PYTHON:基于语法,功能,应用程序等的详细比较

受此启发,我在网上搜索到蒲公英的简笔画,选了几个python绘图容易实现的简笔画作为参考,绘制出了以下三种蒲公英```*``

图1的蒲公英绒毛顶端是圆点,图2绒毛顶端是圆形光束,图3绒毛顶端是扇形光束用python画雪人。从左到右,蒲公英的绘制难度逐级增大。 

案例1:蒲公英(顶端是圆点)

难度:★★☆☆☆☆

 【效果预览】 

蒲公英的绒毛顶端是圆点[简单]

 【重难点突破】 

1. 蒲公英绘制思路:先绘制出三束长短不一的绒毛,然后再进入循环让海龟重复绘制其他的绒毛。

2. 画蒲公英的歪茎:用超大半径,较小角度画圆弧,来实现歪茎效果。

如 turtle.circle(-600,40)    

circle(半径,角度)  半径为负时,画在海龟头部方向的右边。即向下绘制,向左弯曲。

 【代码参考】 

我分享的代码虽然不是最简化的代码,但一定是最方便初学者理解的代码。

  1. # 案例1:蒲公英(绒毛顶端是圆点)【简单】
  2. import turtle # 导入turtle库(模块)
  3. turtle.speed(0) # 设置海龟的绘图速度,参数为0时最快
  4. turtle.delay(0) # 设置海龟的延迟速度,参数为0时表示没有延迟时间。
  5. turtle.bgcolor("#1e67c5") # 设置背景颜色为#1e67c5,一种蓝色
  6. turtle.pencolor("#e0f4f5") # 设置画笔颜色为#e0f4f5,一种白色。纯白色为#ffffff,即white.会比较刺眼。
  7. # 变量初始化设置
  8. a=100 # 定义变量a,表示长绒毛的长度
  9. b=80 # 定义变量b,表示中绒毛的长度
  10. c=60 # 定义变量c,表示短绒毛的长度
  11. a1=8 # 定义变量a1,表示长绒毛顶端圆点的直径
  12. b1=7 # 定义变量b1,表示中绒毛顶端圆点的直径
  13. c1=6 # 定义变量c1,表示短绒毛顶端圆点的直径
  14. # 画球状绒毛
  15. for i in range(15): # 循环15次。因为(8+8+8)*15=360
  16. # 画长绒毛
  17. turtle.forward(a) # 海龟前进a像素
  18. turtle.dot(a1) # 画直径为a1的圆点
  19. turtle.backward(a) # 海龟再后退a像素,回到起点位置
  20. turtle.left(8) # 海龟向左旋转8度,准备画中绒毛
  21. # 画中绒毛
  22. turtle.forward(b)
  23. turtle.dot(b1) # 画直径为b1的圆点
  24. turtle.backward(b)
  25. turtle.left(8) # 海龟再向左旋转8度,准备画短绒毛
  26. # 画短绒毛
  27. turtle.forward(c)
  28. turtle.dot(c1) # 画直径为c1的圆点
  29. turtle.backward(c)
  30. turtle.left(8) # 画完短绒毛后,海龟再向左旋转8度,进入循环画其他绒毛
  31. # 画茎(略歪)(用超大半径,较小角度画圆弧,来实现歪茎效果)
  32. turtle.pensize(3) # 设置画笔的粗细为3,即茎的粗线为3。默认画笔粗线为1
  33. turtle.right(80) # 画完球状绒毛后,海龟朝向右,所以要让海龟向右旋转80度后再画茎
  34. turtle.circle(-600,40) # 半径为负,画在海龟头部方向的右边
  35. # 海龟绘图结束,隐藏海龟
  36. turtle.hideturtle()

下面的代码将各个变量进行了关联,只要改动一个变量a,就会影响其他变量的值,即可以实现蒲公英的等比例缩放。

为了方便初学者理解,在后面的两个案例中,变量不再做关联,只用固定的数值。

  1. # 案例1:蒲公英(绒毛顶端是圆点)【简单】 变量有关联
  2. import turtle # 导入turtle库(模块)
  3. turtle.speed(0) # 设置海龟的绘图速度,参数为0时最快
  4. turtle.delay(0) # 设置海龟的延迟速度,参数为0时表示没有延迟时间。
  5. turtle.bgcolor("#1e67c5") # 设置背景颜色为#1e67c5,一种蓝色
  6. turtle.pencolor("#e0f4f5") # 设置画笔颜色为#e0f4f5,一种白色。纯白色为#ffffff,即white.会比较刺眼。
  7. # 变量初始化设置(只要改动变量a的值,其他变量都会跟着变化)
  8. # 变量之间的关系表达式,没有简化,是为了更方便理解
  9. a=100 # 定义变量a,表示长绒毛的长度
  10. b=80/100*a # 定义变量b,表示中绒毛的长度
  11. c=60/100*a # 定义变量c,表示短绒毛的长度
  12. a1=8/100*a # 定义变量a1,表示长绒毛顶端圆点的直径
  13. b1=7/100*a # 定义变量b1,表示中绒毛顶端圆点的直径
  14. c1=6/100*a # 定义变量c1,表示短绒毛顶端圆点的直径
  15. # 画球状绒毛
  16. for i in range(15): # 循环15次。因为(8+8+8)*15=360
  17. # 画长绒毛
  18. turtle.forward(a) # 海龟前进a像素
  19. turtle.dot(a1) # 画直径为a1的圆点
  20. turtle.backward(a) # 海龟再后退a像素,回到起点位置
  21. turtle.left(8) # 海龟向左旋转8度,准备画中绒毛
  22. # 画中绒毛
  23. turtle.forward(b)
  24. turtle.dot(b1) # 画直径为b1的圆点
  25. turtle.backward(b)
  26. turtle.left(8) # 海龟再向左旋转8度,准备画短绒毛
  27. # 画短绒毛
  28. turtle.forward(c)
  29. turtle.dot(c1) # 画直径为c1的圆点
  30. turtle.backward(c)
  31. turtle.left(8) # 画完短绒毛后,海龟再向左旋转8度,进入循环画其他绒毛
  32. # 画茎(略歪)(用超大半径,较小角度画圆弧,来实现歪茎效果)
  33. turtle.pensize(3) # 设置画笔的粗细为3,即茎的粗线为3。默认画笔粗线为1
  34. turtle.right(80) # 画完球状绒毛后,海龟朝向右,所以要让海龟向右旋转80度后再画茎
  35. turtle.circle(-600,40) # 半径为负,画在海龟头部方向的右边
  36. # 海龟绘图结束,隐藏海龟
  37. turtle.hideturtle()

案例2:蒲公英(顶端是圆形光束)

难度:★★☆☆☆☆

 【效果预览】 

蒲公英的绒毛顶端是圆形光束[较难]

 【重难点突破】 

案例2使用了for循环嵌套。右图中框内的for循环代码块代替了左图中的一行代码turtle.dot(a1),因此可以将绒毛顶端的圆点变换为圆形光束。

 【代码参考】 

  1. # 案例2:蒲公英(绒毛顶端是圆形光束)【较难】
  2. import turtle # 导入turtle库(模块)
  3. turtle.speed(0) # 设置海龟的绘图速度,参数为0时最快
  4. turtle.delay(0) # 设置海龟的延迟速度,参数为0时表示没有延迟时间。
  5. turtle.bgcolor("#1e67c5") # 设置背景颜色为#1e67c5,一种蓝色
  6. turtle.pencolor("#e0f4f5") # 设置画笔颜色为#e0f4f5,一种白色。纯白色为#ffffff,即white.会比较刺眼。
  7. # 变量初始化设置
  8. a=100 # 定义变量a,表示长绒毛的长度
  9. b=80 # 定义变量b,表示中绒毛的长度
  10. c=60 # 定义变量c,表示短绒毛的长度
  11. a1=8 # 定义变量a1,表示长绒毛顶端圆形光束的长度
  12. b1=5 # 定义变量b1,表示中绒毛顶端圆形光束的长度
  13. c1=3 # 定义变量c1,表示短绒毛顶端圆形光束的长度
  14. # 画球状绒毛
  15. for i in range(15): # 循环15次。因为(8+8+8)*15=360
  16. # 画长绒毛
  17. turtle.forward(a) # 海龟前进a像素
  18. for i in range(12): # 海龟循环12次,画绒毛顶端的圆形光束
  19. turtle.forward(a1) # 海龟前进a1像素
  20. turtle.backward(a1) # 海龟再后退a1像素,回到起点位置
  21. turtle.left(30) # 海龟向左旋转30度,准备画下一条光束
  22. turtle.backward(a) # 海龟再后退a像素,回到起点位置
  23. turtle.left(8) # 海龟向左旋转8度,准备画中绒毛
  24. # 画中绒毛
  25. turtle.forward(b) # 海龟前进b像素
  26. for i in range(12):
  27. turtle.forward(b1)
  28. turtle.backward(b1)
  29. turtle.left(30)
  30. turtle.backward(b) # 海龟再后退b像素,回到起点位置
  31. turtle.left(8) # 海龟再向左旋转8度,准备画短绒毛
  32. # 画短绒毛
  33. turtle.forward(c) # 海龟前进c像素
  34. for i in range(12):
  35. turtle.forward(c1)
  36. turtle.backward(c1)
  37. turtle.left(30)
  38. turtle.backward(c) # 海龟再后退c像素,回到起点位置
  39. turtle.left(8) # 画完短绒毛后,海龟再向左旋转8度,进入循环画其他绒毛
  40. # 画茎(略歪)(用超大半径,较小角度画圆弧,来实现歪茎效果)
  41. turtle.pensize(3) # 设置画笔的粗细为3,即茎的粗线为3。默认画笔粗线为1
  42. turtle.right(80) # 画完球状绒毛后,海龟朝向右,所以要让海龟向右旋转80度后再画茎
  43. turtle.circle(-600,40) # 半径为负,画在海龟头部方向的右边
  44. # 海龟绘图结束,隐藏海龟
  45. turtle.hideturtle()

案例3:蒲公英(顶端是扇形光束)

难度:★★☆☆☆☆

 【效果预览】 

蒲公英的绒毛顶端是扇形光束[最难]

 【重难点突破】 

案例3也使用了for循环嵌套。图3框内的for循环代码块代替了图1中的一行代码turtle.dot(a1),因此可以将绒毛顶端的圆点变换为扇形光束。

敲重点画扇形光束比圆形光束要复杂一点,一定要注意左右旋转的角度。不管是圆形还是扇形都要确保海龟最终刚好旋转360度,刚好能够回到起始位置

如案例3中,因为6个30度和260度都是向左旋转left,80度是向右旋转right,所以海龟绘制完扇形光束后一定要再旋转260度,使得海龟刚好旋转了360度回到起始位置。

30度*6-80度+260度=360度

 【代码参考】 

  1. # 案例3:蒲公英(绒毛顶端是扇形光束)【最难】
  2. import turtle # 导入turtle库(模块)
  3. turtle.speed(0) # 设置海龟的绘图速度,参数为0时最快
  4. turtle.delay(0) # 设置海龟的延迟速度,参数为0时表示没有延迟时间。
  5. turtle.bgcolor("#1e67c5") # 设置背景颜色为#1e67c5,一种蓝色
  6. turtle.pencolor("#e0f4f5") # 设置画笔颜色为#e0f4f5,一种白色。纯白色为#ffffff,即white.会比较刺眼。
  7. # 变量初始化设置
  8. a=100 # 定义变量a,表示长绒毛的长度
  9. b=80 # 定义变量b,表示中绒毛的长度
  10. c=60 # 定义变量c,表示短绒毛的长度
  11. a1=8 # 定义变量a1,表示长绒毛顶端扇形光束的长度
  12. b1=5 # 定义变量b1,表示中绒毛顶端扇形光束的长度
  13. c1=3 # 定义变量c1,表示短绒毛顶端扇形光束的长度
  14. # 画球状绒毛
  15. for i in range(15): # 循环15次。因为(8+8+8)*15=360
  16. # 画长绒毛
  17. turtle.forward(a) # 海龟前进a像素
  18. turtle.right(80) # 海龟向右旋转80度。(准备开始向左边光束)
  19. for i in range(6): # 循环6次,即画6条光束
  20. turtle.forward(a1)
  21. turtle.backward(a1)
  22. turtle.left(30) # 每条光束画完后,旋转30度。30*6-80=100
  23. turtle.left(260) # 画完扇形光束后,海龟并未回到初始方向。需要再继续向左旋转360-100
  24. turtle.backward(a) # 海龟后退a像素
  25. turtle.left(8) # 海龟向左旋转8度,准备画中绒毛
  26. # 画中绒毛
  27. turtle.forward(b) # 海龟前进b像素
  28. turtle.right(80)
  29. for i in range(6):
  30. turtle.forward(a1)
  31. turtle.backward(a1)
  32. turtle.left(30)
  33. turtle.left(260)
  34. turtle.backward(b) # 海龟再后退b像素,回到起点位置
  35. turtle.left(8) # 海龟再向左旋转8度,准备画短绒毛
  36. # 画短绒毛
  37. turtle.forward(c) # 海龟前进c像素
  38. turtle.right(80)
  39. for i in range(6):
  40. turtle.forward(a1)
  41. turtle.backward(a1)
  42. turtle.left(30)
  43. turtle.left(260)
  44. turtle.backward(c) # 海龟再后退c像素,回到起点位置
  45. turtle.left(8) # 画完短绒毛后,海龟再向左旋转8度,进入循环画其他绒毛
  46. # 画茎(略歪)(用超大半径,较小角度画圆弧,来实现歪茎效果)
  47. turtle.pensize(3) # 设置画笔的粗细为3,即茎的粗线为3。默认画笔粗线为1
  48. turtle.right(80) # 画完球状绒毛后,海龟朝向右,所以要让海龟向右旋转80度后再画茎
  49. turtle.circle(-600,40) # 半径为负,画在海龟头部方向的右边
  50. # 海龟绘图结束,隐藏海龟
  51. turtle.hideturtle()

-----end -----

文章知识点与官方知识档案匹配,可进一步学习相关知识
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/630430
推荐阅读
相关标签
  

闽ICP备14008679号