专 题

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的多学科创意编程