专 题
Feature Story
20
\
China Science & Technology Education
文
_
陈 斌 陈天翔/北京大学
Python turtle
的多学科创意编程
Python
语言中内置的海龟作图
turtle
模
块设计巧妙,作图模型简单强大,能够让程序
设计初学者很快编写出趣味生动的作图程序,
极大提高编程学习的兴趣和积极性,在练习过
程中培养和提高计算思维。除了绘制图形之外,
Python turtle
模块还具有基本的交互功能,加
上学习门槛低,又是
Python
语言内置的标准
模块,所以非常适合作为创意编程的学习和开
发平台。本文以
Python
turtle
模块为核心,
展示和分析交互游戏、数学对象可视化等学科
领域的创意编程实例,并介绍
turtle
模块的深
入编程,以供创意编程的教学参考,也可用于
高中
Python
程序设计课程的教学案例。
本文实例所涉及的代码和截图,均可通过
链
接(https://github/chbpku/bdfz.
courses/wiki)访问获取。
交互游戏:接苹果
本作品是一个通过鼠标控制的交互游戏。
程序运行后,在
turtle
窗口中会有随机数量和
位置的红色苹果从顶端向下掉落,掉落速度各
不相同。用户需要通过鼠标拖动窗口中间的三
角形状“托篮”接住每一个苹果。托篮可以在
窗口中随意移动,如果接住苹果,则加
10
分,
分数在窗口左下角实时更新显示,但如果未能
接住苹果使其掉出窗口下沿的话,则惩罚性地
减
100
分。由于苹果产生的位置和速度均为随
机,数量不定,惩罚性减分幅度大,游戏还是
有相当难度的,想一直保持正分不太容易。最
后点击关闭窗口即可退出游戏。游戏运行效果
如图
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
更多推荐
python创意编程需要掌握什么_Python turtle的多学科创意编程
发布评论