第13届蓝桥杯青少组Scratch第1次省赛真题第5题:蜘蛛侠大战灭霸

发布时间:2024-10-30 13:29  浏览量:2

无限手套,是灭霸用于控制作为无限宝石的载体。将灵魂宝石,力量宝石,时间宝石,空间宝石,现实宝石,心灵宝石,这六块宝石聚集在一起持有者就拥有让所有现实灭亡的能力。

【编程实现】:

灭霸想要毁灭世界,蜘蛛侠只剩下10秒时间来阻止无限手套充能。如果无限手套上的6块宝石都被依次点亮,灭霸获得胜利,如果没有成功点亮全部六块宝石,蜘蛛侠获得胜利。

具体要求:

1). 点击绿旗,角色、背景如图所示(注意:蜘蛛侠手中的蜘蛛丝是由画笔模块绘制出的白色线段,灭霸持续说:“无限手套充能中...”);

2). 用键盘的上、下键,控制蜘蛛侠上、下移动(蜘蛛丝根据蜘蛛侠的移动伸长或缩短);

3). 红色充能进度条开始缓慢增加,进度条和数值每秒增加10%;

4). 六块能力宝石随进度条依次点亮(对应进度数值为10%,30%,50%,70%,90%,100%);

5). 按下空格键,从蜘蛛侠的另一只手发射蜘蛛网,蜘蛛网呈抛物线移动(提示:水平速度不变,垂直速度不断变化);

6). 当蜘蛛网落在灭霸的身上时,能量进度条和数值都会暂停增长1秒;

7). 游戏时间为10秒,在舞台左上角显示,并准确呈现出倒计时功能(依次显示10、9、8......2、1、0);

8). 在10秒钟倒计时结束时,如果无限手套没有充能到100%,灭霸消失,进度条停止增加,蜘蛛侠说:“我胜利了!!!”;

9). 在10秒钟内,如果无限手套充能到100%,蜘蛛侠从舞台上消失,倒计时停止,灭霸说:“我胜利了”。

【分析编码】:

本题包含的角色有点多,共有11个,如图:

题目要求用10秒时间来阻止无限手套充能,如果阻止成功,那么蜘蛛侠获得胜利,否则,灭霸获得胜利。

灭霸(Thanos),美国漫威漫画旗下的超级反派,而无限手套是一款超级武器,将灵魂宝石,力量宝石,时间宝石,空间宝石,现实宝石,心灵宝石聚集在一起,持有者就拥有让所有现实灭亡的能力。

本题角色有点多,那么,角色之间的互动,自然可以使用消息机制来进行信息的传递。

整个程序的运行时间为:10秒,且,此时间不随其他角色的变化而变化,是固定的,我们可以使用一个独立的绿旗来控制(放在蜘蛛侠角色中)。

超过10后,游戏结束,同时发出消息(游戏结束),告知所有角色 。

下面,我们分角色来分析:

角色:蜘蛛侠

1、响应上、下按键动作,即:垂直上下移动;

2、如果胜利了,说:“我胜利了”,否则,从舞台上消失(隐藏);

代码如下:(包括10秒种倒计时)

角色:画笔(Pencil)

画笔功能比较单一,就是用来画蜘蛛丝(蜘蛛侠到舞台顶端的白色线段)。由于蜘蛛侠是可上下移动的,所以,这里需要进行不断地绘制、擦除。

角色:蜘蛛网

蜘蛛网需要完成的功能是:响应空格键的动作,从蜘蛛侠的位置发射出去,呈抛物线移动。注意,这里是可以连续发射的,所以,需要用到克隆技术。

角色的抛物线运动,也是考试中经常出现的一个重要概念。题目中也作了编程提示,即:水平速度不变,垂直速度不断变化。实际上,垂直速度是不断变小,当垂直速度为0时,角色到达最高点。看一下代码:

其中,速度的大小,可根据程序运行进行调试,切合题意即可。

角色:灭霸

灭霸主要完成的功能有:

1、程序开始后,说:“无限手套充能中...”;

2、当游戏结束,如果胜利了,说:“我胜利了”;

3、当蜘蛛网落在灭霸的身上时,告知能量进度条和数值,暂停增长1秒;

下面重点分析一下第3点,这也是本题的难点所在。第3点需要实现两个内容:一是控制进度条和数值暂停计数,二是:控制时间为1秒。为此,我们可以定义一个开关变量:进度开关,并通过计时器来控制此变量的变化。

当进度条正常工作时,进度开关值为1,当蜘蛛网落在灭霸的身上时,进度开关值为0,并发出消息开始计时,如果超过1秒,仍没有更多的蜘蛛网落在灭霸的身上,则恢复进度条正常工作。代码如下:

角色:能量块

能量块,实际上就是反映无限手套进行充能的进度。我们设定两个变量来进行跟踪:

进度:表示当前充能完成的进度,每秒增加10,全部完成后为100;

进度条值:是进度的百分比,即:进度 + %,如下图:

那么,如何来更新进度呢?这里需要通过克隆能量块角色来完成。

注意,这里不能使用图章功能,因为,在画笔角色中,使用了擦除功能,所以,使用图章后无效。代码如下:

说明:由于每次通过消息来进行更新, 为防止克隆体也进行更新,我们定义了一个私有变量:主体。

角色:宝石

各类宝石的功能类似,当进度到达相应的值时,宝石有暗变亮。角色的明亮可以通过亮度功能来实现。灵魂宝石代码如下:(其它宝石类似)

外部推荐