• Python中的高级turtle(海龟)作图(续)


    四、填色

    color 函数有三个参数。第一个参数指定有多少红色,第二个指定有多少绿色,第三个指定有多少蓝色。比如,要得到车子的亮红色,我们用 color(1,0,0),也就是让海龟用百分之百的红色画笔。

    这种红色、绿色、蓝色的混搭叫做RGB(Red,Green,Blue)。因为红绿蓝是色光上的三原色,任何颜色都可以通过改变三原色的比重来调配出来。

    虽然我们不是在计算机屏幕上混合颜料(我们用的是光!),但我们可以把RGB方案想象成三个颜料桶,一个红的,一个绿的和一个蓝的。每个桶里都是满的,我们可以看成满桶的值是1(100%)。然后把所有的红颜料和绿颜料混在一起放在一个大缸里,这样就产生了黄色。

    现在我们尝试用海龟画一个黄色的圆,我们要用100%的红色和绿色颜料,不能使用蓝色:

    效果如下:

    >>> t.color(1,1,0)  ##100%的红色,100%的绿色,0%的蓝色
    >>> t.begin_fill()  ##给后面的形状填色
    >>> t.circle(50)
    >>> t.end_fill()    ##用RGB颜色来给圆填色
    黄色的圆

    1,用来画填色圆形的函数

    为了更容易地用不同的颜色来试验,我们来把画圆填色的代码写成一个函数:

    >>> def mycircle(red,green,blue):
        t.color(red,green,blue)
        t.begin_fill()
        t.circle(50)
        t.end_fill()

    我们可以只用绿色来画一个很亮的绿色的圆,如图A:

    >>> mycircle(0,1,0)

    也可以用一半的绿色(0.5)来画一个深绿色的圆,如图B:

    >>> mycircle(0,0.5,0)

    A:                           B:

    2,使用纯白和纯黑

    当天空没有了太阳,世界就变得一切黑暗(假设我们那时候还没有发明灯)。类比,如果让三种颜色都设置为0,就相当于没有光,这时候画出来的图形都是黑色的;反之为1全为白。

    >>> mycircle(0,0,0)

    五、画正方形的函数

    >>> def mysquare(size):
        for x in range(1,5):
            t.forward(size)
            t.left(90)
    >>> mysquare(25)
    >>> mysquare(50)
    >>> mysquare(75)
    >>> mysquare(100)
    >>> mysquare(125)

    效果如下:

    六、画填色正方形

    要对正方形填色,首先要重置画布,开始填色,然后在调用正方形函数,过程如下:

    >>> t.reset()
    >>> t.begin_fill()
    >>> mysquare(50)
    >>> t.end_fill()   ##加入这行代码前,你应当看到一个空的正方形,直到你结束填充

    效果如下:

    我们现在可以改变下这个函数,让它既可以画填好的正方形也可以画不填色的正方形。

    >>> def mysquare(size,filled):
        if filled == True:
            t.begin_fill()
            for x in range(1,5):
                t.forward(size)
                t.left(90)
            if filled == True:
                t.end_fill()

    下面我们可以画一个填了色的正方形:

    >>> mysquare(50,True)

    接着画一个没有填色的正方形:

    >>> mysquare(150,False)

    七、画填好色的星星

    现在我们要写一个mystar函数

    >>> def mystar(size,filled):
        if filled == True:    ##检查filled是否为真
            t.begin_fill()  ##如果是的话开始填充
        for x in range(1,19):
            t.forward(size)
            if x % 2 == 0:
                t.left(175)
            else:
                t.left(225)
            if filled == True:
                t.end_fill()
    mystar函数

    现在我们可以画一个金色(90%红色,75%绿色,0%的蓝色)的星星

    >>> t.color(0.9,0.75,0)
    >>> mystar(120,True)

    效果如下:

    要给星星画上轮廓,把颜色改成黑色并且不用填色再画一遍星星:

    >>> t.color(0,0,0)
    >>> mystar(120,False)

    效果如下:

    总结

    今天下午收获颇丰,忘记了吃饭,忘记了打游戏,一直在学习Python作图。学会了如何用turtle模块画几个基本的几何图形,还有用for循环和if语句来控制海龟在屏幕上的动作。同时可以改变海龟的笔的颜色并给它所画的形状填色。还用了一些函数(比如 def 函数)来重用绘图的代码,提高了效率。

  • 相关阅读:
    网络流入门
    Sereja and Swaps(贪心+暴力枚举区间)
    multiset
    欧拉路
    整除分块
    蓝魔法师
    选点
    F. Tree with Maximum Cost(换根)
    “db2执行sql语句,注释没了”的解决办法
    Mybatis中的自带Mapper方法
  • 原文地址:https://www.cnblogs.com/OctoptusLian/p/6363568.html
Copyright © 2020-2023  润新知