用python的turtle库进行多海龟绘图

  • Post author:
  • Post category:python


在python中可以利用面向对象的方法设置多个海龟,现在想多个海龟同时绘制图形,如何操作呢?

首先想到的是利用多线程,经过测试,两个线程的海龟可以基本保持同步,但线程数过多,则海龟们出现步调不一致。

因此考虑多个海龟轮流绘制图形的方法,例如有3个海龟,首先第一个海龟走一小段距离,接着第二个海龟走一小段距离,然后第三个海龟走一小段距离,接下来第一个海龟走一小段距离,然后第二个海龟走一小段距离,然后第三个海龟走一小段距离,以此循环。从理论上说,这虽然不是多个海龟同时绘制图形,但可以在视觉上造成多海龟同时绘制的假象。

下面以五个海龟绘制五角星为例:

import turtle
import math

colorList = ["red","darkgreen" ,"purple" , "violet" , "gold"]
turtleList = []
for i in range(5):
    turtleList.append(turtle.Turtle(shape = 'turtle'))

for i in range(5):
    turtleList[i].color(colorList[i])
    turtleList[i].pensize(3)

#设置5个海龟到五角星顶点的位置
turtleList[0].setposition(100*math.cos(math.pi/10),100*math.sin(math.pi/10))
turtleList[0].lt(180)
turtleList[1].setposition(0,100)
turtleList[1].rt(108)
turtleList[2].setposition(-100*math.cos(math.pi/10),100*math.sin(math.pi/10))
turtleList[2].rt(36)
turtleList[3].setposition(-100*math.cos(3*math.pi/10),-100*math.sin(3*math.pi/10))
turtleList[3].lt(36)
turtleList[4].setposition(100*math.cos(3*math.pi/10),-100*math.sin(3*math.pi/10))
turtleList[4].lt(108)

# 各海龟轮流前进一小步,造成同步的效果
for i in range(int(200*math.cos(math.pi/10))):
    for j in range(5):
        turtleList[j].fd(1)

turtle.done()



版权声明:本文为kanesunny原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。