骰子游戏-第11届蓝桥杯Scratch选拔赛真题精选

[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第94讲。

蓝桥杯选拔赛每一届都要举行4~5次,和省赛、国赛相比,题目要简单不少,再加上篇幅有限,因此我精挑细选了一部分题目进行解读。

第11届蓝桥杯青少年组第5次选拔赛于2020年1月12日举行,形式为线下考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。

骰子游戏,本题是2020年1月12日举行的第11届蓝桥杯Scratch选拔赛真题编程第4题,初级组和中级组都有此题,题目要求编程创作一个骰子游戏,模拟两个玩家掷骰子并判断输赢的游戏场景。

先来看看题目的要求吧。

一.题目说明

准备工作:

创建背景room3,并删除小猫角色。

编程实现:

1). 绘制两个骰子角色,每个骰子角色都有6个造型,分别是1-6点;

2). 按下空格,两个骰子均可以随机产生点数;

3). 获胜那一方,会说“我赢了”1秒。平局的话,两个角色同时说“平局”1秒;

4). 每个骰子角色的下面显示累计获胜次数,点击绿旗后可以清零;

5). 游戏为三局两胜制,即有一方先得到2分,比赛结束。胜利的一方要说出“太好了,我是最终胜利者!”,此时按下空格键骰子不再有反应。

评判标准:

  • 10分:实现步骤1;

  • 30分:实现步骤2;

  • 50分:实现步骤3;

  • 80分:实现步骤4;

  • 100分:实现步骤5。

二.思路分析

本题包含两个角色,一个是白色的骰子,一个是绿色的骰子,如图所示:

需要注意的是,这里的两个骰子角色都是需要自己绘制的,很多同学绘制的造型不够整齐美观,超平老师在这里透露两个小技巧:

1). 借助shift键绘制正方形和正圆,选中矩形工具或圆形工具,按下shift键不松开,在画板上拖拽,就可以画出正方形和正圆;

2). 使用复制功能提高效率,当画好一个小圆点后,可以使用复制技巧快速得到完全一样的小圆点,既能保证效果,又能提升效率,两全其美。复制的时候,可以直接使用画板上提供的”复制“和”粘贴“按钮,也可以直接使用快捷键,复制的快捷键是Ctrl+C,粘贴的快捷键是Ctrl+V。

以绿色骰子为例,绘制造型如下:

掷骰子是典型的随机数算法,可以通过”在1到10之间取随机数“指令来实现,这里有两颗骰子,需要使用两个变量保存各自的点数,然后比较双方点数,判断输赢。游戏是三局两胜制,所以还需要两个变量记录双分的比分。

作品的逻辑并不复杂,关键是要控制好程序的执行顺序,比如当按下空格键时,两个骰子均随机产生点数,两个角色都需要进行判断,怎么确保每个角色在判断的时候可以及时获取对方的点数呢?点数相同的时候,双方都要说平局,如何保证程序的同步呢?

针对这两个问题,我们可以使用事件广播机制,在Scratch中,发送广播有两种方式,如图:

第一种方式,在发送广播消息后,立刻继续执行后续指令,其它角色在接收到消息后也立即执行代码,这样就可以实现两个角色的同步执行,上面提到的双方都要说平局的效果就属于这种情况。

第二种方式,在发送广播消息后,并不能立刻执行后续指令,而是要等待其它角色接收到广播消息并执行完程序,才开始执行后续代码,它有一个等待的过程,这可以让我们精确地控制两个角色执行代码的顺序,也是解决本题的关键。

如何确保每个角色在判断的时候可以及时获取对方的点数呢?答案就是使用”广播消息并等待“指令。具体思路是这样的:

当按下空格键时,在骰子1角色中,设置好两个骰子的点数,然后使用”广播消息并等待“指令发送一个广播消息,骰子2在接收到消息之后,就可以判断自己是否赢了,等骰子2角色的代码执行完成,骰子1角色再执行后续代码,判断自己是否赢了。

三.编程实现

根据题目描述和思路分析,我们可以分角色来编写程序:

  • 准备工作

  • 骰子1角色

  • 骰子2角色

1. 准备工作

先创建好4个变量,如图所示:

再将变量”赢局1“和”赢局2“的显示方式设置为大字显示,拖到两个骰子角色的下方,如图:

2. 骰子1角色

我们把骰子1作为主角色,先将变量”赢局1“和”赢局2“初始化为0,然后检测用户是否按下空格键,一旦按下空格键,就将变量“点数1”和”点数2“设置为1-6之间的随机数,然后就可以发送广播消息了,相应的代码如下:

简要说明三点:

1). 对于按下空格键的处理,这里使用的是“重复执行” + “等待按下空格键”,这可以确保游戏结束后,按空格键不再有任何反应,如果直接使用“当按下空格键”指令,就不符合题目要求;

2). 对于骰子1角色来说,它只需要判断两种情况,一是赢了,二是平局,如果是平局,则发送一个“平局”的广播消息;

3). 每赢一局,都需要判断自己是否胜利,游戏是三局两胜值,所以直接使用“赢局1=2”进行判断即可。

3. 骰子2角色

对于骰子2角色来说,代码就比较简单了,如下所示:

骰子2和骰子1的判断逻辑基本相似,它只需要判断自己是否赢了,平局的情况在骰子1角色中已经判断过,只需要在接收广播消息后说平局即可。

四.总结与思考

本题难度系数为3,积木块数量46个左右 ,涉及到的知识点主要包括:

  • 绘制角色和造型,重点是绘制造型的小技巧;

  • 外观编程,包括切换造型和说话指令;

  • 随机数指令的使用;

  • 事件广播机制,尤其是两种不同广播方式的特点和区别;

  • 条件语句的嵌套;

  • 按下空格键的灵活处理,注意两种方式的异同。

本题难度中等,重点是控制好程序的执行流程,这里使用了两种不同的事件广播方式,要深刻理解两种方式的区别,这其实就是编程中常说的同步和异步,二者最大的区别就在于,同步一个需要等待,异步不需要等待。

你认为“广播消息”指令是同步还是异步的呢,“广播消息并等待”指令呢?欢迎和超平老师讨论和交流,

如果你觉得文章对你有所帮助,别忘了点赞,你的鼓励是我坚持继续写下去的最大动力,Thanks♪(・ω・)ノ。

需要素材和源码的,可以联系作者,或者移步至同名vx号。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蓝桥杯scratch省赛真题是指蓝桥杯编程大赛中使用Scratch编程语言进行的省级比赛的问题。具体的题目会根据每年的比赛而有所不同,以下是一个例子: 题目要求创建一个游戏,模拟猴子爬楼梯的场景。猴子每次可以爬1到3级的楼梯,目标是爬到楼梯的最顶层。玩家可以通过按键来让猴子爬楼梯,同时需要显示猴子当前所在的楼梯层数以及已经爬过的楼梯数量。 首先,我们需要使用Scratch中的精灵功能来创建一个猴子的角色,可以自定义猴子的造型和动作。接下来,我们需要创建一个楼梯场景,可以使用Scratch中的背景功能来绘制楼梯。可以使用简单的图形表示楼梯,比如长方形。 之后,我们需要添加按键事件,让玩家输入按键来控制猴子的爬楼梯动作。可以使用Scratch中的事件功能来实现按键事件的触发。当玩家按下某个按键时,猴子开始向上爬楼梯。可以使用Scratch中的运动功能来控制猴子的位置,让其向上移动相应的楼梯层数。 同时,我们需要计算猴子当前所在的楼梯层数和已经爬过的楼梯数量。可以使用Scratch中的变量功能来记录这些信息。当猴子爬上一级楼梯时,楼梯层数加一,已经爬过的楼梯数量也加一。可以使用Scratch中的运算功能来实现变量的加法操作。 最后,我们需要添加判断条件,当猴子爬到楼梯的最顶层时游戏结束。可以使用Scratch中的控制功能来实现判断条件。当猴子的位置达到最顶层时,显示游戏结束的提示信息,并停止猴子的爬楼梯动作。 通过以上步骤,我们可以完成蓝桥杯scratch省赛真题中的猴子爬楼梯游戏。这个例子中只是其中的一个题目,实际比赛中的问题会更加复杂和多样化。但无论题目怎样,我们都可以通过使用Scratch的各种功能和编程思维,去解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值