码迷,mamicode.com
首页 > 其他好文 > 详细

Turtle库

时间:2016-01-13 19:37:25      阅读:557      评论:0      收藏:0      [点我收藏+]

标签:

下列turtle库的简单常用指令

?forward(distance) #将箭头移到某一指定坐标 

?left(angel)  right(angel) 

?penup() #提起笔,用于另起一个地方绘制时用,与pendown()配对使用 

?goto(x,y) 

?home() 

?circle(radius) 

?speed() 

 1 #五角星图形
 2 from turtle import Turtle
 3 
 4 p = Turtle()
 5 p.speed(3)
 6 p.pensize(5)
 7 p.color("black", yellow)
 8 #p.fillcolor("red")
 9 p.begin_fill()
10 for i in range(5):
11     p.forward(200)  #将箭头移到某一指定坐标 
12     p.right(144)    #当前方向上向右转动角度
13 p.end_fill()

技术分享

树的绘制 

技术分享

?观察:对称树, 从主杆出发以一定角度向左向右生成对称的枝丫, 且每一棵枝杈上以相同的角度生成更小的左右枝杈,如此往复。

    联系:所学内容,易想到利用递归程序实现; 

 

 1 # drawtree.py
 2 
 3 from turtle import Turtle, mainloop
 4 
 5 def tree(plist, l, a, f):
 6     """ plist is list of pens
 7     l is length of branch
 8     a is half of the angle between 2 branches
 9     f is factor by which branch is shortened
10     from level to level."""
11     if l > 5: #
12         lst = []
13         for p in plist:
14             p.forward(l)#沿着当前的方向画画Move the turtle forward by the specified distance, in the direction the turtle is headed.
15             q = p.clone()#Create and return a clone of the turtle with same position, heading and turtle properties.
16             p.left(a) #Turn turtle left by angle units
17             q.right(a)#Turn turtle right by angle units, nits are by default degrees, but can be set via the degrees() and radians() functions.
18             lst.append(p)#将元素增加到列表的最后
19             lst.append(q)
20         tree(lst, l*f, a, f)
21   
22            
23 
24 def main():
25     p = Turtle()
26     p.color("green")
27     p.pensize(5)
28     #p.setundobuffer(None)
29     p.hideturtle() #Make the turtle invisible. It’s a good idea to do this while you’re in the middle of doing some complex drawing,
30                    #because hiding the turtle speeds up the drawing observably.
31     
32     p.getscreen().tracer(10,0)
33         #Return the TurtleScreen object the turtle is drawing on.
34         #TurtleScreen methods can then be called for that object.
35     #p.speed(10)
36     p.left(90)  #Turn turtle left by angle units. direction 调整画笔
37 
38     p.penup() #Pull the pen up – no drawing when moving.
39     p.goto(0,-200)#Move turtle to an absolute position. If the pen is down, draw line. Do not change the turtle’s orientation.
40     p.pendown()# Pull the pen down – drawing when moving. 这三条语句是一个组合相当于先把笔收起来再移动到指定位置,再把笔放下开始画
41     #否则turtle一移动就会自动的把线画出来
42 
43     #t = tree([p], 200, 65, 0.6375)
44     t = tree([p], 200, 65, 0.6375)
45     
46 main()

 

森林的绘制 

?如何画出多棵树,甚至整片森林呢? 

?答案很简单,只要在画每棵树之前调整画笔的位置,调用画树程序,就可以从新位置生成一颗新树了。 

?利用模块化的函数思想,调整代码: 

?将每棵树的绘制以maketree函数封装,参数x,y为画树的起点位置即树根位置。在main函数中只要以

 不同的参数设置来调用maketree函数就可以完成多棵树的绘制了 

 

 1 # drawtree.py
 2 from turtle import Turtle, mainloop
 3 
 4 def tree(plist, l, a, f):
 5     """ plist is list of pens
 6     l is length of branch
 7     a is half of the angle between 2 branches
 8     f is factor by which branch is shortened
 9     from level to level."""
10     if l > 5: #
11         lst = []
12         for p in plist:
13             p.forward(l)#沿着当前的方向画画Move the turtle forward by the specified distance, in the direction the turtle is headed.
14             q = p.clone()#Create and return a clone of the turtle with same position, heading and turtle properties.
15             p.left(a) #Turn turtle left by angle units
16             q.right(a)#Turn turtle right by angle units, nits are by default degrees, but can be set via the degrees() and radians() functions.
17             lst.append(p)#将元素增加到列表的最后
18             lst.append(q)
19         tree(lst, l*f, a, f)
20 
21 def maketree(x, y):
22     p = Turtle()
23     p.color("green")
24     p.pensize(5)
25     p.hideturtle()
26     p.getscreen().tracer(30, 0)
27     p.left(90)
28 
29     p.penup()
30     p.goto(x, y)
31     p.pendown()
32 
33     t = tree([p], 110, 65, 0.6375)
34     print(len(p.getscreen().turtles())) #用了多少个turtle绘制
35 
36 def main():
37     maketree(-200, -200)
38     maketree(0, 0)
39     maketree(200, -200)
40 
41 main()

 

  图像:

    技术分享 

Turtle库

标签:

原文地址:http://www.cnblogs.com/aze-003/p/5127843.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!