ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

用python的turtle作图(二)动画吃豆人

2022-02-17 20:04:02  阅读:414  来源: 互联网

标签:turtle loc 动画 python 作图 time import


本文是用python的turtle作图的第二篇,通过这个例子可以了解动画的原理,用python自带的turtle库制作一些小动画。

1.问题描述

在上一篇“用python的turtle作图(一)静态图”我们介绍了,用python自带的turtle库,制作静态图。

本文将介绍用python自带的turtle库制作动画。

2.原理说明

动画的原理简单来说,就是利用视觉停留效应,每隔一定时间重新绘制图形。这里有三个关键点:

  • 擦除原来的图形

  • 重新绘制图形

  • 时间一般是二十四分之一秒之内

下面以吃豆人为例进行说明:

1、新建一个后缀是py的文件,用文本编辑器打开,导入turtle和time库:

import turtle as t
import time

2、程序运行的时候,设置画图窗口大小800*600,黑色:

t.screensize(800,600,'black')

3、定义一个画吃豆人、豆子的函数:

def draw_smile(loc):
    if(loc<200):
        t.color('yellow')
        t.penup()
        t.goto(300-loc,0)
        t.dot(30,'red')

    t.seth(0)
    t.goto(0,-100)
    t.begin_fill()
    t.circle(100)
    t.end_fill()

    if(loc<200):
        t.color('black')
        t.goto(87,-51)
        t.pendown()
        t.seth(60)
        t.begin_fill()
        t.circle(100,60)
        t.goto(0,0)
        t.end_fill()

4)擦除原理的图像,左移10个像素重新绘制吃豆人和豆子

for r in range(0,200,10):
    t.tracer(False)
    t.clear()
    draw_smile(r)
    time.sleep(1)
    t.hideturtle()
    t.tracer(True)

3.代码实现

完整的代码如下:

import turtle as t
import time
def draw_smile(loc):
    if(loc<200):
        t.color('yellow')
        t.penup()
        t.goto(300-loc,0)
        t.dot(30,'red')

    t.seth(0)
    t.goto(0,-100)
    t.begin_fill()
    t.circle(100)
    t.end_fill()

    if(loc<200):
        t.color('black')
        t.goto(87,-51)
        t.pendown()
        t.seth(60)
        t.begin_fill()
        t.circle(100,60)
        t.goto(0,0)
        t.end_fill()

t.tracer(False) 
t.screensize(800,600,'black')
t.color('yellow')
t.speed(1)

for r in range(0,200,10):
    t.tracer(False)
    t.clear()
    draw_smile(r)
    time.sleep(1)
    t.hideturtle()
    t.tracer(True)

t.clear()
t.tracer(0)
draw_smile(0)

程序运行效果如下:

3.总结

本着Talk is cheap. Show me the code原则,代码实现不做过多解释。

写起来,并不难,多试试就可以了。

本文从构思到完成,可谓是耗费了大量的心血。

如果您阅读本文后哪怕有一丢丢收获,请不要吝啬你手中关注点赞的权力,谢谢!

标签:turtle,loc,动画,python,作图,time,import
来源: https://www.cnblogs.com/siweihz/p/15906151.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有