小学Python系列少儿编程课程《第6章 会画画的“小海龟”》课件_第1页
小学Python系列少儿编程课程《第6章 会画画的“小海龟”》课件_第2页
小学Python系列少儿编程课程《第6章 会画画的“小海龟”》课件_第3页
小学Python系列少儿编程课程《第6章 会画画的“小海龟”》课件_第4页
小学Python系列少儿编程课程《第6章 会画画的“小海龟”》课件_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python少儿编程第六章会画画的“小海龟”目录1.1“小海龟”的自我介绍1.2“小海龟”的画布1.3“小海龟”的画笔1.4多彩的图画PART01“小海龟”的自我介绍“小海龟”的自我介绍1turtle图形库源于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库的坐标和角度系统PART02“小海龟”的画布“小海龟”的画布2导入turtle库后直接运行程序,会默认创建一个空白窗口,其绘图区域(即画布)使用直角坐标系(x坐标和y坐标)描述位置,原点在中心。turtle库提供了多种函数用于设置窗口,如表6-1所示。表6-1turtle库提供的用于设置窗口的函数“小海龟”的画布2【例6-1】

设置窗口的背景颜色和图片。【参考代码】importturtle #导入turtle库turtle.setup(500,500) #设置窗口大小turtle.bgcolor('Green') #设置窗口背景颜色turtle.bgpic('蝴蝶.gif') #设置背景图片turtle.done() #完成“小海龟”的画布2【运行结果】

程序运行结果如图6-2所示。图6-2例6-1程序运行结果【程序说明】

使用turtle库绘制图形时,程序最后须使用done()函数使程序暂停,停止画笔绘制,但不关闭绘图窗口。PART03“小海龟”的画笔移动画笔3.1turtle库提供了多种函数用于移动画笔,使其在画布上绘制图形,常用的函数如表6-2所示。表6-2turtle库提供的用于移动画笔常用的函数移动画笔3.1表6-2turtle库提供的用于移动画笔常用的函数(续)移动画笔3.1表6-2turtle库提供的用于移动画笔常用的函数(续)移动画笔3.1【例6-2】

绘制五角星。【问题分析】

创建变量distance表示五角星的边长,然后循环5次绘制边。循环中使用forward()函数前进distance,然后使用right()函数右转144度。其中,144度为五角星的外角角度,其计算方法为180−180/5,180/5为五角星的内角角度。【参考代码】importturtle #导入turtle库turtle.shape('turtle') #设置为海龟形状distance=200 #设置前进距离foriinrange(5): #循环5次turtle.forward(distance) #前进distanceturtle.right(144) #右转144度turtle.done() #完成移动画笔3.1【运行结果】

程序运行结果如图6-3所示。图6-3例6-2程序运行结果【程序说明】此案例中可使用多种函数移动画笔,改变朝向时也可左转,只是绘制的五角星的方向不同。控制画笔3.2绘制图形时,有时需要移动画笔,但不想留下轨迹,此时可以通过控制画笔的抬起和落下来实现。此外,还可以设置画笔的颜色和粗细,turtle库中常用的控制画笔的函数如表6-3所示。表6-3turtle库中常用的控制画笔的函数控制画笔3.2【例6-3】

绘制一条逐渐变粗的红色虚线。【问题分析】

虚线由多段短的空白和短线组成,可以使用循环实现。在循环中,使用pensize()函数的返回值加0.2设置下一次短线的粗细,然后画笔放下,绘制长度为5的短线后画笔抬起,画笔前进5,完成一次绘制。【参考代码】importturtle #导入turtle库turtle.shape('turtle') #设置为海龟形状turtle.pencolor('Red') #设置画笔颜色为红色控制画笔3.2【参考代码】(续)foriinrange(20): #循环20次turtle.pensize(turtle.pensize()+0.2) #设置画笔粗细turtle.pendown() #画笔落下turtle.forward(5) #前进5turtle.penup() #画笔抬起turtle.forward(5) #前进5turtle.done() #完成【运行结果】

程序运行结果如图6-4所示。图6-4例6-3程序运行结果画圈3.3turtle库提供了circle()函数用于绘制圆,其语法格式如下。circle(radius,extent=None,steps=None)其中,radius表示半径;extent表示夹角,用于绘制圆的一部分,如果缺省,则绘制整个圆,如果不是完整的圆周(360的倍数),则以当前画笔位置为端点绘制圆弧;steps表示边的数量,由于圆实际是内切正多边形近似得到的,所以此方法也可用于绘制正多边形,边数由steps决定。绘制圆时,如果radius为正值表示逆时针方向绘制圆,否则表示顺时针方向绘制圆,最终画笔的朝向会依据extent的值改变。画圈3.3【例6-4】

绘制圆、正五边形、圆弧和五边弧线。【参考代码】importturtle #导入turtle库turtle.circle(50) #绘制半径为50的圆turtle.penup() #画笔抬起turtle.forward(150) #前进150turtle.pendown() #画笔落下turtle.circle(50,steps=5) #绘制半径为50的正五边形turtle.penup() #画笔抬起turtle.forward(150) #前进150turtle.pendown() #画笔落下turtle.circle(50,180) #绘制半径为50,夹角为180度的圆弧画圈3.3【参考代码】(续)turtle.penup() #画笔抬起turtle.home() #回到原点turtle.forward(450) #前进450turtle.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】

绘制圆和圆点。【参考代码】importturtle #导入turtle库turtle.circle(50) #绘制半径为50的圆turtle.dot(50) #绘制直径为50的圆点turtle.done() #完成【运行结果】

程序运行结果如图6-6所示。图6-6例6-5程序运行结果【程序说明】从运行结果可以看出,虽然circle()和dot()函数的参数相同,都为50,但在circle()函数中表示半径,而在dot()函数中表示直径,所以圆和圆点的大小不同。写字3.4write(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行字。【参考代码】importturtle #导入turtle库font1=('黑体',14,'normal') #设置字体turtle.penup() #画笔抬起

turtle.write('大家好,',True,font=font1) #写第1行字turtle.right(90) #右转90度turtle.forward(30) #前进30turtle.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度后,朝向变为南,但是显示的字还是从左到右,且画笔跟随文字移动到右下角。PART04多彩的图画多彩的图画4turtle库还提供了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【参考代码】importturtle #导入turtle库importrandom #导入random库radius=150 #初始化圆弧半径为150n=6 #初始化花瓣数为6extent=360/n #计算绘制圆弧的夹角angle=(n-2)*180/n #计算正n边形的内角turtle.colormode(255) #设置颜色模式为255turtle.pencolor('Red') #设置画笔颜色为红色多彩的图画4【参考代码】(续)foriinrange(n): #循环n次r=random.randint(0,255) #生成1~255的随机整数并赋给rg=random.randint(0,255) #生成1~255的随机整数并赋给gb=random.randint(0,255) #生成1~255的随机整数并赋给bturtle.fillcolor(r,g,b) #设置填充颜色为随机生成的r、g、bturtle.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种颜色;然后,定义函数sp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论