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 函数)来重用绘图的代码,提高了效率。
Python中的高级turtle(海龟)作图(续)的更多相关文章
- Python中的高级turtle(海龟)作图
在Python里,海龟不仅可以画简单的黑线,还可以用它画更复杂的几何图形,用不同的颜色,甚至还可以给形状填色. 一.从基本的正方形开始 引入turtle模块并创建Pen对象: >>> ...
- Python中的高级数据结构详解
这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考 ...
- Python中的高级数据结构(转)
add by zhj: Python中的高级数据结构 数据结构 数据结构的概念很好理解,就是用来将数据组织在一起的结构.换句话说,数据结构是用来存储一系列关联数据的东西.在Python中有四种内建的数 ...
- 小白学Python(20)—— Turtle 海龟绘图
Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行 ...
- Python中的高级变量类型
高级变量类型 目标 列表 元组 字典 字符串 公共方法 变量高级 知识点回顾 Python 中数据类型可以分为 数字型 和 非数字型 数字型 整型 (int) 浮点型(float) 布尔型(bool) ...
- Python中的高级特性
1.切片.使用“[”和“]”即可,类似Matlab,可以切list,tuple,字符串等. 2.迭代.Python内置的enumerate函数可以把一个list变成索引-元素对. 3.列表生成式.列表 ...
- Python中的高级数据结构
数据结构 数据结构的概念很好理解,就是用来将数据组织在一起的结构.换句话说,数据结构是用来存储一系列关联数据的东西.在Python中有四种内建的数据结构,分别是List.Tuple.Dictionar ...
- python 中的高级函数filter()
filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filt ...
- turtle海龟作图
个人心得:python这么火是有他的原因的,突然发现他的语言很有趣,库函数也很多. 这次是第一步,简单了解了一下turtle函数 import turtle import time def drawS ...
随机推荐
- 实例分析JVM安全体系:双亲委派、命名空间、保护域、策略
在了解双亲委派模型之前,先了解一下类加载器的概念: 类加载器的作用就是将真实的class文件根据位置将该Java类的字节码装入内存,并生成对应的Class对象.用户可以通过继承ClassLoader和 ...
- pandas数组(pandas Series)-(2)
pandas Series 比 numpy array 要强大很多,体现在很多方面 首先, pandas Series 有一些方法,比如: describe 方法可以给出 Series 的一些分析数据 ...
- 使用windowAnimations定义Activity及Dialog的进入退出效果
看了android的源代码和资源文件,终于明白如何去修改设置Dialog和Activity的进入和退出效果了.设置Dialog首先通过getWindow()方法获取它的窗口,然后通过getAttrib ...
- SAP NetWeaver BW 7.3介绍
(摘自SAP 官方 EIM300 SAP NetWeaver BW 7.3 特色功能.前景展望与路线图)
- js 实现数组元素交换位置
/** * 数组元素交换位置 * @param {array} arr 数组 * @param {number} index1 添加项目的位置 * @param {number} index2 删除项 ...
- LeetCode: Minimum Path Sum 解题报告
Minimum Path Sum Given a m x n grid filled with non-negative numbers, find a path from top left to b ...
- Logistic回归分析简介
Logistic回归:实际上属于判别分析,因拥有很差的判别效率而不常用. 1. 应用范围: ① 适用于流行病学资料的危险因素分析 ② 实验室中药物的剂量-反应关系 ③ 临床试验 ...
- new、delete、以及queue类
本来以为很容易的,结果还是写了我两个小时. 用指针模拟queue类,再加上类,各种错误,总算是解决掉了-- #include<iostream> #include<cstdlib&g ...
- logrotate 日志轮询(转存)
1.建立/etc/logrotate.d/nginx文件[1] vim /etc/logrotate.d/nginx 2.写入如下内容: /var/log/nginx/*log { daily rot ...
- MySQL 中联合查询效率分析
目前我有两个表,一个keywords和一个news表.keyword存放关键词是从news中提取,通newsid进行关联,两表关系如图: keywords中存有20万条数据,news中有2万条数据,现 ...