Fork me on GitHub
打赏

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 函数)来重用绘图的代码,提高了效率。

 

posted @ 2017-02-03 22:04  Zoctopus_Zhang  阅读(11250)  评论(0编辑  收藏  举报
// function btn_donateClick() { var DivPopup = document.getElementById('Div_popup'); var DivMasklayer = document.getElementById('div_masklayer'); DivMasklayer.style.display = 'block'; DivPopup.style.display = 'block'; var h = Div_popup.clientHeight; with (Div_popup.style) { marginTop = -h / 2 + 'px'; } } function MasklayerClick() { var masklayer = document.getElementById('div_masklayer'); var divImg = document.getElementById("Div_popup"); masklayer.style.display = "none"; divImg.style.display = "none"; } setTimeout( function () { document.getElementById('div_masklayer').onclick = MasklayerClick; document.getElementById('btn_donate').onclick = btn_donateClick; var a_gzw = document.getElementById("guanzhuwo"); a_gzw.href = "javascript:void(0);"; $("#guanzhuwo").attr("onclick","follow('33513f9f-ba13-e011-ac81-842b2b196315');"); }, 900);