基于Turtle制作色彩缤纷的节日礼花

这几天打算搞点儿有意思的东西,搜索一番发现了一个名为Turtle的python库,它是python绘制图像的函数库;其原理就是假设有一只小乌龟,从坐标轴原点出发,根据我们设置的一组指令,在整个坐标系平面内爬行,从而它的爬行路径便绘制出了一系列图形。

关于这个函数库大家可以去官网查看说明:https://docs.python.org/3/library/turtle.html?highlight=turtle

废话不多说,我们今天将会基于该库来制作一个色彩缤纷的节日礼花,直接上代码,注释已经讲解的很清楚~~~

# # -*- coding:utf-8 -*-
import turtle
import random

turtle.tracer(0, 0)   #加速绘制图形
scr = turtle.Screen()  #生成一个屏幕对象
scr.colormode(255)     #设置颜色模式为RGB整数模式
scr.bgcolor("black")  #设置屏幕背景颜色为黑色


tur = turtle.Turtle()  #生成一个画笔对象
tur.speed(10)  #设置画笔移动速度,范围为0~10之间,取整数,数字越大表明速度越快
tur.goto(0,0)  #将画笔移动到坐标为(0,0)的位置
tur.pensize(2) #设置画笔的宽度为2
tur.ht()   #隐藏画笔,使得做复杂绘图时加快速度
for i in range(500):
    # turtle.color()方法返回或设置pencolor和fillcolor,允许多种输入格式,包括0到3个参数
    #randrange() 方法返回指定递增基数集合中的一个随机数,基数缺省值为1
    tur.color(random.randrange(256),random.randrange(256),random.randrange(256))
    #random.gauss(a,b) 表示均值为a且标准偏差为b的高斯分布
    #round( x [, n]  )方法返回浮点数x的四舍五入值,n为小数点后有效位数
    tur.goto(round(random.gauss(0,150),0),round(random.gauss(0,150),0))
    x = tur.xcor()  #返回画笔的x坐标
    y = tur.ycor()  #返回画笔的y坐标
    for j in range(25):
                z = round(random.gauss(0,5), 0)
                a = round(random.gauss(0,5), 0)
                tur.color(random.randrange(256),random.randrange(256),random.randrange(256))
                tur.goto(x + z, y + a)  #将画笔移动到对应坐标位置
    tur.goto(z,a)  #将画笔移动到坐标为(z,a)的位置
turtle.update()  #执行TurtleScreen更新,在跟踪器tracer关闭时调用。
scr.exitonclick()  #鼠标点击屏幕时退出(通过绑定bye()方法实现)

看着代码很多,其实关键的方法只有几个,重要的是逻辑,我们要把枯燥的方法巧妙地拼接起来,进而构造出我们的目标图像,在这其中有几个方法还是说一下吧:

1.turtle.tracer方法

基于Turtle制作色彩缤纷的节日礼花_第1张图片

 

我们设置了(0,0),既不需要延迟,如果大家对这个感兴趣可以设置其他值试验一下~~

2.random.randrange方法

其全貌为random.randrange ([start,] stop [,step]):
  • start -- 指定范围内的开始值,包含在范围内
  • stop -- 指定范围内的结束值,不包含在范围内
  • step -- 指定递增基数

其他的方法基本上在注释中都已说明,详细信息可以查询官网说明,我们后续还会进一步探究……

看下效果吧:

基于Turtle制作色彩缤纷的节日礼花_第2张图片

基于Turtle制作色彩缤纷的节日礼花_第3张图片

 

你可能感兴趣的:(Python自学之路)