项目18 童 话 世 界
有一只小兔,每天都过得很不开心,为一些小事烦恼,比
如妈妈不让它吃太多胡萝卜,不让它和别的小兔一起玩儿。有
一天,小兔离开家到森林里玩耍,它会遇到什么事呢?
本项目学习与变量相关的知识,学习新建变量、用变量
统计分数、变量的比较等,相关的新积木包括“重复执行直
到**”、运算符类的积木,继续巩固练习循环执行、克隆、改
变大小等学习过的编程知识和方法。在学习过程中,通过分析
任务要求,理出思路,编写代码实现自己的想法。
Dzjzw.indd 40 2024/9/10 17:00:48 

项目18 童话世界
41 
任务18.1 小兔进城堡
小兔看到一座城堡,开心地跑过去。它从舞台左下角向城堡门口奔跑,
越跑越远,身影越来越小,最终消失在城堡入口处。单击“运行”按钮,运
行程序,呈现出渐行渐远的动画效果。
1 . 选择背景和角色
根据任务要求,选择城堡为背景,小兔为角色。在背景库中选择castle2 
为舞台背景,在角色库中选择Hare(野兔)作为角色,参考图18-1。
图18-1 “小兔城堡”舞台
2 . 编写控制程序
舞台上通往城堡的路从左下方向右上方延伸,很明显,这不是之前设定
过的水平或垂直方向。“小兔”默认方向是90o,想要沿着这条路跑向城堡,
需要调整其移动方向。“小兔”渐行渐远,跑到城堡门口时身影消失,程序
Dzjzw.indd 41 2024/9/10 17:00:48 

42 
图形化趣味编程(下)
结束。
根据以上分析,将控制程序分为两部分,即初始化和跑向城堡。
(1)“小兔”的初始化。
初始化内容包括“小兔”的大小、起始坐标位置和面向方向。
因为起始位置和面向方向这两个参数是互相影响的,所以先确定了初始
位置,调试时再调整面向方向,最终保证“小兔”恰好跑到城堡大门口(“小
兔”从起始位置跑向城堡大门是直线运动)。“小兔”朝着右上方跑去,面向
方向的角度一定是小于90°的,可暂定为70°,如图18-2 所示。
(2)“小兔”奔跑。
仔细思考,分析出奔跑的过程包括跑向“城堡”、到达“城堡门口”、消
失。其中,跑向“城堡”是一个重复的过程,有造型和大小的变化,在奔跑
中身影越来越小。消失就是角色被隐藏,而且是到达城堡门口时。
①重复执行。“渐行渐远,看起来身影也越来越小,最后消失”,这个
过程是一个有条件的重复过程,而不是简单地循环执行。循环控制使用“重
复执行直到**”积木,如图18-3 所示。
图18-2 “小兔”初始化程序图18-3 “重复执行直到**”指令
这块积木可以实现内部代码有条件地重复执行,指令中的六边形区域是
用来放置条件积木的。意思是,重复执行积木内部区域的代码,直到条件满
足时停止执行。即条件满足时,就不再执行内部代码。拖曳此积木至编程区,
如图18-4 所示。
②跑向“城堡”。“重复执行直到**”指令内部嵌入的代码就是跑向“城
堡”的动作。积木功能包括移动、造型变化、等待时间、变小。实现这些功
能的代码在之前的项目中都学习和使用过。从指令列表中找到这些积木拖曳
Dzjzw.indd 42 2024/9/10 17:00:48 

项目18 童话世界
43 
至编程区,并修改参数,完成后如图18-5 所示。
图18-4 使用重复执行图18-5 增加奔跑过程
单击“运行”按钮,观察运行结果。可以看到,“小兔”从起始位置跑
向终点位置(“城堡大门”),身影逐渐变小,最终消失在舞台边缘而不是“城
堡大门口”。这是因为还没有设置“小兔”消失的条件,也就是重复执行积
木中的条件。
③到达“城堡门口”。到达“城堡门口”是重复执行结束的条件,应该
如何判断呢?按住鼠标左键拖曳“小兔”从起点位置至终点位置,就会发现
角色移动时其坐标值是不断变化的,到达终点位置的“小兔”的坐标值大约
是(170,20),超过这个坐标值就要停止移动。比较x 坐标值或者y坐标值
就可以判断“小兔”是否到达终点了。
本任务使用x 坐标值进行比较。x 坐标>170,作为到达“城堡”的条件,
也就是重复执行积木中的条件。
“x 坐标”积木在运动类模块中,如图18-6 所示。数值比较指令有3 个,
分别是大于、小于和等于,在运算符类模块中,如图18-7 所示,积木形状
都是六边形,符号两边的参数是可以修改的。
编辑比较类积木,拖曳“大于”比较积木块至编程区,再拖曳“x 坐标”
积木为左侧参数,将右侧参数设置为170,如图18-8 所示。
Dzjzw.indd 43 2024/9/10 17:00:48 

44 
图形化趣味编程(下)
图18-6 “x 坐标”积木图18-7 比较类积木
单击“运行”按钮,观察运行结果。可以看到,“小兔”跑向“城堡”,
大约在“城堡门口”的位置停止了,并没有消失。
停止了,说明重复执行的结束条件设置正确,符合预期。只要使用“隐
藏”积木增加身影消失功能即可。在程序的末尾使用了隐藏指令,就要在初
始化程序中使用显示指令,以便再次运行程序时,能够观察到角色,更新初
始化部分的程序,最终程序参考图18-9。
图18-8 设置重复条件图18-9 “小兔进城堡”代码
3 . 整体调试
程序编写完成,单击“运行”按钮,开始程序的整体运行,检测编写的
程序是否能够实现任务中的全部要求呢?
Dzjzw.indd 44 2024/9/10 17:00:49 

项目18 童话世界
45 
(1)确定面向方向。
单击“运行”按钮,观察运行结果。发现“小兔”向前奔跑,身影越来越小,
可是却停止在大门略靠上方的位置。这说明设置的“面向方向”数值偏小,
适当增加数值即可,如设置为73,再次单击“运行”按钮,观察运行结果。
反复调试,直到“小兔”恰好停止并消失在“大门”位置。
(2)改变起始位置。
如果改变了起始位置,需要重新调试“面向方向”,以保证“小兔”能
够准确跑到终点坐标。
任务18.2 草莓小兔
小兔进入城堡,发现城堡里面是一个美丽的花园,到处都是五彩缤纷的
花草树木。突然,天空中落下很多红红的果子,它小心地尝了尝,是草莓酸
酸甜甜的味道。
通过编程模拟小兔吃草莓的动画场景。单击“运行”按钮,游戏开始,
舞台上随机出现一颗颗草莓,使用方向按键控制小兔移动,每吃到1 颗草莓
得1 分,这颗草莓会消失。单击“停止”按钮停止游戏,或者得分达到50 
分停止游戏。
1 . 选择背景和角色
编写代码之前先进行舞台布置,包括选择背景和角色,并进行简单设置。
从背景库中选择Pathway 为背景图片,从角色控制中选择Hare 和“草莓”为角色。
程序执行时,两个角色都没有大小的变化,经过测试,将草莓角色大小
修改为30,Hare 角色大小修改为70,这样的比例看起来会比较协调,完成
后的舞台参考图如图18-10 所示。
2 . 编写控制代码
分别为“小兔”和“草莓”这两个角色编写控制代码。“小兔”跳跃控
Dzjzw.indd 45 2024/9/10 17:00:49 

46 
图形化趣味编程(下)
制比较简单,可以参照之前学习过的使用键盘控制角色移动的内容。“草莓”
的控制包括克隆自己,克隆启动时的得分和隐藏,以及达到50 分时停止游戏。
(1)“小兔”的代码。
“小兔”的动作是上、下、左、右移动。在之前的任务中,编写过很多
类似的动作方式,通过键盘上的4 个方向按键来实现。
单击小兔角色图标,进入代码编辑画面,编写程序参考图18-11 。可以
使用“移动”积木或者“坐标增加”积木,按照自己熟悉的方式编写,只要
能实现同样的动作就可以。
图18-11  小兔角色动作代码
图18-10 草莓小兔舞台
Dzjzw.indd 46 2024/9/10 17:00:49 

项目18 童话世界
47 
初始化中程序中将旋转方式设为“左右翻转”,然后测试一下小兔角色
的动作。按下向右键,小兔角色向右跳跃奔跑;按下向左键,小兔角色向左
奔跑跳跃;按下向上键,小兔在空中奔跑;按下向下键,小兔向地面奔跑。
(2)草莓角色的代码。
在任务11.1 中,学习过用克隆指令实现繁星满天的舞台效果。想要舞
台上呈现布满“草莓”的效果,方法类似。当单击“运行”按钮时,“草莓”
开始克隆,并在舞台上随机显示。此外,该角色的控制还包括得分统计和停
止游戏。
①“草莓”克隆。进入草莓角色代码编辑画面,编写“草莓”的控制程
序。首先,编写程序,让“草莓”每隔1 秒克隆自己,并移到舞台的随机位
置,如图18-12(a)所示。
“草莓”出现了,“小兔”跳跃着去吃草莓。如果“草莓”碰到“小兔”
就隐藏,得分+1。第一块积木使用“当作为克隆体启动时”,碰到小兔角色时,
就消失(隐藏),如图18-12(b)所示。
图18-12 草莓角色的代码
②得分统计。使用变量进行得分统计。在模块列表中单击“变量”模块,
显示相应的积木列表,如图18-13 所示,列表中没有“得分”这个变量,需
要新建变量。
单击图18-13 中的“新建变量”,弹出“新建变量”对话框,如图18-14 
所示,输入变量名为“得分”,并选择“适用于所有角色”,单击“确定”按
Dzjzw.indd 47 2024/9/10 17:00:50 

48 
图形化趣味编程(下)
钮完成并退出设置。
图18-13 变量模块图18-14 输入变量名
完成后,在变量列表中可以看到以“得分”命名的变量,并默认选中,
如图18-15 所示。同时,在舞台左上方会显示得分数值,初始值为0。
草莓角色开始克隆时需要将得分设置为0,使用“设置得分的值为0”
积木。碰到小兔角色得分增加1,使用“将得分增加1”积木块,分别拖
曳至图18-12 所示的代码中,为程序增加得分统计功能,完成后的程序如
图18-16 所示。
图18-15 新建“得分”变量图18-16 增加得分功能
③设置得分上限。如果不单击“停止”按钮,这个游戏可以一直玩下去,
理论上得分将会无限大。
Dzjzw.indd 48 2024/9/10 17:00:50 

项目18 童话世界
49 
设置得分上限,让游戏停止。如果“变量得分”等于50,那么停止全
部脚本,草莓角色停止克隆,得分统计也会停止。
使用运算符类的“等于”指令作为“如果…那么执行”中的条件,等号
左边的参数是“变量得分”,右边参数是数字50。循环执行这部分指令,在
草莓角色中编写代码,如图18-17 所示。也可以将此部分与克隆体启动时(得
分统计)的程序段合并。
图18-17 设置得分上限
3 . 运行与调试
游戏制作完成,单击“运行”按钮,测试运行结果。可以发现,舞台上
每隔1 秒就会出现1 颗“草莓”,使用方向键让“小兔”移动,每次“草莓”
碰到“小兔”就会消失,同时得分+1,直到得分是50 时,自动停止游戏。
游戏时,单击“停止”按钮可以随时终止游戏,单击“运行”按钮重新开始。
(1)修改参数。修改草莓角色的克隆速度,更快或者更慢,观察程序执
行情况。修改得分上限参数,观察程序执行情况。
(2)游戏比赛。和同学比一比,设置同样的得分上限,看看谁的“小兔”
更快完成。说说是怎样做到的。
任务18.3 扩展阅读:故事《最大最大的城堡》
金先生喜欢“大”的东西,所以他住在一座大山的山顶,他想给自己盖
一座大城堡。他剪下木块盖城堡,剪了一块又一块,山都被他剪出了一个一
Dzjzw.indd 49 2024/9/10 17:00:51