python创意编程100例turtle篇_Python turtle的多学科创意编程

本文介绍了Python内置的turtle模块在科技教育中的应用,通过多个学科的创意编程实例,如交互游戏、数学对象可视化等,展示了turtle模块的特性与功能。文章详细分析了如何使用turtle进行游戏设计、数学图形绘制,并提供了相关的代码和资源链接,旨在为Python创意编程教学和高中Python课程提供参考案例。
摘要由CSDN通过智能技术生成

点击上方“科技学堂”订阅最新科技教育信息

近日,以“智能时代,逐梦成长”为主题的第5届全国青少年创意编程与智能设计大赛正式开始,本届大赛增加了Python创意编程比赛。《中国科技教育》2019年第6期专题“跟着‘小海龟’学Python”栏目,北京大学的陈斌、陈天翔用七个不同学科的案例帮助我们认识Python在科技教育中的应用。

Python 语言中内置的海龟作图turtle 模块设计巧妙,作图模型简单强大,能够让程序设计初学者很快编写出趣味生动的作图程序,极大提高编程学习的兴趣和积极性,在练习过程中培养和提高计算思维。除了绘制图形之外,Python turtle 模块还具有基本的交互功能,加上学习门槛低,又是Python 语言内置的标准模块,所以非常适合作为创意编程的学习和开发平台。本文以Python turtle 模块为核心,展示和分析交互游戏、数学对象可视化等学科领域的创意编程实例,并介绍turtle 模块的深入编程,以供创意编程的教学参考,也可用于高中Python 程序设计课程的教学案例。

本文实例所涉及的代码和截图,均可通过链接(https://github.com/chbpku/bdfz.courses/wiki)访问获取。

01

交互游戏:接苹果

本作品是一个通过鼠标控制的交互游戏。程序运行后,在turtle 窗口中会有随机数量和位置的红色苹果从顶端向下掉落,掉落速度各不相同。用户需要通过鼠标拖动窗口中间的三角形状“托篮”接住每一个苹果。托篮可以在窗口中随意移动,如果接住苹果,则加10 分,分数在窗口左下角实时更新显示,但如果未能接住苹果使其掉出窗口下沿的话,则惩罚性地减100 分。由于苹果产生的位置和速度均为随机,数量不定,惩罚性减分幅度大,游戏还是有相当难度的,想一直保持正分不太容易。最后点击关闭窗口即可退出游戏。游戏运行效果如图1 所示。

f421d8634848da116f126398d34b4481.png

图1

turtle 功能

本作品涉及到的turtle模块功能主要有5个。

第1个是海龟绘图加速功能,通过在程序前部加tracer方法调用禁止动画显示。

        1    import turtle, random

        2    

        3     turtle.tracer(0)

并在每帧绘制结束后调用update 方法进行屏幕刷新,让绘制的图形一次性显示在窗口里。

        42     # 刷新屏幕

        43     turtle.update()

第2个是turtle 模块的鼠标交互功能,如程序中的第17 行。

        12     # 接苹果的篮子

        13     turtle.addshape('basket', ((-100, 0),(100, 0), (0, -25)))

        14     basket = model.clone()

        15     basket.shape('basket')

        16     basket.setheading(90)

        17     basket.ondrag(basket.goto) # 把goto 函数绑定到鼠标拖动事件上

        18     basket.showturtle() 

将海龟basket 的拖动事件绑定到basket的goto 函数,这样,当用户用鼠标点击这个海龟并进行拖动的时候,会触发drag 事件,实现调用basket.goto 函数,并将事件发生时海龟的坐标作为参数传递给basket.goto 函数,从而实现鼠标拖动到哪里,海龟basket 就跟到哪里的交互效果。海龟的鼠标交互事件还有点击事件onclick、释放事件onrelease,都可以绑定处理函数,从而实现点击、释放鼠标各个按钮的交互。

第3 个是海龟克隆功能,如程序中的第14行,海龟model 的clone 方法,可以将model对象复制1 个,赋值给basket,克隆会产生新的海龟对象,并且保留原海龟对象的所有属性值。利用克隆功能,能够很方便地复制出相互独立而又具有相同初始属性的多个海龟,这些图 1 海龟后续修改属性并不会相互影响。

第4 个是海龟形状设定功能,如程序中的第13、15 行,由于鼠标交互需要整体拖动一个图形,我们就可以将一个海龟的形状设置为这个图形,实现图形的动画和接受鼠标拖动事件。第13 行在程序中用addshape 函数添加注册1 个名字为“basket”的形状,从代码可以看出,这是1 个以海龟坐标为中心的倒三角形。第15 行用shape 函数将海龟basket 设置成名称为“basket”的形状。

我们也可以用shape 函数将海龟的形状改为turtle 模

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值