8课 在Scratch中使用摇杆――猴子接香蕉

>>>点击此处打开范例

小猴子最喜欢吃香蕉。可是这次,它遇到了麻烦,调皮的香蕉被施了魔法,会随机地出现在不同的地方;让我们使用传感器板上的摇杆,帮助小猴子接香蕉,让它在规定时间内得到更多的香蕉。


要完成本课范例,可以先添加舞台、角色,设置舞台和角色的初始状态,然后让香蕉随机地出现在舞台上,同时通过用户拨动摇杆,控制猴子在舞台上移动。如果猴子接到香蕉,会累积成绩,还可以设置游戏的持续时间,在规定的时间内接到的香蕉越多成绩越好。

要完成本课的创意构思,需要了解以下的新知识、使用以下的新指令:


摇杆

(点击或者扫描二维码播放视频)

摇杆可以前、后、左、右四个方向拨动,接收用户位移的数据,可以非常方便地控制角色在Scratch舞台上移动。

读取传感器板上摇杆的X轴数值,取值范围(01023)。

读取传感器板上摇杆的Y轴数值,取值范围(01023);


登录“好好搭搭网站,连接传感器板,根据下表的要求操作,观察舞台上显示的摇杆数值,将不同状态下的摇杆数值记录下来。

(点击或者扫描二维码播放视频)



对摇杆的操作

摇杆显示的数值

1

将摇杆推到最右边

=

2

将摇杆推到最左边

=

3

将摇杆推到最上边

=

4

将摇杆推到最下边

=

5

不操作摇杆

大约( )~( )

大约( )~( )

我发现:_____________________________________________________________

____________________________________________________________________


第一步:设置舞台背景与角色

(点击或者扫描二维码播放视频)

  1. 通过“背景库”对话框添加“lake图片作为舞台背景;再通过“角色库”对话框添加猴子(Monkey2)、香蕉(Bananas)角色;调整这两个角色的大小、将它们拖动到舞台的合适位置。

  2. 隐藏舞台上除“摇杆X”和“摇杆Y”以外,其它无关的传感器数值。


舞台背景

角 色



第二步:编写香蕉角色脚本

(点击或者扫描二维码播放视频)

香蕉是由程序自动控制、随机出现在舞台上,考虑到猴子都是在树林中活动,因此香蕉角色出现的位置应该只是舞台上的树木区域。当“香蕉”角色碰到“猴子”角色、或者停留一定的时间后自动消失,然后重新在新的位置出现。


范例程序中香蕉只有一支,如何使用“克隆”指令,让舞台上能够出现多支香蕉

(点击或者扫描二维码播放视频)


第三步:编写猴子角色脚本

(点击或者扫描二维码播放视频)

猴子角色的脚本共有三段。其中第一段脚本通过检测摇杆的值,控制猴子在舞台上移动。

编写这段脚本时要注意:摇杆在不操作时,数值也会在一定的范围内变化,这属于正常的数据漂移现象。为了调试方便,实际编程时,具体的摇杆数值可以取整十整百的近似数。

第一段脚本如下图所示


这段脚本先设置猴子的初始位置和大小,然后使用重复执行和4个判断指令通过读取当前摇杆的数值,并且与不操作摇杆时的数值进行比较,从而决定猴子的移动方向:如果摇杆X大于X轴数据漂移的最大值,猴子向右移动;如果摇杆X小于X轴数据漂移的最小值,猴子向左移动;如果摇杆Y大于Y轴数据漂移的最大值,猴子向上移动;如果摇杆Y小于Y轴数据漂移的最小值,猴子向下移动。


请根据你使用的传感器板上摇杆的数据漂移区间,选择合适的值,完成用摇杆控制猴子在舞台上移动的程序脚本



第二段脚本是进行成绩统计。先添加一个变量“成绩”,并设置这个变量的初始值是“0”,用来保存接到香蕉的个数;然后判断猴子是否碰到香蕉,如果碰到,那么“成绩”变量值加1、播放“猴子”角色自带的声音、同时说出当前所接到的香蕉数量。

第三段是通过“猴子”角色的造型切换,让游戏更好玩。



以上代码实现了用摇杆控制猴子自由移动,但是在移动过程中猴子的速度是固定不变的,你能否在此基础上,猴子能够有加速移动的功能也就是摇杆数值变化越大,猴子的移动速度越快。

(点击或者扫描二维码播放视频)




第四步:编写舞台背景脚本

(点击或者扫描二维码播放视频)

舞台背景脚本是对游戏时间进行控制。先添加一个“时间”变量,并设置这个变量的初始值是“30”,也就是倒计时30秒;然后每过一秒,“时间”变量值减少“1”,一直重复执行到“时间”变量值为“0”;最后停止全部角色脚本。



在以上介绍的基础上再进一步完善程序,比如增加舞台背景、添加其它角色、编写奖励和惩罚的脚本,从而使游戏更好玩。





摇杆在各类游戏中的应用非常广泛,可以灵活地控制角色在舞台上移动。请你思考一下,利用摇杆还可以设计一个怎样的游戏?

我制作的这个作品在“好好搭搭”网站上共享的名称是_______________________;综合网友给我提的建议,我认为还可以在以下方面进行改进:______________________

_______________________________________________________________________

_______________________________________________________________________

_______________________________________________________________________