问题分析
需求:根据脚本绘制图形
不是写代码,而是写数据绘制轨迹
(写程序去读取数据,并根据数据绘制图形)
自动化最重要的一步
基本思路:
步骤1:定义数据文件格式(接口)
步骤2:编写程序,根据文件接口解析参数绘制图形
步骤3:编制数据文件
数据接口定义(每个人都不一样,没有所谓的规范,由自己定义)
例如我定义文件:
300,0,144,1,0,0
1:行进的距离
2:转向判断,0左转,1右转
3:转向角度
4,5,6:分别是RGB三个通道颜色(0-1浮点数)
#AutoTraceDraw.py
'''
新建一个文件:data.txt,将数据文件输入保存
300,0,144,1,0,0
300,0,144,0,1,0
300,0,144,0,0,1
300,0,144,1,1,0
300,0,108,0,1,1
184,0,72,1,0,1
184,0,72,0,0,0
184,0,72,0,0,0
184,0,72,0,0,0
184,1,72,1,0,1
184,1,72,0,0,0
184,1,72,0,0,0
184,1,72,0,0,0
184,1,72,0,0,0
184,1,720,0,0,0
'''
import turtle as t #引入turtle绘图库 定义别名
t.title('自动轨迹绘制') #标题栏的名字
t.setup(1800,600,0,0) #画布的大小以及位置
t.pencolor('red') #初始颜色
t.pensize(5) #大小
#数据读取
datals = [] #定义一个列表
f = open('data.txt',encoding='UTF-8') #打开数据文件
for line in f: #循环文件
line = line.replace('\n','') #replace---将换行符替换为空
# .split(',') ,返回一个列表由','号隔开,例如['A','B','C']
#map ()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,
#并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回
#list():将map处理后的数据转为列表
#加入到datals
datals.append(list(map(eval,line.split(','))))
f.close()
'''
#打印出来看看数据
for i in datals:
print(i)
'''
#自动轨迹处理
for i in range(len(datals)): #循环datals处理
t.pencolor(datals[i][3],datals[i][4],datals[i][5])#设置第一行的颜色
t.fd(datals[i][0]) #前进的距离
if datals[i][1]: #判断转向
t.right(datals[i][2]) #右转的角度
else:
t.left(datals[i][2]) #左转的角度