您好,感谢您一直对少儿编程、对“与非学堂”的关注。为了更好地为大家服务,诚邀您填写一份《关于少儿编程教与学的课件资源素材需求调查》,https://www.wjx.cn/jq/82398684.aspx。
问卷二维码
注:本题为第十届蓝桥杯大赛青少年创意编程 SCRATCH 初级组样题 编程题 第四题,难度系数4(本比赛难度共分10级)
ʕ•̫͡•ʔ❤ʕ•̫͡•ʔ 题目要求ʕ•̫͡•ʔ❤ʕ•̫͡•ʔ
准备工作:
直接使用默认的小猫图片。
编程实现:
小猫从 1-100 之间随机取一个数字,让玩家来猜自己取的这个数字;一共有 10 次猜的机会,在左上角显示还剩几次机会。
每次玩家输入一个数字来猜。如果玩家没猜对,小猫都能正确说出玩家输入的数字是“大了”或者“小了”;
如果玩家猜对了,小猫会说“恭喜你,答对了!”并且停止游戏。
若机会用尽了玩家也没猜对,小猫则说“机会用尽,正确数字是 xx”,停止游戏。
将程序保存到桌面,命名为“4.sb2”。
注意:
1)点击绿旗,小猫询问“请输入 1-100 之间的数”,并生成一个随机数。
2)玩家输入数字后,玩家如果没猜对,小猫能说“大了”,或者“小了”,如果猜对了小猫会说“恭喜你,答对了!”,游戏停止。
3)舞台左上方显示剩余次数,游戏开始为 10,玩家每猜错一次减 1。
4)如果剩余次数为零,小猫能说出正确数字,游戏停止。
评判标准:(共50分)
10 分:询问“请输入一个 1-100 之间的数”,并确实生成随机数(可在裁判时查看程序积木块)。
20 分:小猫能够提示“大了”或“小了”或“恭喜你,答对了!”,且提示都是正确的,答对时游戏停止。
20 分:玩家用尽10次机会,小猫说“机会用尽,正确数字是 xx”。(xx 即正确的数字)
ʕ•̫͡•ʔ❤ʕ•̫͡•ʔ 解题思路•ʔ❤ʕ•̫͡•ʔ
本题考查同学们对循环、条件、变量、询问、随机数等编程知识和技能的掌握。
这个题难度还是不小的,怎么搞懂最终要做出来的效果是什么,是关键。
注意:
老师给同学们准备了一份可以让你
又快又好
完成编程题目的“秘籍”
领取方法:
在“与非学堂”公众号的对话窗口,
发送“我会编程”,
就会收到自动回复。
如何按要求完成程序呢?领到“秘籍”后,我们就可以按上面的流程来完成了。
这里我们按秘籍上提供的思路模板进行思考:
-
审题,确定题目要求,即任务现状(限制)、任务目标(目标状态)、可利用材料和方法(操作选项)。
任务现状:小猫出现在舞台上,什么都不做。
任务目标:让小猫随机挑好数字后, 玩家可以不断输入数字猜,小猫可以根据每次玩家输入的内容,给出反馈提示,直到猜中为止。次数用尽时游戏也直接停止。
可利用材料和方法:循环、条件、变量、询问、随机数等代码块。 -
拆解任务。
任务开始的时间(WHEN):小绿旗一点击。
任务进行的方式(HOW):总体按时间先后顺序进行,猜数字时,如果未猜中,重复进行猜的过程,猜中后或游戏次数用尽,游戏都停止。任务涉及到哪个角色(WHO):小猫。
任务步骤需要做什么(WHAT):(细分成小任务点,让每一个小任务点足够小,能够用几行代码完成)
A. 先让小猫挑选随机数。
B. 让小猫为玩家提供一个猜的方式。
C. 玩家开始输入猜数字。
D. 每次猜的结果,小猫给出反馈,按大、小、刚好猜中分。
E. 如果猜中,游戏结束。
F. 如果没猜中,重复执行输入和猜的过程。
G. 重复过程中,判断次数是否用尽,如果用尽,游戏结束。 -
细化可利用材料和方法,选择最好的材料和方法,进行组装。
首先,要用到哪些材料和方法呢?
使用“列举法”,列出在拆解的小任务中,可能用到所有材料和方法。要结合题目整体要求中的任务现状和任务目标,又要结合每一个小任务的限制条件,进行分析。
A. 变量:“将……设为……”、“将……增加……”。
B. 询问与回答:“询问……并等待”、“回答”。
C. 循环:“重复执行……次”、“重复执行”、“重复执行直到……”。
D. 条件:“如果……那么……”、“如果……那么……否则……”、“等待……”。
E. 随机数:“在……和……之间取随机数”。
其次,选哪个好一点呢?
需要用到“排除法”。排除的实现,可以是直接推理判断,排除不合要求的,也可以使用“尝试法”。
A. 变量:
程序中要让我们设置的变量有“要猜的数字”,直接把它设为随机数就好。这里应该用“将……设为……”。
玩家回答的内容有“回答”代码块可以存储,不用新建变量。
猜的次数需要一个新的变量,并且每猜一次就减小1,需要用到“将……增加……”。
B. 询问与回答:
这个功能是玩家和程序交互的关键,“询问……并等待”、“回答”两个代码块都必须用到。
C. 循环:
因为整个猜的过程,什么时候能猜中是完全未知的,所以肯定不应该用“重复执行……次”。
剩下的两个,一个是无限循环,一个是带条件的循环,都可以用到这个题中。
两种循环分别代表完成这个题的两种方法。
D. 条件:
“如果……那么……”、“如果……那么……否则……”“等待……”表示的意思是什么都不做,等待一个条件的满足时往下执行。
这几个代码块,根据需要我们都可能用到。下面会细说为什么。
E. 随机数:
这个不用选,只用“在……和……之间取随机数”。
接着,把选好的材料和方法组装起来。
A. 先让小猫挑选随机数。
B. 让小猫为玩家提供一个猜的方式。
C. 玩家开始输入猜数字。
D. 每次猜的结果,小猫给出反馈,按大、小、刚好猜中分。
E. 如果猜中,游戏结束。
F. 如果没猜中,重复执行输入和猜的过程。
G. 重复过程中,判断次数是否用尽,如果用尽,游戏结束。
1) 这几步如果使用无限循环“重复执行”,需要考虑:
循环里面放什么?什么时候让循环停止?怎么停止?
因为无限循环,直接重复的是输入猜数字,以及小猫给出反馈提示的过程,所以循环里面应该放对玩家输入的数字与要猜的数字大小关系的判断。
两个数字之间大小关系有3种。所以这时应该选用“如果……那么……否则……”,并且还要用两个,嵌套起来使用。
什么时候让循环停止?猜中的时候停止。当然是在满足猜中的那个分支里执行程序停止的代码块了!
这种情况下,需要用到“停止当前脚本”这个代码块。
使用这种方法,判断猜的次数是否用尽,需要在一开始把剩余次数设为10,并且在每次回答之后,把循环-1,判断是否为0,如果为0,停止游戏。
2) 如果使用带条件的循环“重复执行直到……”,那么要考虑:
循环里面放什么?什么时候让循环停止?怎么停止?
游戏结束有两个条件,因为两个条件要反馈显示的内容不一样,所以我们只需要把游戏结束的条件放到“直到”后面就可以了,另一个条件用“并行”结构,另行处理。
4. 测试、运行、优化。
如果发现bug,不要着急,按照下面的步骤:
A. 仔细观察bug、分析可能出现原因;
B. 定位到bug可能出现的代码;
C. 修改这些代码;
D. 测试运行。
C和D可能会重复很多次,这也是在用“尝试法”。
大家按这个思路,动手编写程序试试吧!
如果你编写完成了,想知道写得对不对、好不好,可以在公众号对话框中发送“0819”,就能收到两种做法的答案了哦!
与非学堂(codingclassonline)
一个专注青少年编程的教与学,交流技巧、分享资源的公众号。
--------------------------------------
【往期每日一题】
【Scratch竞赛每日一题】循环变大小
【Scratch竞赛每日一题】循环画画
【Scratch竞赛每日一题】循环变量