一、游戏说明

实现一个打砖块的小游戏,基本元素包括小球,挡板,砖块,终点线,分数,背景自选。


二、需求分析

1. 小球

  • 小球碰到挡板和墙壁时都要反弹
  • 小球碰到砖块时砖块消失
  • 小球碰到终点线时游戏结束

2. 挡板

  • 挡板随鼠标水平移动,竖直方向位置不变
  • 挡板碰到小球时小球反弹

3. 砖块

  • 砖块在屏幕上方排列整齐
  • 砖块碰到小球时砖块消失

4. 分数

  • 小球碰到砖块使砖块消失时分数加一

5. 终点线

  • 小球碰到终点线时游戏结束

三、设计说明

1. 小球

  • 游戏开始时,小球位于屏幕中间,向某一个方向飞出;这个方向最好不要向下或者斜向下;可适当调整小球的大小和飞行速度
  • 小球碰到挡板和墙壁时都要反弹,且反弹遵守反射定律,入射角和出射角相等

2. 挡板

  • 挡板随鼠标水平移动,竖直方向位置不变

3. 砖块

  • 砖块在屏幕上方排列整齐,三行,每行十个,可使用一个砖块克隆完成
  • 砖块碰到小球时砖块消失

4. 分数

  • 小球碰到砖块使砖块消失时分数加一

5. 终点线

  • 小球碰到终点线时游戏结束

四、代码实现

第一步,选择适当背景;选择‘Ball’作为角色,可以给它改名为‘球’;游戏开始时将小球放在屏幕中间,大小调成50,面向40°方向,重复向前移动,碰到边缘反弹。

至此实现了小球的基本运动,效果如图

第二步,选择‘挡板’为角色,放在坐标(0,-140)处,循环,把它的横坐标设置为鼠标的横坐标,这样它就会在水平方向上随着鼠标移动。

效果如图

第三步,当小球碰到挡板时,要使小球反弹,且遵循反射定律,先看反射的示意图

反过来也是一样的

所以小球撞到挡板后反射需要转过的角度=180° - 方向x2,在小球的代码中添加内容

效果图

第四步,添加砖块(难点)

首先添加一个长方体的模型当做砖块,把它放在屏幕左上角的位置并适当调整大小。

我们计划排列30个砖块,排成3行,每行10个;由于我们不会去添加30个砖块角色,虽然也能实现,但是非常繁琐。所以我们要用到‘克隆’来实现这个功能,将一个砖块克隆30次就可以了。

执行后会发现没有变化,是因为克隆是在“原地”执行的,也就是说克隆出来的30个砖块都叠加在一起了。所以我们要想办法把它们分开,当然不能手动拖拽。

我们需要建立两个变量,‘砖块数量’和‘砖块编号’。砖块数量用来记录画面内砖块的数量,适用于所有角色;砖块编号表示每个克隆出来的砖块的编号,仅适用于当前角色。

注意:克隆功能神奇的地方在于,当克隆体被启动时,它就自动拥有了被克隆对象的所有代码;如果建立的变量‘仅适用于当前角色’,那它被克隆体使用时,也将仅适用于此克隆体,而对其它克隆体没影响。我们接下来会举例说明

为了查看每个砖块的编号是否准确,我们设置点击砖块时显示砖块编号,这样可以方便我们看到效果

可以看到砖块都被编号了。那如果砖块编号不是‘仅适用于当前角色’会怎么样呢?会变成这个样子:

可以看到每个砖块的编号都是30,这是因为我们把砖块编号变成了‘适用于所有角色’,然后把它设置为了砖块数量,而砖块最后的数量就是30。

也可以这样理解


以上就是对‘适用于所有角色’和‘仅适用于当前角色’的解释。

我们需要对30个砖块进行整齐的排列,这就意味着我们要对每个砖块的位置严格控制。由于砖块刚克隆出来时都重叠在一起,这就需要它们自己“走到”各自对应的位置上,那应该怎么实现呢?假如30个砖块是以以下的方式排列的。

由上图我们知道了砖块的行数和列数与砖块编号的关系,所以我们需要再创建两个变量 ‘砖块所在行’和‘砖块所在列’来表示他们,然后再克隆体启动时为它们赋值,当然这两个变量也是‘仅适用于当前角色’的。

有了行列关系后,我们需要让每个砖块自己“走到”自己位置上去,这其中的关系如下图所示

按照这个移动逻辑来编辑克隆体移动的代码

至此砖块就排列好了。接下来我们要让小球碰到砖块时,砖块消失,而且积分

效果如图

但是我们还要实现当小球碰到砖块时也要反弹。这里我们用消息广播的功能,当砖块被小球碰到时,广播一个消息,通知小球反弹。

这样我们就发出了一个广播,现在要让小球接收到广播时反弹

效果如图

最后添加终点线,当小球落到终点线上时使游戏结束

至此这个游戏就基本完成了,但是其中还有很多细节可以完善,之后会再写一篇说一下。

【scratch】class_3_打砖块小游戏相关推荐

  1. Python游戏开发,pygame模块,Python实现打砖块小游戏

    前言: 本期我们将利用python制作一个打砖块小游戏,废话不多说,让我们愉快地开始吧~ 效果展示 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RdjcY4gn-16 ...

  2. python小游戏代码大全-Python实现打砖块小游戏代码实例

    这次用Python实现的是一个接球打砖块的小游戏,需要导入pygame模块,有以下两条经验总结: 1.多父类的继承2.碰撞检测的数学模型 知识点稍后再说,我们先看看游戏的效果和实现: 一.游戏效果 二 ...

  3. 打砖块小游戏php程序,利用原生js实现html5打砖块小游戏(代码示例)

    本篇文章给大家通过代码示例介绍一下利用原生js实现html5打砖块小游戏的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 前言 PS:本次项目中使用了大量 es6 语法,故对于 ...

  4. Unity3D基础34.1:打砖块小游戏优化

    前文:https://blog.csdn.net/Jaihk662/article/details/86768910(打砖块小游戏设计) 前面实现了一个非常的简单打砖块小游戏,但可以发现里面有许多不合 ...

  5. Html:简单实现弹砖块小游戏

    用html与js实现简单的弹砖块小游戏(初级) 用键盘的左右键控制一个板块让小球反弹,小球反弹到上面,与其相碰的砖块会消失,小球落地会重新开始游戏. 弹砖块小游戏--初级 第一部分body:要注意格式 ...

  6. Arduino中编写打砖块小游戏(完整代码)

    标题 Arduino中编写打砖块小游戏(完整代码) 程序中有大量的注释,希望真的能帮助到你! (一)环境 硬件:OLED 屏幕(128*64).摇杆模块(程序中使用的是摇杆模块的模拟量,如果你身边没有 ...

  7. java写的小游戏打砖块_java实现打砖块小游戏

    本文实例为大家分享了java实现打砖块小游戏的具体代码,供大家参考,具体内容如下 源码共包含两个文件 文件1:play_zhuankuai.java import java.awt.*; import ...

  8. 打砖块小游戏php程序,javascript实现打砖块小游戏(附完整源码)

    小时候玩一天的打砖块小游戏,附完整源码 在?给个赞? 实现如图 需求分析 1.小球在触碰到大盒子上.左.右边框,以及滑块后沿另一方向反弹,在碰到底边框后游戏结束: 2.小球在触碰到方块之后,方块消失: ...

  9. 用JAVA实现一个简易的打砖块小游戏

    概述 利用java实现打砖块小游戏,游戏界面包括以下元素 顶部的各色砖块 底部的挡板 小球 游戏信息展示面板 玩法包括 使用鼠标或者键盘移动挡板 打掉砖块,得分 每一局有3次机会,挡板没有接到小球,机 ...

最新文章

  1. Apache POI和EasyExcel 第四集:Apache POI的Excel基本读取(分为03版的xls、07版的xlsx)
  2. 《人月神话》阅读笔记--02
  3. codeforces 453C Little Pony and Summer Sun Celebration
  4. [Node.js] mySQL数据库 -- 英雄英雄管理系统接口
  5. 父子/父孙传参(Provide/inject方式)
  6. python第三十一课--递归(3.递归的弊端)
  7. 20-21-2网络管理quiz5
  8. Win10 IoT C#开发 1 - Raspberry安装IoT系统及搭建开发环境
  9. ADO.Net 数据库访问技术
  10. php导入rtf文件获取内容,可以使用PHP在网页中显示RTF文件吗?
  11. 金蝶k3服务器重装账套怎么恢复,金蝶KIS旗舰版、金蝶K3账套备份、恢复操作教程...
  12. [GW-CTF2019] babyvm
  13. odroid Xu4介绍
  14. 优酷android 离线 导出来,手机优酷缓存的视频如何导出 缓存视频导出到电脑方法...
  15. C语言零基础入门级数据类型+运算符+控制流+ASCII 码表+面试题【系统学习第二天】
  16. 几种车载网络特征对比
  17. hadoop之MapReduce学习教程
  18. Redis数据莫名其妙全部丢失
  19. DataSheet查询网站
  20. [Swift]LeetCode334. 递增的三元子序列 | Increasing Triplet Subsequence

热门文章

  1. 评测:北京歌华数字电视升级后的使用体验
  2. Vue中的axios拦截器
  3. 基于STM32单片机的智能鱼缸控制系统原理图PCB
  4. 两个游戏认识增强学习
  5. asciidoc转换html,Word文档到Asciidoc转换
  6. How To Be Successful(by Sam Altman)
  7. 浏览器广告弹窗太多?教你清理浏览器广告弹窗的方法
  8. 鸡尾酒排序算法c语言源代码,排序算法 -鸡尾酒排序
  9. html里th是什么单位,网页中的th/th是什么意思
  10. 通达信交易接口如何确保数据的完整性的?