1、Computer Knowledge and Technology电脑知识与技术数字媒体技术本栏目责任编辑:唐一东第19卷第3期(2023年1月)第19卷第3期(2023年1月)E-mail:http:/Tel:+86-551-65690963 65690964ISSN 1009-3044Computer Knowledge and Technology电脑知识与技术Vol.19,No.3,January2023基于Python语言的Turtle库绘图实例林晓芬(福建船政交通职业学院,福建 福州 350007)摘要:Python语言语法简洁、清晰、易读。学生在学习Python语言时,学习难度起
2、点低,容易入门。国内许多高校都开设了Python程序设计课程。Python语言的Turtle库设计巧妙,作图模型简单强大。初学者能很快编写出趣味生动的作图程序,极大地提高了学习者的兴趣和积极性。关键词:Python语言;turtle库中图分类号:TP311文献标识码:A文章编号:1009-3044(2023)03-0097-02开放科学(资源服务)标识码(OSID):Python语言语法简洁、清晰,是一门适合非计算机专业大学生学习的编程语言。Python有着十分强大的类库,其中的Turtle库能绘制简单且有规律的图形。在讲解Turtle库的知识前,应先介绍Python语言的顺序结构、选择结构和
3、循环结构和列表等基本知识。这样既有利于学生轻松地掌握代码的编写方法,又让学生更好地理解Pyhon语言的语法结构。Turtle库是Python的标准库之一,属于入门级的图形绘制函数库。标准库是随解释器直接安装到操作系统中的功能模块,第三方库是需要经过安装才能使用的功能模块。Turtle的中文意思是海龟,turtle模块通过控制画笔的移动来绘图,画笔就像是一只海龟在画布上爬,爬过的地方留下了痕迹,痕迹形成了图形。海龟可以前进、后退、左转、右转。海龟有一条尾巴,当尾巴抬起时,爬过的地方不留下痕迹,尾巴放下时,爬过的地方留下痕迹1-3。为提高学生的学习兴趣,教学时笔者选取了一些绘图案例,有正n边形、太
4、阳花、彩色螺旋线、奥运五环等4-5。这些图案的代码十分简单,很适合初学者的学习。学生在学习这些绘图代码时,用到了Python语言中的循环语句、列表、索引等知识,让学生在绘图的时候加深了Python语法结构的理解和运用能力。1 编程基础知识1.1 Python程序的语句结构计算机程序一般有三种语句结构:顺序结构、选择结构以及循环结构,利用这三种结构,可以编写出各种复杂的应用程序。顺序结构是程序中最基本的结构,它是任何程序的主体结构,在该结构中,各语句按照出现的先后次序依次执行。当需要根据给定的条件做出不同选择时,可以使用选择结构来处理。在Python中,选择结构有单分支结构、双分支结构和多分支结
5、构,分别用if语句、if.else.语句和if.elif.else.语句来实现。循环语句用来重复执行一条或多条语句,使用循环结构可以减少源程序重复书写的工作量,简化程序结构。在Python中,循环结构语句主要有while语句和for循环语句。本绘图实例中,笔者使用的是for循环语句。1.2 Turtle库的导入Turtle 的导入可以使用 from turtle import*或者import turtle 两种语句,前者在使用方法时不需要加turtle前缀,后者在使用方法时需要加上turtle.前缀,例如,向前语句turtle.forward(x)。1.3 Turtle库的基本函数Turtl
6、e库中函数较少且容易记忆,且许多函数的名字与海龟动作名称的自然语言一致,便于学生记忆。如:screensize(x,y,color),设置宽x、高y、颜色为color的画布;setup(x,y),设置宽x,高y的画布;forward(x),画笔向前移动x像素;backward(x),画笔向后移动x像素;left(x),画笔方向向左旋转x角度;right(x),画笔方向向右旋转x角度;shape(x),设置绘图时的造型,默认为小箭头;pensize(x),设置画笔的粗细;width(x),设置画笔的粗细;pencolor(x),设置画笔的颜色;color(x,y),设置画笔的颜色为x,设置填充的
7、颜色为y;fillcolor(x),设置图形的填充颜色;speed(x),设置画笔移动的速度,取值在0-10之间,1最慢,10最快,0不移动;penup(),画笔抬起;pendown(),画笔落下;goto(x,y),画笔移动到x,y处,画布中收稿日期:2022-08-15作者简介:林晓芬(1981),女,福建龙岩人,副教授,硕士,研究方向为生物质焦吸附脱硫脱氮。97DOI:10.14004/ki.ckt.2023.0163Computer Knowledge and Technology电脑知识与技术本栏目责任编辑:唐一东数字媒体技术第19卷第3期(2023年1月)第19卷第3期(2023年
8、1月)心为坐标原点;circle(R,E,S),画圆,R为圆的半径,E是圆弧的角度。R半径为正时在画笔的左边画圆,半径为负值时在画笔的右边画圆;reset(),清空窗口,画笔重新回到画布中央;clear(),清空窗口,但是画笔的位置和状态不会改变;begin_fill(),准备开始填充图形;end_fill(),填充完成;write(),书写;done(),海龟绘图结束标识,防止脚本结束后关闭画布。Python语言中的颜色非常丰富,常见的表示颜色的字符串有:“while”白色、“black”黑色、“green”绿色、“blue”蓝色、“yellow”黄色、“cyan”青色、“magenta”洋
9、红色、“purple”紫色、“brown”棕色、“pink”粉色、“gold”金色、“tomato”番茄色等。1.4 Turtle坐标系图1 turtle屏幕坐标系图2 turtle空间坐标系图3 turtle角度坐标系Turtle的坐标系有屏幕坐标系、空间坐标系和角度坐标系等。屏幕坐标系指的是画布与屏幕之间的相对位置关系,显示器屏幕的左上角为坐标原点,如图1所示。可以用setup(width,height,startx,starty)方法设置画布左上角与屏幕左上角之间的距离。空间坐标系是指画笔与画布之间的相对位置关系,默认坐标原点在画布的正中心,绘图时,画笔从画布的中心位置开始移动,画笔的方
10、向默认是x轴的正方向,如图2所示。角度坐标系如图3所示,x轴的正方向为0度,y轴的正方向为90度,可以通过setheading(angle)方法来设置画笔的方向。2 绘图实例笔者安装的Python版本是 Python-3.8.1(64-bit)。2.1 绘制彩色六边形图4 彩色六边形及其代码图4中的彩色六边形实际上是由6个正三角形组成的。利用circle()方法中的steps参数来画三角形,利用color()方法设置画笔颜色和填充颜色,利用列表colors和for循环语句来实现颜色的变化。程序设计结构是计算机语言教学中的重点和难点,结构化的程序设计有三种基本的结构:顺序结构、选择结构和循环结构
11、。在这个教学案例中,通过绘制正六边形,引导学生深入地理解循环结构。图5 彩色图形及其代码图5中的图形是由六个三角形和一个正六边形构成的。代码段中,首先定义了一个函数triangle,这个函数的作用是画正三角形。然后创建了一个列表colors,列表用来放颜色。然后用for循环画正六边形,循环六次,每循环一次的时候调用一次triangle函数,最终得到图5的图形。在这个教学案例中,通过绘图实例,引导学生理解循环的嵌套是如何实现图形的绘制。2.2 绘制彩虹图6 彩虹及代码图6中的彩虹是通过一个for循环语句和列表colors实现的。先创建一个列表colors来放颜色,然后设置画笔的宽度,因为是画彩虹
12、,所以画笔宽度要设得比较宽。然后用circle()方法来画半圆,每循环一次,circle()中的半径就要增大一次,画笔的颜色也要不断改变,这些是通过循环语句来实现的。setheading()方法用来设置画笔的方向。每次画笔的起点都不一样,这是通过goto()方法来实现的,但每一次画笔的起始方向都是一样的。2.3 绘制箭靶图7和图8是实现彩色圆环的两种方法。图7中所采用的方法,是从最外圈开始画圆,然后逐渐缩小画圆所用的半径值。图8中所采用的方法,是从最里圈开始画圆,然后逐渐增大画圆所用的半径值。(下转第102页)98Computer Knowledge and Technology电脑知识与技术
13、本栏目责任编辑:唐一东数字媒体技术第19卷第3期(2023年1月)第19卷第3期(2023年1月)不到的地方,可以进行优化,具体做法是删除相应的顶点和面;场景中的远景物体使用树立在远处的图片作为替代,不用真实的建模,在降低开发成本的同时,也降低了游戏渲染开销。(2)单位建模。在单位建模前,先使用平面设计软件对各类游戏单位进行概念设计,然后通过Cinema 4D建模软件,对各类单位进行3D建模。单位模型搭建好后,需要进行蒙皮处理。蒙皮是将骨骼与皮肤以及服饰进行绑定,绑定完成后,还需要根据游戏的策划需求,调节角色的动作。游戏建模图主场景如图7所示。图7 游戏建模图3 总结和展望3.1 总结目前,该
14、游戏的主体框架得到了实现,游戏单位模型已经完成。游戏操作性上,与原版游戏相比,有了部分改进。游戏配音方面,部分单位加入了特殊配音。3.2 展望本游戏用到了 Cinema 4D 软件来设计模型,用shp builder进行了模型和动画的渲染,用Ps设计了游戏单位的图标,游戏大体上已经成熟,但还有一些内容需要完善:1)游戏模型虽然大体上已完成,但部分模型缺乏创新性,并不是完全创造一个新的兵种,而是基于已有兵种进行的改进。2)游戏建筑模型方面,虽然建筑模型大都没有瑕疵,但是部分模型缺乏创新性,这是下一阶段需要努力一点。3)游戏并没有经过长时间的测试,稳定性方面有待进一步测试,比如:不同版本的Wind
15、ows系统能否兼容、游戏会不会出现黑屏或者闪退、游戏会不会出现无法操作的现象等。将会在下一阶段进行更多的测试。参考文献:1 刘宝庆.红色警戒2 简介J.上海微型计算机,2000(21):38.2 陈守凤.西藏军民两次抗英作战述评J.军事史林,2021(3):64-74.3 李恬.基于流场寻路算法的即时战略游戏研究D.青岛:青岛大学,2020.4 刘寒.即时战略游戏种族造型逐级设计方法研究以 星际争霸 为例J.装饰,2018(1):138-139.5 孙洪迪,贾民政,杨民峰.基于LayaAir引擎的3D休闲闯关游戏的设计与实现J.北京工业职业技术学院学报,2021,20(4):18-22.【通联
16、编辑:唐一东】(上接第98页)图7 彩色圆环及其代码1图8 彩色圆环及其代码2这两种方法都使用了 for 循环语句和 circle()方法。画图时,要注意画笔的初始位置和画笔的方向,才能画出想要的图形。3 结论Turtle库是一个简单易学的绘图库,学习门槛低,绘图函数易学易记。在计算机程序设计教学中,改变以往把解决数学问题作为编程例题的做法,把图形绘制带入程序设计教学中。教学实践表明,通过各种有趣、生动鲜明、贴合生活实际的绘图实例,可以激发学生学习Python语言的兴趣,增强学生学习编程的信心6,Turtle库可以作为学习Python语言的入门库。参考文献:1 王丽丽.神秘的图腾-Python 海龟绘图J.中国信息技术教育,2018(8):53-55.2 陈斌,陈天翔.Python turtle的多学科创意编程J.中国科技教育,2019(6):20-23.3 毛京宇,魏云靖.有趣的Python turtle绘图J.中国科技教育,2019(6):16-19.4 林晓芬.Turtle海龟画图之螺旋线J.电脑知识与技术,2020,16(32):199-201.5 林晓芬.利用Python语言