打砖块游戏

用挡板弹开小球,打碎所有砖块吧!

分数: 0剩余机会: 3

移动鼠标、在画面上触摸拖动,或用方向键(←/→)控制挡板。按 P 键可暂停。

先弄懂小球怎么动

这个打砖块只有一颗球,前进方向始终是横向3px、纵向3px的组合。碰到墙、砖块或挡板时,只会翻转其中一个方向的符号,速度不变, 所以轨迹永远是45度斜线。无论打在挡板中间还是边缘,弹回的角度都一样,球也不会越来越快。 因此在这个游戏里,挡板操作的重点不是"制造角度",而是"提前判断球会落在哪里,并站到那里"。 画面是480×400的画布,游戏每秒固定更新60次,不管显示器刷新率是多少,速度都一致。

从代码读出的物理数值

项目数值
小球每帧移动距离横向3px、纵向3px(斜向约4.24px)
每秒移动距离每个轴180px,斜向约255px
键盘控制挡板速度5px/帧 = 每秒300px
挡板从一端到另一端(键盘)80帧 = 1.33秒
小球在左右墙之间横穿一次156帧 = 2.60秒
从挡板高度升到天花板约125帧 = 2.08秒
小球横穿挡板宽度(80px)约26.7帧

键盘挡板速度(每秒300px)比小球的横向速度(每秒180px)快,所以只用键盘也总能追上落点。 鼠标和触屏则会让挡板中心立刻移到指针位置,没有速度限制。挡板在画面两端会停住,不会移出画面。

砖块布局与到达时间

砖块共8列×5行,一共40块,每块1分,满分40分。打中一次就消失,没有多次才能击碎的砖块,也没有道具。 单块砖为52×18px,间隔4px,整体宽度444px,从左侧18px排到右侧462px,两侧留白相等。 下表是小球从挡板弹出后到达每一行底边所需的时间(以球心计算,假设不碰墙直线前进)。

自上而下颜色纵向范围(px)到达帧数到达时间(秒)
第1行红40 ~ 581081.79
第2行橙62 ~ 801001.67
第3行黄84 ~ 102931.54
第4行绿106 ~ 124861.42
第5行蓝128 ~ 146781.30

碰撞判定只用球心,而不是半径6px的圆。球心进入砖块矩形内才算击中,所以看起来球像是稍微擦进砖角再弹开。 挡板也一样:球心必须落在挡板的80px宽度内才算接住,即使球只是勉强压在挡板边缘,只要球心在外面就算漏接。

判定规则整理

用例子验证攻略

  1. 反应时间计算。打中最下面一行(第5行)后返回的球,回到挡板所用的时间与上升时间1.30秒大致相同。 最快一个来回约2.6秒,这段时间里球横向要移动约468px,你必须接住它。
  2. 键盘能不能追上。同样一个来回中,键盘挡板最多可移动780px,比球的横向位移更宽裕(碰墙反弹后位移还会更短),所以只用键盘也防得住。
  3. 得分构成。满分是5行×8列=40分,每一行分值相同。上面的行并不更值钱,所以先从下方的行打起风险更小。

实战策略

常见失误与局限

打砖块的起源

打砖块这一类型因1976年雅达利(Atari)推出的街机游戏《Breakout》而广为人知。挡板、小球和砖块这种简单的组合,后来衍生出无数变体和仿作。本页的游戏是对原版的简化呈现。

常见问题

可以在手机上玩吗?

可以。用手指触摸画布并左右拖动,挡板就会跟着移动。画布上已禁止页面滚动,需要滚动时请在画布之外操作。

小球的速度会越来越快吗?

不会。小球从头到尾保持相同速度(每个轴每帧3px),打碎再多砖块也不会变快。

球打在挡板的不同位置,弹回方向会不同吗?

不会。只有纵向方向翻转,横向速度保持不变,所以无论打在哪个位置角度都一样。决定方向的只是球原来的飞行方向。

怎么暂停?

点击暂停按钮或按 P 键即可暂停,再按一次继续。切换到其他标签页时,游戏时间不会流逝。

分数或记录会保存吗?

不会。分数只显示在画面上,刷新后重新开始,也不会在浏览器中保存任何数据。

也试试其他经典游戏

喜欢操控小蛇吃食物的话,可以玩贪吃蛇游戏;想练记忆力有记忆配对游戏; 想测反应速度可以试试反应时间测试。