前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python中的高级turtle(海龟)作图(续)

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

作者头像
Zoctopus
发布2018-06-04 11:55:34
2.3K0
发布2018-06-04 11:55:34
举报

四、填色

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

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

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

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

效果如下:

代码语言:javascript
复制
>>> t.color(1,1,0)  ##100%的红色,100%的绿色,0%的蓝色
>>> t.begin_fill()  ##给后面的形状填色
>>> t.circle(50)
>>> t.end_fill()    ##用RGB颜色来给圆填色
1,用来画填色圆形的函数

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

代码语言:javascript
复制
>>> def mycircle(red,green,blue):
    t.color(red,green,blue)
    t.begin_fill()
    t.circle(50)
    t.end_fill()

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

代码语言:javascript
复制
>>> mycircle(0,1,0)

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

代码语言:javascript
复制
>>> mycircle(0,0.5,0)

A:

                           B:

2,使用纯白和纯黑

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

代码语言:javascript
复制
>>> mycircle(0,0,0)

五、画正方形的函数

代码语言:javascript
复制
>>> def mysquare(size):
    for x in range(1,5):
        t.forward(size)
        t.left(90)
代码语言:javascript
复制
>>> mysquare(25)
>>> mysquare(50)
>>> mysquare(75)
>>> mysquare(100)
>>> mysquare(125)

效果如下:

六、画填色正方形

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

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

效果如下:

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

代码语言:javascript
复制
>>> 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()

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

代码语言:javascript
复制
>>> mysquare(50,True)

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

代码语言:javascript
复制
>>> mysquare(150,False)

七、画填好色的星星

现在我们要写一个mystar函数

代码语言:javascript
复制
>>> 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()

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

代码语言:javascript
复制
>>> t.color(0.9,0.75,0)
>>> mystar(120,True)

效果如下:

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

代码语言:javascript
复制
>>> t.color(0,0,0)
>>> mystar(120,False)

效果如下:

总结

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-02-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 四、填色
    • 1,用来画填色圆形的函数
      • 2,使用纯白和纯黑
      • 五、画正方形的函数
      • 六、画填色正方形
      • 七、画填好色的星星
      • 总结
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档