Scratch编程实战 之 投篮游戏

网友投稿 2019-11-23 14:01

Scratch编程实战之投篮游戏

前几篇文章了老冯叔叔已经讲了Scratch编程入门的方方面面,详见玩转Scratch文章系列,想必大家都已经迫不及待地想一试身手!好,我们现在就开始进入实战阶段。

投篮游戏

我们的第一个例子,是从小猫投篮球开始,效果如下面的视频:

图1.Scratch编程实战一-小喵投篮视频

任务目标

  1. 猫能够在场地内移动投篮位置,并且能够自由起跳

  2. 篮筐能够在屏幕的右上角的位置,随机上下左右移动,增加小猫投篮的难度

  3. 小猫能够投篮,篮球从上向下穿过篮筐才被认作得分

  4. 有记分牌,能够记录小猫能够得到多少分

任务分解

小喵部分

  1. 首先在事件中选择 绿色旗标启动 按钮被点击的事件

  2. 选择循环事件,处理左右按键的控制,按 左箭头 键小喵向左移动,按右箭头 键向右移动

  3. 当按向上键小喵起跳后,控制小喵的落地速度,同时控制小喵不要落到地面以下;

注意事项:小喵向左移动时,默认是小喵会头朝下的,这里需要选择翻转方式为左右翻转

整体代码部分如下图所示,这里需要设置一个 cat falling speed 的变量,用来记录小喵在垂直方向的起落速度;

https://cdn.china-scratch.com/timg/191125/140135I15-1.jpg图2.Scratch编程实战一-小喵左右移动

篮球部分

  1. 到 sprite 库中选择 things 分类,选择一个篮球;

  2. 同样,在时间中选择 绿色旗标启动 按钮被点击的事件;

  3. 篮球的初始状态是隐藏的;

    当 空格 键被点击时,将篮球的位置设置为小喵的位置,并将篮球设置为可见状态;

    同时,给篮球一个初始的垂直方向上的速度24;

  4. 设置一个循环状态,重复如下事件:

    当篮球没有落地时,修改篮球的水平方向坐标+8,根据篮球的速度修改其垂直方向的坐标,篮球的垂直方向速度是不断-2的;

  5. 当篮球落地以后,将篮球设置为隐藏状态;

代码部分如下图所示,这里需要设置一个 ball falling speed 的变量,用来记录篮球在垂直方向的起落速度;

https://cdn.china-scratch.com/timg/191125/1401352K0-2.jpg图3.Scratch编程实战一-篮球部分

篮筐部分

  1. 用画笔工具新建一个sprite,选择vector矢量图模式;

  2. 在偏中心的位置勾出一个椭圆的矢量图,这个椭圆表示篮筐;

  3. 再用画笔工具新建一个sprite,bit图模式即可,在椭圆中心点对应的位置,点一个2*2像素的点,表示篮筐的中心(老冯叔叔故意点了一个有颜色的点);

  4. 椭圆篮筐部分只做一件事,在 绿色旗标启动 后,篮筐一直重复一个循环,所做的事情就是每隔一秒在限定的右上角范围内变换到一个随机位置;

  5. 篮筐中心sprite也只做一件事,就是在 绿色旗标启动 后,一直追随篮筐的中心位置;

代码部分如下图所示:

https://cdn.china-scratch.com/timg/191125/1401351341-3.jpg图4.Scratch编程实战一-篮筐部分
https://cdn.china-scratch.com/timg/191125/1401355S3-4.jpg图5.Scratch编程实战一-篮筐中心
得分处理
以上每个部分都完成了之后,我们发现小喵能动了,篮球也能投了,篮筐也是随机运动了,还剩一个任务,就是小喵投篮得分的处理:
  1. 首先,小喵的投篮要从篮筐从上向下穿过篮筐的中心,才能被认定为得分

  2. 其次,为了增加趣味性,我们可以在小喵得分后,让篮筐发出 wonderful 的提示

  3. 记分牌上记录小喵投进去的总个数

关键的问题来了,也是编程中常见的问题,如何在不同的对象之间进行通讯,比如:这个游戏中我们判断得分的标识是 篮球触碰到了篮筐的中心,在程序中,我们怎么让篮筐知道这个消息呢,毕竟,我们的例子中,篮筐和篮筐中心是两个不同的 sprite ?
Scratch 提供了 broadcast 广播功能,就是一个 sprite 可以广播一个消息出去,而其他的 sprite 可以接收这个消息并加以处理。
好了,看代码吧!
篮球部分的代码修改如下:

https://cdn.china-scratch.com/timg/191125/14013A002-5.jpg图6.Scratch编程实战一-篮球最终
篮筐部分的代码修改如下:
https://cdn.china-scratch.com/timg/191125/14013622V-6.jpg图7.Scratch编程实战一-篮筐最终

任务总结

好了,整个代码部分就讲解完了,你可以手动尝试一下,自己亲手做的游戏,玩起来还是非常有意思的。游戏虽然相对简陋,但该有的核心部分已经全部包括在其中了。我们看到的大型游戏,也是由一个个 sprite 组成,他们之间也需要进行通讯处理,原理和我们这个篮球游戏基本一致,只是他们做的更加精细,游戏逻辑相对更多而已。

这个例子就到这里,后续请继续关注公众号,跟着老冯叔叔和老刘叔叔一起学习其他例子吧!

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com