自己编写动画(可爱的自行车动画)
△ 效果图:
童心未泯画童车
△ 知识点:
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 本机操作示意图:
△ 可爱不?
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com