小学Python系列少儿编程课程《第6章 会画画的“小海龟”》课件(共37张PPT)

资源下载
  1. 二一教育资源

小学Python系列少儿编程课程《第6章 会画画的“小海龟”》课件(共37张PPT)

资源简介

(共37张PPT)
Python少儿编程
第六章 会画画的“小海龟”
目录
1.1
“小海龟”的自我介绍
1.2
“小海龟”的画布
1.3
“小海龟”的画笔
1.4
多彩的图画
PART 01
“小海龟”的自我介绍
“小海龟”的自我介绍
1
turtle图形库源于1967年诞生的Logo语言,是Python有趣的绘图工具。turtle库因其简单便捷的图形化方法和立即反馈式的绘画效果,大大增强了编程的趣味性,也因此成为Python编程初学者的首选。
turtle库的使用原理其实很简单,我们可以把它想象成一只在沙滩上爬行的小海龟,在它的身后会留下深深的轨迹,沙滩就是画布,轨迹就是图形。在计算机中,可以把窗口看作画布,程序就是指挥员,控制小海龟在窗口上移动,经过的轨迹就是图形。
利用turtle库,可以绘制各种简单到复杂的图形,如图6-1所示。
图6-1 利用turtle库绘制的图形
“小海龟”的自我介绍
1
就是标准坐标系,即以绘图界面的中心点为坐标原点(0,0),以x坐标正方向为0度角,逆时针旋转。turtle库中默认使用standard模式。
(1)standard模式
(2)logo模式
(3)world模式
是以绘图界面的中心点为坐标原点(0,0),以y坐标正方向为0度角,顺时针旋转。
使用用户自定义的“世界坐标系”。
turtle库的坐标和角度系统
PART 02
“小海龟”的画布
“小海龟”的画布
2
导入turtle库后直接运行程序,会默认创建一个空白窗口,其绘图区域(即画布)使用直角坐标系(x坐标和y坐标)描述位置,原点在中心。turtle库提供了多种函数用于设置窗口,如表6-1所示。
表6-1 turtle库提供的用于设置窗口的函数
“小海龟”的画布
2
【例6-1】 设置窗口的背景颜色和图片。
【参考代码】
import turtle #导入turtle库
turtle.setup(500, 500) #设置窗口大小
turtle.bgcolor('Green') #设置窗口背景颜色
turtle.bgpic('蝴蝶.gif') #设置背景图片
turtle.done() #完成
“小海龟”的画布
2
【运行结果】 程序运行结果如图6-2所示。
图6-2 例6-1程序运行结果
【程序说明】 使用turtle库绘制图形时,程序最后须使用done()函数使程序暂停,停止画笔绘制,但不关闭绘图窗口。
PART 03
“小海龟”的画笔
移动画笔
3.1
turtle库提供了多种函数用于移动画笔,使其在画布上绘制图形,常用的函数如表6-2所示。
表6-2 turtle库提供的用于移动画笔常用的函数
移动画笔
3.1
表6-2 turtle库提供的用于移动画笔常用的函数(续)
移动画笔
3.1
表6-2 turtle库提供的用于移动画笔常用的函数(续)
移动画笔
3.1
【例6-2】 绘制五角星。
【问题分析】 创建变量distance表示五角星的边长,然后循环5次绘制边。循环中使用forward()函数前进distance,然后使用right()函数右转144度。其中,144度为五角星的外角角度,其计算方法为180 180/5,180/5为五角星的内角角度。
【参考代码】
import turtle #导入turtle库
turtle.shape('turtle') #设置为海龟形状
distance = 200 #设置前进距离
for i in range(5): #循环5次
turtle.forward(distance) #前进distance
turtle.right(144) #右转144度
turtle.done() #完成
移动画笔
3.1
【运行结果】 程序运行结果如图6-3所示。
图6-3 例6-2程序运行结果
【程序说明】 此案例中可使用多种函数移动画笔,改变朝向时也可左转,只是绘制的五角星的方向不同。
控制画笔
3.2
绘制图形时,有时需要移动画笔,但不想留下轨迹,此时可以通过控制画笔的抬起和落下来实现。此外,还可以设置画笔的颜色和粗细,turtle库中常用的控制画笔的函数如表6-3所示。
表6-3 turtle库中常用的控制画笔的函数
控制画笔
3.2
【例6-3】 绘制一条逐渐变粗的红色虚线。
【问题分析】 虚线由多段短的空白和短线组成,可以使用循环实现。在循环中,使用pensize()函数的返回值加0.2设置下一次短线的粗细,然后画笔放下,绘制长度为5的短线后画笔抬起,画笔前进5,完成一次绘制。
【参考代码】
import turtle #导入turtle库
turtle.shape('turtle') #设置为海龟形状
turtle.pencolor('Red') #设置画笔颜色为红色
控制画笔
3.2
【参考代码】(续)
for i in range(20): #循环20次
turtle.pensize(turtle.pensize() + 0.2) #设置画笔粗细
turtle.pendown() #画笔落下
turtle.forward(5) #前进5
turtle.penup() #画笔抬起
turtle.forward(5) #前进5
turtle.done() #完成
【运行结果】 程序运行结果如图6-4所示。
图6-4 例6-3程序运行结果
画圈
3.3
turtle库提供了circle()函数用于绘制圆,其语法格式如下。
circle(radius, extent=None, steps=None)
其中,radius表示半径;extent表示夹角,用于绘制圆的一部分,如果缺省,则绘制整个圆,如果不是完整的圆周(360的倍数),则以当前画笔位置为端点绘制圆弧;steps表示边的数量,由于圆实际是内切正多边形近似得到的,所以此方法也可用于绘制正多边形,边数由steps决定。
绘制圆时,如果radius为正值表示逆时针方向绘制圆,否则表示顺时针方向绘制圆,最终画笔的朝向会依据extent的值改变。
画圈
3.3
【例6-4】 绘制圆、正五边形、圆弧和五边弧线。
【参考代码】
import turtle #导入turtle库
turtle.circle(50) #绘制半径为50的圆
turtle.penup() #画笔抬起
turtle.forward(150) #前进150
turtle.pendown() #画笔落下
turtle.circle(50, steps=5) #绘制半径为50的正五边形
turtle.penup() #画笔抬起
turtle.forward(150) #前进150
turtle.pendown() #画笔落下
turtle.circle(50, 180) #绘制半径为50,夹角为180度的圆弧
画圈
3.3
【参考代码】(续)
turtle.penup() #画笔抬起
turtle.home() #回到原点
turtle.forward(450) #前进450
turtle.pendown() #画笔落下
turtle.circle(50, 180, 5) #绘制半径为50,夹角为180度,边数为5的弧线
turtle.done() #完成
【运行结果】 程序运行结果如图6-5所示。
图6-5 例6-4程序运行结果
画圈
3.3
【程序说明】 从运行结果可以看出,第1次调用circle()函数时只有radius参数(50),绘制的是一个圆;第2次调用circle()函数时有radius和steps参数(50和5),绘制的是一个正五边形;第3次调用circle()函数时有radius和extent参数(50和180),绘制的是一个180度的圆弧;第4次调用circle()函数时有radius、extent和steps参数(50、180和5),绘制的是一个180度的五边弧线。
turtle库还提供了dot()函数用于绘制圆点,其语法格式如下。
turtle.dot(size=None, *color)
其中,size表示圆点直径,缺省时,size取pensize+4和2*pensize中的较大值;color表示圆点颜色,缺省时为当前画笔颜色。绘制圆点时,当前画笔位置为圆心。
画圈
3.3
【例6-5】 绘制圆和圆点。
【参考代码】
import turtle #导入turtle库
turtle.circle(50) #绘制半径为50的圆
turtle.dot(50) #绘制直径为50的圆点
turtle.done() #完成
【运行结果】 程序运行结果如图6-6所示。
图6-6 例6-5程序运行结果
【程序说明】 从运行结果可以看出,虽然circle()和dot()函数的参数相同,都为50,但在circle()函数中表示半径,而在dot()函数中表示直径,所以圆和圆点的大小不同。
写字
3.4
write(arg,move=False,align='left',font=('Arial',8,'normal'))
turtle库提供了write()函数用于写字,其语法格式如下。
其中,arg表示文字;move表示画笔是否跟随文字移动到文字右下角,如果为True则移动;align表示对齐方式,为一个字符串,可取值“left”“center”或“right”;font表示字体格式,为一个元组,包括字体、大小和类型。
写字
3.4
【例6-6】 “小海龟”的自我介绍。
【问题分析】 首先,设置字体,并抬起画笔不画线,写第1行字;然后,画笔右转90度,前进30(向下移一行)后,写第2行字;最后,画笔前进30后,写第3行字。
【参考代码】
import turtle #导入turtle库
font1 = ('黑体', 14, 'normal') #设置字体
turtle.penup() #画笔抬起
turtle.write('大家好,', True, font=font1) #写第1行字
turtle.right(90) #右转90度
turtle.forward(30) #前进30
turtle.write('我是小海龟,', True, font=font1) #写第2行字
写字
3.4
【参考代码】(续)
turtle.forward(30) #前进30
#写第3行字
turtle.write('我可以帮大家绘制各种漂亮的图形哦!', True, font=font1)
turtle.done() #完成
【运行结果】 程序运行结果如图6-7所示。
图6-7 例6-6程序运行结果
【程序说明】 从运行结果可以看出,画笔右转90度后,朝向变为南,但是显示的字还是从左到右,且画笔跟随文字移动到右下角。
PART 04
多彩的图画
多彩的图画
4
turtle库还提供了fillcolor(*args)函数设置或返回图形的填充颜色,其中,args表示填充的颜色,它有下面4种格式。
(1)调用本身、bgcolor()函数或pencolor()函数的返回值。
(2)指定的Tk标准颜色字符串,如“Red”(红色)、“Yellow”(黄色)、“#ff0000”(红色)等。
(3)r、g、b元组表示的RGB颜色,如fillcolor((1.0,0,0))。r、g、b取值范围为0~colormode,其中,colormode的值为1.0或255。如果colormode的值取255,须先使用colormode(255)函数设置颜色模式为255,且r、g、b须为整数。
(4)r、g、b表示的RGB颜色,如fillcolor(1.0,0,0)。
turtle库还提供了color(*args)函数同时设置或返回画笔和填充颜色。如果只有一个参数,表示画笔和填充颜色相同;如果有两个参数,则第一个参数表示画笔颜色,第二个参数表示填充颜色。
多彩的图画
4
【例6-7】 绘制不同颜色花瓣的6花瓣图形。
【问题分析】 首先进行初始化设置(圆弧半径radius为150,花瓣数n为6,画笔颜色为红色);然后计算圆弧夹角extent和正多边形的内角angle,其中,extent=360/n,angle=(n 2)*180/n;最后循环绘制6个花瓣。
其中,一个花瓣的绘制过程为:首先随机生成r、g、b,并设置填充颜色;接着绘制半径为radius、夹角为extent度的圆弧,并左转angle度后,再绘制半径为radius、夹角为extent度的圆弧;然后左转180度;最后填充颜色。
多彩的图画
4
【参考代码】
import turtle #导入turtle库
import random #导入random库
radius = 150 #初始化圆弧半径为150
n = 6 #初始化花瓣数为6
extent = 360/n #计算绘制圆弧的夹角
angle = (n-2)*180/n #计算正n边形的内角
turtle.colormode(255) #设置颜色模式为255
turtle.pencolor('Red') #设置画笔颜色为红色
多彩的图画
4
【参考代码】(续)
for i in range(n): #循环n次
r = random.randint(0, 255) #生成1~255的随机整数并赋给r
g = random.randint(0, 255) #生成1~255的随机整数并赋给g
b = random.randint(0, 255) #生成1~255的随机整数并赋给b
turtle.fillcolor(r, g, b) #设置填充颜色为随机生成的r、g、b
turtle.begin_fill() #开始填充
turtle.circle(radius, extent) #绘制半径为radius的extent度圆弧
turtle.left(angle) #左转angle度
turtle.circle(radius, extent) #绘制半径为radius的extent度圆弧
turtle.left(180) #左转180度
turtle.end_fill() #结束填充
turtle.done() #完成
多彩的图画
4
【运行结果】 程序运行结果如图6-8所示。
图6-8 例6-7程序运行结果
多彩的图画
4
【例6-8】 根据输入的边数绘制彩色螺旋线。
【问题分析】 螺旋线可以看作是由逐渐变大的多边形交叉螺旋而成。例如,边数为5时,效果如图6-9所示。
首先,设置颜色列表,包含6种颜色;然后,定义函数spirals(n)循环画线(n取值2~6,循环变量为x)绘制螺旋线,循环中选择列表中的颜色(索引为x%n)设置为画笔颜色后,画笔前进2*x像素,再左转360/n+1度(正n边形的外角为360/n度,由于螺旋线应向外扩展,所以左转角度为外角度数加1度);最后输入边数,调用spirals()函数。
多彩的图画
4
图6-9 5边彩色螺旋线
多彩的图画
4
【参考代码】
import turtle as t #导入turtle库为t
#创建颜色列表
colors = ['Red', 'Black', 'Purple', 'Blue', 'Green', 'Brown']
def spirals(n): #定义spirals()函数,参数为边数
t.tracer(False) #不显示绘制过程
for x in range(360): #循环360次
t.pencolor(colors[x % n]) #设置画笔颜色
t.forward(2 * x) #前进x的2倍
#左转正n边形的外角度数加1度,形成交叉螺旋
t.left(360 / n + 1)
t.tracer(True) #显示绘制轨迹
n = int(input('请输入边数:')) #输入边数
spirals(n) #调用spirals()函数
t.done() #完成
多彩的图画
4
【运行结果】 运行程序,输入边数(3或6),绘制结果如图6-10所示。
图6-10 例6-8程序运行结果
感谢观看

展开更多......

收起↑

资源预览