△ 效果图:

自己编写动画(可爱的自行车动画)(1)

童心未泯画童车

△ 知识点:

1 python的相关知识:python3.8。

2 turtle制作动画。

△ 代码分步解释:

1 模块导入:

from random import random import numpy as np import turtle as t import time

2 窗口设置:

t.bgcolor('black') # 背景颜色 t.title('bicycle') # 标题名

3 画前轮(左轮):

# 前轮:左轮坐标点 x1=-200 y1=0 def draw1(r): t.pd() t.rt(90) for i in range(6): t.fillcolor(random(),random(),random()) #填充随机颜色 t.setheading(i*60 r) t.begin_fill() #填充开始 t.fd(50) t.rt(90) t.circle(-50,45) t.goto(x1,y1) t.end_fill() #填充结束 t.lt(90)

4 画后轮(右轮):

# 后轮:右轮坐标点 x2=50 y2=0 def draw2(r): t.rt(90) for i in range(6): t.fillcolor(random(),random(),random()) #填充随机颜色 t.setheading(i*60 r) t.begin_fill() #填充开始 t.fd(50) t.rt(90) t.circle(-50,45) t.goto(x2,y2) t.end_fill() #填充结束 t.lt(90)

5 画自行车骨架:

# 画自行车骨架 def BicycleDraw(xleftwheel,yleftwheel,axisdis,radis): t.goto(x1,y1) t.color('white', 'green') t.begin_fill() t.pendown() # 画车把 t.seth(80) #设定角度80度 t.fd(2*radis) #车把高度 t.seth(135) t.pensize(10) t.fd(40) t.seth(45) t.fd(20) t.bk(20) t.right(90) t.fd(100) # 车把横长 t.seth(45) t.fd(20) t.bk(20) t.left(90) t.fd(40) #画斜杠 t.pensize(4) t.goto(x1,y1) #连接到原始坐标点,左轮的圆点 t.end_fill() t.seth(80) t.fd(120) #记录左前叉坐标,注意此为海龟坐标 xtmp=t.xcor() ytmp=t.ycor() # 画脚蹬 t.penup() # 假设座子初始位置 位于距离1/2处 t.goto(x2-np.abs(xtmp-x2) / 2, y2) t.pendown() t.seth(90) t.fd(np.abs(ytmp - y2)) #到达相应高度 smark = t.xcor() t.seth(0) t.begin_fill() t.fd(10) t.seth(-90) t.fd(np.abs(ytmp - y2) 20) t.seth(180) t.fd(10) # 画座子 t.goto(smark, ytmp) t.seth(90) t.seth(-180) t.fd(20) t.seth(30) t.fd(50) t.seth(-90) t.fd(25) t.goto(smark, ytmp 10) t.seth(-90) t.fd(20) # 画前杠和后杠 t.goto(xtmp, ytmp) t.goto(smark,ytmp) t.seth(0) t.fd(10) t.goto(x2,y2) # 右轮圆心的坐标点 t.goto(smark, ytmp) t.end_fill() #画牙盘 t.penup() t.goto(smark,y2) t.pendown() t.begin_fill() t.seth(30) t.fd(12) t.goto(x2,y2) # 右轮圆心的坐标点 t.goto(smark,y2) t.seth(-90) t.fd(20) t.seth(0) t.circle(20) t.end_fill() #画脚蹬 t.penup() t.goto(smark,y2) t.pendown() t.seth(-135) t.fd(20 15) t.right(90) t.fd(20) t.left(90) t.fd(10) t.left(90) t.fd(30) t.left(90) t.fd(30 5)

6 动画设置:

for r in range(0,360*10,2): t.tracer(False) t.clear() t.pu() BicycleDraw(200,400,250,100) t.goto(x1,y1) # 左轮圆心的坐标点 draw1(r) t.pu() t.goto(x2,y2) # 右轮圆心的坐标点 t.pd() draw2(r) t.pu() time.sleep(0.01) t.hideturtle() t.tracer(True)

7 本机操作示意图:

自己编写动画(可爱的自行车动画)(2)

△ 可爱不?

自己编写动画(可爱的自行车动画)(3)

,