当前位置:   article > 正文

小白学Python(20)—— Turtle 海龟绘图

from turtle import *

 Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。

在1966年,Seymour Papert和Wally Feurzig发明了一种专门给儿童学习编程的语言——LOGO语言,它的特色就是通过编程指挥一个小海龟(turtle)在屏幕上绘图。海龟绘图(Turtle Graphics)后来被移植到各种高级语言中,Python内置了turtle库,基本上100%复制了原始的Turtle Graphics的所有功能。

使用之前需要导入库:

from turtle import *

 画笔运动命令

命令

说明

turtle.forward(distance)

向当前画笔方向移动distance像素长度

turtle.backward(distance)

向当前画笔相反方向移动distance像素长度

turtle.right(degree)

顺时针移动degree°

turtle.left(degree)

逆时针移动degree°

turtle.pendown()

移动时绘制图形,缺省时也为绘制

turtle.goto(x,y)

将画笔移动到坐标为x,y的位置

turtle.penup()

提起笔移动,不绘制图形,用于另起一个地方绘制

turtle.circle()

画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆

setx( )

将当前x轴移动到指定位置

sety( )

将当前y轴移动到指定位置

setheading(angle)

设置当前朝向为angle角度

home()

设置当前画笔位置为原点,朝向东。

dot(r)

绘制一个指定直径和颜色的圆点

 

画笔控制命令

命令

说明

turtle.fillcolor(colorstring)

绘制图形的填充颜色

turtle.color(color1, color2)

同时设置pencolor=color1, fillcolor=color2

turtle.filling()

返回当前是否在填充状态

turtle.begin_fill()

准备开始填充图形

turtle.end_fill()

填充完成

turtle.hideturtle()

隐藏画笔的turtle形状

turtle.showturtle()

显示画笔的turtle形状

 

 

 

如,画一个长方形:

  1. # 导入turtle包的所有内容:
  2. from turtle import *
  3. # 设置笔刷宽度:
  4. width(4)
  5. # 前进:
  6. forward(200)
  7. # 右转90度:
  8. right(90)
  9. # 笔刷颜色:
  10. pencolor('red')
  11. forward(100)
  12. right(90)
  13. pencolor('green')
  14. forward(200)
  15. right(90)
  16. pencolor('blue')
  17. forward(100)
  18. right(90)
  19. # 调用done()使得窗口等待被关闭,否则将立刻关闭窗口:
  20. done()

  

 

更多操作请参考turtle库的说明。https://docs.python.org/3.6/library/frameworks.html

 

五角星: 

  1. from turtle import *
  2. for i in range(5):
  3. fd(200)
  4. rt(144)
  5. done()

  

填充颜色

 

  1. from turtle import *
  2. width(4)
  3. pencolor("yellow")
  4. fillcolor("red")
  5. begin_fill()
  6. for i in range(5):
  7. fd(200)
  8. rt(144)
  9. end_fill()
  10. done()

  

太阳花:

  1. from turtle import *
  2. color('red', 'yellow')
  3. begin_fill()
  4. while True:
  5. forward(200)
  6. left(170)
  7. if abs(pos()) < 1:
  8. break
  9. end_fill()
  10. done()

  

太极图:

  1. from turtle import *
  2. circle(100,180)
  3. circle(200,180)
  4. circle(100,-180)
  5. fillcolor('black')
  6. begin_fill()
  7. circle(100,180)
  8. circle(200,180)
  9. circle(100,-180)
  10. end_fill()
  11. penup()
  12. goto(0,100)
  13. dot(50)
  14. goto(0,-100)
  15. pencolor('white')
  16. dot(50)
  17. hideturtle()
  18. done()

  

利用循环嵌套方法画图:

  1. from turtle import *
  2. for i in range(6):
  3. pendown()
  4. fd(150)
  5. for j in range(10):
  6. circle(40)
  7. lt(36)
  8. lt(60)
  9. penup() goto(0,0)
  10. done()

  

 

画一个笑脸

  1. from turtle import *
  2. def go(x,y):
  3. penup()
  4. goto(x,y)
  5. pendown()
  6. def arc(radius):
  7. circle(radius,90)
  8. reset()
  9. speed(0)
  10. go(0,-150)
  11. circle(200)
  12. go(50,100)
  13. seth(225)
  14. arc(10)
  15. arc(50)
  16. arc(10)
  17. arc(50)
  18. go(-50,100)
  19. seth(-45)
  20. arc(-10)
  21. arc(-50)
  22. arc(-10)
  23. arc(-50)
  24. go(-70,-50)
  25. arc(100)
  26. hideturtle()

  

 

 绘制一棵分型树:

  1. from turtle import *
  2. # 设置色彩模式是RGB:
  3. colormode(255)
  4. lt(90)
  5. lv = 14
  6. l = 120
  7. s = 45
  8. width(lv)
  9. # 初始化RGB颜色:
  10. r = 0
  11. g = 0
  12. b = 0
  13. pencolor(r, g, b)
  14. penup()
  15. bk(l)
  16. pendown()
  17. fd(l)
  18. def draw_tree(l, level):
  19. global r, g, b
  20. # save the current pen width
  21. w = width()
  22. # narrow the pen width
  23. width(w * 3.0 / 4.0)
  24. # set color:
  25. r = r + 1
  26. g = g + 2
  27. b = b + 3
  28. pencolor(r % 200, g % 200, b % 200)
  29. l = 3.0 / 4.0 * l
  30. lt(s)
  31. fd(l)
  32. if level < lv:
  33. draw_tree(l, level + 1)
  34. bk(l)
  35. rt(2 * s)
  36. fd(l)
  37. if level < lv:
  38. draw_tree(l, level + 1)
  39. bk(l)
  40. lt(s)
  41. # restore the previous pen width
  42. width(w)
  43. speed("fastest")
  44. draw_tree(l, 4)
  45. done()

  

 

 螺旋图:

  1. from turtle import *
  2. for i in range(100):
  3. fd(2*i)
  4. lt(90)
  5. done()

  

 

  

  1. from turtle import *
  2. speed(10)
  3. for i in range(200):
  4. fd(2*i)
  5. lt(92)
  6. done()

 

 

 

转载于:https://www.cnblogs.com/adam012019/p/11408776.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/117009
推荐阅读
相关标签
  

闽ICP备14008679号