自动绘制图形:
需求:根据脚本来绘制图形,而不是写代码,是写数据来及进行绘制轨迹。
思路:
1、定义数据文件的格式
2、编写程序,根据文件解析参数绘制图形
3、编制数据文件
定义格式为自行定义,即数据的顺序,每个数据的作用。在这里我们定义如下:
第一个数据:行进距离
第二个数据:转向判断,0:左转,1:右转
第三个数据:转向角度
第四五六个数据:RGB的数值,为在0—1之间的浮点数
1、首先是初始的定义:
import turtle as tt
tt.title('自动轨迹绘制')
tt.setup(800,600,0,0)
tt.pencolor("yellow")
tt.pensize(5)
2、接下来开始读取数据:
#数据的读取:
detail=[]
f=open("自动轨迹绘制.txt")
for line in f:
line=line.replace("\n","")
detail.append(list(map(eval,line.split(","))))
f.close()
这里我们利用line.split(“,”)指定”,”为分隔符将字符串分割为若干个字符串,可以生成一个列表。map函数为python的内嵌函数,功能为将第一个参数的功能作用于第二个参数的每一个元素,即对列表中的每一个字符串取评估函数,再将整个结果输出为列表类型,加到我们预先定义的detail列表中。
3、进行自动绘制
#自动绘制
for i in range(len(detail)):
tt.pencolor(detail[i][3],detail[i][4],detail[i][5])
tt.fd(detail[i][0])
if detail[i][1]:
tt.right(detail[i][2])
else:
tt.left(detail[i][2])
即把利用每个参数来绘制图形。
完整代码:
#自动轨迹绘制
import turtle as tt
tt.title('自动轨迹绘制')
tt.setup(800,600,0,0)
tt.pencolor("yellow")
tt.pensize(5)
#数据的读取:
detail=[]
f=open("自动轨迹绘制.txt")
for line in f:
line=line.replace("\n","")
detail.append(list(map(eval,line.split(","))))
f.close()
#自动绘制
for i in range(len(detail)):
tt.pencolor(detail[i][3],detail[i][4],detail[i][5])
tt.fd(detail[i][0])
if detail[i][1]:
tt.right(detail[i][2])
else:
tt.left(detail[i][2])
运行的结果如下:
(第一组数据为课程原本代码,修改了颜色,第二三组数据为自行更改)
第一组数据:
第一组结果:
第二组数据:
第二组结果:
第三组数据:
第三组结果: