击打魔法鱼
=========================
描述
-------------
在项目开始之前,我会告诉你一条神奇鱼的故事。 在浩瀚的海底世界,有一条神奇的魔鱼。 当你用海星击中它时,它会变成另一条鱼。
今天我们用scratch来模拟一个海底世界,然后加入海星精灵和魔鱼精灵来制作一个“打魔鱼”的小游戏。
点击绿旗开始。 按空格键发射海星。
.. raw:: html
或者点击 `Hit the magic fish `_, 然后在Scratch官网学习在线教程。
所需组件
-------------------------------
- A RasPad 3
- Scratch 3 (either online or offline)
你会学到
---------------------
- 让角色在碰到舞台边缘时反弹。
- 更改坐标以使角色移动。
- 做一个计时器。
- 使用广播告诉角色发生了什么。
课程指南
--------------
这条鱼在游泳。
^^^^^^^^^^^^^^^^^^^^^^^^
添加角色 **Fish** , **Star** 以及背景 **Underwater1** 。
.. image:: img/fish1.png
:width: 600
:align: center
让鱼出现在坐标 (-240,120)处, 然后让它左右游动。
使用 「**碰到边缘就反弹**」 代码块使鱼从边缘开始游动,当碰到墙壁时,它会朝着与原来相反的方向折回。
.. image:: img/fish2.png
:width: 400
:align: center
星星升起
^^^^^^^^^^^^^^^^^^^^^^^^^
让星星出现在坐标(0,-120)上.。如果按下 ``←`` 或者 ``→`` 键,星星会向着左右移动。
用 「**按下 ... 键?**」代码块来检测按键是否按下, 并用 「**将X坐标增加 ...**」 来移动角色。
.. image:: img/fish3.png
:width: 550
:align: center
然后让星星动起来,如果按下空格键,星星的y坐标值会增加,星星上升。
.. image:: img/fish4.png
:width: 550
:align: center
有没有感觉到哪里不对劲?星星应该继续上升,直到达到和鱼一样的高度(还记得吗?我们为鱼设置的 y 坐标是 120)然后返回。
.. image:: img/fish5.png
:width: 550
:align: center
这样看起来就好多了。
用星星砸鱼
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
星星升起之后可以用 「**碰到...?**」 代码块来判断是否砸到了鱼。
当星星砸到鱼之后,我们需要发出一个消息告诉鱼,并让鱼做出相应的反应--改变鱼的形状。
我们设置了 "Hit" 广播。 这个广播可以发出一个 "Hit" 的消息,让所有角色或者背景知道并作出相应的反应。
.. image:: img/fish6.png
:width: 550
:align: center
回到鱼的编程界面编写鱼接收到 "Hit" 之后的反应,用 「**当接收...**」 代码块判断是否接收到信息,
然后用 「**下一个服装**」 来改变鱼的形态。
.. image:: img/fish7.png
:width: 300
:align: center
计算得分
^^^^^^^^^^^^^^^^^^^^^^^^^^^
为了让游戏更有趣,可以添加评分机制。当单击绿旗时,分数将重置为零。当接收到 "Hit" 消息时,分数增加1.
.. image:: img/fish8.png
:width: 600
:align: center
.. note::
你可以将计算得分的代码块放在背景中。
倒计时
^^^^^^^^^^^^^^^^^^^
使游戏更丰富还可以添加时间机制。当点击绿旗时,计时器设置为30s,然后每秒递减1,直到时间减为0的时候结束游戏。
但如果接收到 "Hit" 的信息时,可以让计时器加1以增加游戏时间。
.. image:: img/fish9.png
:width: 600
:align: center
挑战
------------
相信你很快就能掌握并实现这个游戏。接下来可以添加下面的内容来使你的游戏更丰富。
- 添加三条不同的魔法鱼
- 击中其中一条会获得双倍积分
- 几种另外一条会减少游戏时间
- 击中第三条会更换背景