编程题
第 1 题 问答题
对对碰
题目说明
编程实现
对对碰
两两相同的一共四张扣下的纸牌,每次先后翻开两张。如果两张一样就消失,如果两张不一样就重新扣下。当舞台上所有纸牌都消失,就过关了
.1)创建四个经牌角色,每张纸牌包含两个造型(正面和背面),其中两张牌面为小猫,另外两张牌面为小狗,牌的背面图案都一样;
具体要求:
2).当绿旗被点击,四张纸牌以牌面朝下的状态,以随机顺序出现在如图所示的四个位置(不能重叠),参考坐标: (-100,100),、
(-100,-50) 、(50,-50) ;
(50,100)
3.任意选择一张纸牌,点击可以翻开这张纸牌,每当翻开两张纸牌时就要判断这两张纸牌是否一样。如果一样,则这两张纸牌消失掉。如果不一样则两张纸牌重新扣回,等待下一次翻牌;
4,当复台上的四张牌全部消除,则游戏成功。小猫角色出现在复台中心位置,说出从开始出现纸院到经牌全部消除所用的游戏时间,持续2秒。并目将本次游戏时间加入列表“成绩单”的最后一项,此时列表“成绩单”还要显示在舞台上;
5).紧接着,小猫询问“是否排序?”,如果输入“是”,那么就以从小到大的顺序,将列表中的数据进行排序,程序结束;
6). 再次点击绿旗,还可以进行下一轮游戏。注意:成绩单的数据要保留不要删除
代码也比较好理解,这里使用了“在列表的第x项前插入“指令,插入数字1的时候,只有一个位置,插入数字2的时候,有两个位置可选,插入数字3的时候,有3个位置可选,插入数字4的时候,则有4个位置可选,这样就可以得到一个随机顺序的列表,如图:
生成随机列表后,就可以摆放纸牌了,所以这里给经牌角色发送了“洗牌"的广播消息,当纸牌角色接收到广播后,就可以根据列表数据来设置角色位置了,以纸牌1为例,编写代码如下:
其它3张纸牌角色的代码基本相同,纸牌2对应的是列表中的第2项,经牌3对应的是列表的第3项,纸牌4对应的是列表的第4项。
2).翻牌配对
纸牌摆好之后,接下来就是翻牌配对了,需要注意这里的逻辑,默认情况下,4张牌都是扣上的,背面朝上。当点击某张纸牌时,此时只翻开一张,无需比较,当再翻开另外一张牌时,才需要进行比较。因此,这里需要创建一个变量,用来表示当前翻开的是第几张牌,并将其初始化值设为0,这个工作在列表初始化时已经完成了。每次点击纸牌时,将该变量加1,如果变量为2、就需要比较是否配对,然后再将变量重置为0。如果当前翻开的是第2张牌,自己的牌面很容易获取,那如何获取已翻开纸牌的牌面呢?还是需要借助变量,再创建一个变量“已翻开牌面”。用来记录已翻开纸牌的牌面。
如果两张已翻开的牌面相等,纸牌消失,将纸牌隐藏起来即可,如果牌面不相等,则纸牌又翻回去。这两个操作,都需要发送相应的广播消息给第一张已翻开的纸牌。
以细牌1角色为例,编写代码如下:
当前角色是经牌1,它的牌面是小猫,只有牌面为小猫的经牌才能和它配对,所以,配对成功的时候,发送的广播消息为“小猫消失“是专门针对牌面为小猫的角色的。同理,配对失败的时候,发送的广播消息是“小狗翻牌“,是专门针对牌面为小狗的角色的。当小猫角色接收到”小猫消失“广播后,隐藏自己即可,代码如下:
当小狗角色接收到”小狗翻牌“广播后,将纸牌换成背面造型即可,如图:
在翻牌的过程中,如果连续两次点击同一张牌,它也会配对成功并消失,这显然是不对的,怎么解决这个小bug呢?常见的方法就是使用一个私有变量,也就是这里的”可点击否“变量,默认为1,表示可点击,一旦点击之后,马上设置为0,表示不可点击。当两张纸牌比较完毕,牌翻回去了,再次将变量设置1,表示可以继续点击。为了记录配对数量,这里还使用了变量“配对数”,初始值为0,当纸牌配对成功消除时,配对数加1。纸牌2、纸牌3和纸牌4三个角色的代码和纸牌1基本相同,这里就不再列出了。3).记录成绩
每次游戏成功时,需要记录当前的时间,Scratch专门提供了一个计时器用于计时。在游戏开始时,也就是点击绿旗时,先将计时器清零,游戏结束时,将计时器的值保存起来即可。
要保存每一局游戏的成绩,我们可以创建一个列表“成绩单”,并且不需要初始化,当游戏结束时,将本局的时间插入到列表中即可,在小猫角色中编写代码如下:
每一次游戏过程中是不显示列表的,只有游戏结束后才显示列表,所以这里增加了隐藏列表和显示列表的指令在说出本局游戏花费的时间之后,会询问玩家是否需要对成绩单进行排序,如果玩家输入“是”,则需要排序。4).成绩单排序
排序是编程中最基本的算法,常见的排序算法有冒泡排序、选择排序、插入排序、快速排序和归并排序等。本题依然使用最简单的选择排序,在小猫角色中编写代码如下:
第 2 题 问答题
苹果摆一摆
题目说明
编程实现:
苹果摆一摆
有一堆大小为50、间隔为30的苹果是这样摆放的: 第一行1个,接下来的两行(第2-3行)每行2个,接下来的三行(第4-6行) 每行3个.....输入行数n,输出对应的苹果效果。
具体要求:
1).当绿旗被点击,舞台上只出现询问框;
2).根据提示输入行数n,如果,如果n满足条件 (0< n <= 10) ,就要在舞台上画出n行苹果所呈现的效果;
3).如果n满足条件n >10,由于苹果太多装不小,此时不再呈现苹果效果,但是小猫要出现在舞台上,并正确说出最后一行苹果的个数;
4).如果输入的行数n s<=0,应该重新询问,直到满足n >0,然后呈现出与之对应的效果
简要说明如下:
0.玩家输入的数字有可能小于0,因此这里使用了条件循环,如果回答小于等于0,则重复询问,直到回答>0;
2.如果输入的数字>0,则使用变量n将回答保存起来,然后计算苹果数量并构造列表,这里使用了自制积木,具体的代码实现。将在第2步讲解;
图.由于舞台大小有限,所以需要对n的值进行判断,如果n>10,就直接说出最后一行的苹果数,否则就需要绘制苹果,这里使用了“如果...那么...否则“指令来处理两个不同的分支,并给苹果角色发送了”绘制苹果“的广播消息。2).计算苹果数量,构造列表
根据前面的思路分析,我们采用逆向思维来计算每一行对应的苹果数量。先将创建好的“苹果“列表清空,然后创建一个计数器变量”“
让i从1开始,并重复次向列表中插入i的操作。这就意味着,当为1时,向列表中插入1个1,当为2时,向列表中插入两个2,当伪3时,向列表中插入3个3,依此类推....然后将这个过程重复执行n次即可,代码如图所示:
输入数字8,测试一下,效果如下:
发现问题了吗,每一行对应的苹果数量是对的,但是列表一共有36项,这是怎么回事呢?原因很简单,因为这里使用了双重循环,当n=8的时候,外层循环执行了8次,而内层循环,分别执行了1次、2次、3次.....8次,所以急的循环次数是1+2+3+4+5+6+7+8=36。
实际上,我们只需要构造8项数据即可,那什么时候结束循环呢?很简单,当列表的项目数=8时,结束循环即可,不过要注意,判断需要放在内层循环中才对,代码如下所示:
第 3 题 问答题
英雄之盾
题目说明
背景信息:
每个孩子心中都会有一个成为英雄的梦想,为了和平与正义而守护心中的白色象牙塔,今天让我们一来画出超级英雄的守护之盾吧!
编程实现:
绘制一面英雄之盾。
具体要求:
1).开始程序后,舞台背景为黑色;
2).瞬间画出盾牌除五角星之外的圆环部分 (盾牌直径为300)3).缓慢画出除圆环部分之外的白色实心五角星。
提示
1).全程禁止使用“编辑”中的“加速模式”
2).位置及大小,大致相同即可;
3).开启计时器,程序在30秒内执行完
2).绘制圆环有些同学看到圆环开始有些犯难了,实际上非常简单,因为圆环是实心的,可以看成是一个点,只不过这些点比较大而已,因此,我们只需要将画笔粗细设置得大一些,然后落笔点一下即可。
先来绘制最底层红色圆环,代码如下:
其它3个圆环,绘制方法是完全一样的,只需要将画笔设置为不同粗细,并设置为相应的颜色即可,这里就先不列代码了
3).绘制五角星
绘制实心五角星,这是本作品的难点,题目也没有给出任何提示信息。我们要搞清楚五角星的角度关系,如图所示:
五角星的每个内角都是36度,需要注意的是在使用Scratch画笔绘制五角星的时候,要转的角度并不是44度,而是180 - 36 = 144度.如果只是画一颗五角星的轮康,我们只需要循环5次移动和转向就可以了,但这里要画的是一颗实心五角星。一个比较巧妙的办法就是,选择一个点,作为五角星的中心,从这个点开始,每画一条线,就将线条变长一点,然后旋转144度,直到线条长度等于设定长度为止。
所以,这里需要新建一个变量,将其命名为”长度",将长度设置为1,然后重复执行移动和右转指令,每循环一次,将长度增加1,直到长度大于84,代码如下:
第 4 题 问答题
海底世界
题目说明
编程实现
海底世界
海底世界,近处有螃蟹,后面有一个水母游来游去,远处有各种小鱼游过.
具体要求:
1),创建背景Underwater1,创建角色Crab、Jelvfish、Fish,螃蟹离我们最近,后面是水母,远处是小鱼;2).螃蟹大小为200,在舞台最下方,全程静止不动;
3).水母大小为100,初始方向为45,在舞台内不停的移动,碰到边缘就反弹;
4).舞台左上区域的随机位置不停地出现小鱼,小鱼(随机造型) 一直向右移动,移到舞台右侧消失(参考值:大小为50,y坐标范围0-180,速度为
5,克隆间隔0.2秒)。
这里使用了“移到最前面”指令,可以确保螃蟹位于所有角色的最上方。
2).水母角色
水母角色在舞台上来回移动,当碰到舞台边缘时,反弹回来即可,代码如下:
简要说明两点:0.默认情况下,角色是面向90度,即面向右方,这样螃蟹只会左右来回移动,为了让螃蟹可以斜着走,这里将初始方向设置为45度当然,你也可以设置为其它的角度;
2.角色默认的旋转方式是任意旋转,在这种模式下,螃管碰到舞台边缘,就会头朝下,只需要将旋转方式设置为左右翻转,螃蟹就不会上下翻转了
3).小鱼角色小鱼角色需要克隆,在Scratch中,克隆一般分两步进行,第一步是利用本体生成克隆体。但是生成的克隆体是静止不动的,如果要让克隆体角色动起来,这就需要第二步了,即控制克隆体。
先来实现第一步,先将小鱼角色的大小设置为50,同时将本体隐藏起来,然后每陪0.2秒克隆一个小鱼,代码如下·
说明两点:
1.很多同学在判断是否到达舞台右边缘时,喜欢使用“碰到舞台边缘”,如果克隆体的初始位置没有挨着舞台左边缘,这么写也是可以的。如果克隆体的初始位置挨着舞台左边缘,就不能这么写了,否则克隆体一显示,立刻就删除了,最好的方法就是判断x坐标是否大于某个值,比如240;
2.我们将螃蟹角色移到最前面,小鱼角色移到最后面,这样就可以让水母角色处在中间层了。
第 5 题 问答题
王子变青娃
题目说明
程实现:
王子变青娃。
勇敢的王子Phnce为了救公主,来到了邪恶巫师Wizard Gi的森林Woods。巫师施展法术将王子变成青蛙,王子念动咒语解除魔法变回王子,巫师逃
走。
具体要求:
1).运行程序,角色和背景如图所示:
2).按下空格键,巫师先说,“变变变!”2秒,王子变成青蛙;
3).青蛙心里倒计时10秒(使用思考块) ,
4).魔法解除,王子变回人类。巫师说“快跑”2秒,然后消失,程序结束。
2).王子变成青蛙又变回王子
水母绿旗被点击时,青娃王子角色显示的是王子造型,位于舞台右侧,切换到王子角色,编写代码如下:
当接收到”变身“广播消息后,王子立刻变成青娃角色,接下来在心里倒计时10秒,这需要创建一个变量,从10开始,每隔1秒减1,同时使用“思考“指令显示倒计时效果。倒计时结束,从青娃造型变回到王子造型,然后再给女巫发送一个"逃跑"的广播消息,代码如下:
需要注意的是,这里使用的思考指令,它会一直显示,所以在循环结束之后,增加了一个思考空白指令,将显示的内容清除掉。
3).女巫逃跑
小女巫在接收到”逃跑“广播消息后,说快跑2秒钟,然后消失,切换到女巫角色,编写代码如下:
第6题问答题
自我介绍
题目说明
编程实现:
自我介绍
创建一个背景,再创建一个角色 (角色与背景任意》,向我们的评委老师介绍一下你自己吧.
具体要求:
1).程序运行,舞台呈现背景,1秒后角色完整出现在舞台中心区域;
2).角色依次说出自己的姓名、年龄和说一句鼓励的话2秒(输入自己真实的姓名及年龄);
3).说完后,角色2秒内移到舞台右侧边缘,程序结束
这里有3个说话指令,后面的指令必须在前一个指令执行完之后才能继续执行,3句话说完一共花了6秒钟,然后从舞台中心滑行到舞台右边缘。
在Scratch中,实现角色的移动,通常有如下三种方式:
面向方向 + 移动10步 + 重复执行
将x坐标增加10 + 重复执行
在1秒内滑行到x,y
其中第一种方式,需要3个指令,第二种方式需要两个指令,第二种方式则只需有一个指令。在本题中,由于角色运动的终点确定,因此使用第三种方式最简单。