四、填色

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

Python中的高级turtle(海龟)作图(续)的更多相关文章

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

    在Python里,海龟不仅可以画简单的黑线,还可以用它画更复杂的几何图形,用不同的颜色,甚至还可以给形状填色. 一.从基本的正方形开始 引入turtle模块并创建Pen对象: >>> ...

  2. Python中的高级数据结构详解

    这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考 ...

  3. Python中的高级数据结构(转)

    add by zhj: Python中的高级数据结构 数据结构 数据结构的概念很好理解,就是用来将数据组织在一起的结构.换句话说,数据结构是用来存储一系列关联数据的东西.在Python中有四种内建的数 ...

  4. 小白学Python(20)—— Turtle 海龟绘图

    Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行 ...

  5. Python中的高级变量类型

    高级变量类型 目标 列表 元组 字典 字符串 公共方法 变量高级 知识点回顾 Python 中数据类型可以分为 数字型 和 非数字型 数字型 整型 (int) 浮点型(float) 布尔型(bool) ...

  6. Python中的高级特性

    1.切片.使用“[”和“]”即可,类似Matlab,可以切list,tuple,字符串等. 2.迭代.Python内置的enumerate函数可以把一个list变成索引-元素对. 3.列表生成式.列表 ...

  7. Python中的高级数据结构

    数据结构 数据结构的概念很好理解,就是用来将数据组织在一起的结构.换句话说,数据结构是用来存储一系列关联数据的东西.在Python中有四种内建的数据结构,分别是List.Tuple.Dictionar ...

  8. python 中的高级函数filter()

    filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filt ...

  9. turtle海龟作图

    个人心得:python这么火是有他的原因的,突然发现他的语言很有趣,库函数也很多. 这次是第一步,简单了解了一下turtle函数 import turtle import time def drawS ...

随机推荐

  1. mysql trigger 触发器

    创建触发器: CREATE [DEFINER = {user|CURRENT_USER}] TRIGGER trigger_name trigger_time trigger_event ON tbl ...

  2. rdesktop 指定服务器的分频率

    rdesktop -uAdministrator -g 1265x728 10.100.0.225 &

  3. regularization

    https://www.zhihu.com/question/20924039 http://52opencourse.com/133/coursera%E5%85%AC%E5%BC%80%E8%AF ...

  4. Matlab 程序结束后发送短信或者邮件

    近期,在服务器上运行matlab程序,由于数据比较多,程序比较复杂,运行时间不固定,而且需要经常改变参数,重复运行几次,所以不清楚程序何时结束,以便于修改参数,继续运行.开始有时间就看看程序是否运行结 ...

  5. 每日英语:Are Smartphones Turning Us Into Bad Samaritans?

    In late September, on a crowded commuter train in San Francisco, a man shot and killed 20-year-old s ...

  6. Python 操作redis有序集合(sorted set)

    #coding:utf8 import redis r =redis.Redis(host=") 1.Zadd Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中.如果某个成员 ...

  7. spark on alluxio和MR on alluxio测试(改进版)【转】

    转自:http://kaimingwan.com/post/alluxio/spark-on-alluxiohe-mr-on-alluxioce-shi-gai-jin-ban 1. 介绍 2. 准备 ...

  8. kindeditor自定义插件插入视频代码

    kindeditor自定义插件插入视频代码 1.添加插件js 目录:/kindeditor/plugins/diy_video/diy_video.js KindEditor.plugin('diy_ ...

  9. strrchr()函数

    函数简介 函数名称: strrchr 函数原型:char *strrchr(const char *str, char c); 所属库: string.h 函数功能:查找一个字符c在另一个字符串str ...

  10. [转]handsontable常规配置的中文API

    原文地址:http://blog.csdn.net/mafan121/article/details/46050049 常规配置: 1.固定行列位置 fixedRowsTop:行数 //固定顶部多少行 ...