弹射冰球

弹射冰球

弹射冰球

双方各有 5 个冰球。轮到你时,向后拉动一个冰球再松手,把它弹到对面。先清空自己半场的一方获胜。

你的冰球: 5 · AI 冰球: 5

把冰球向自己这一侧拖动再松手。拉得越远力度越大;从中间的缺口直线弹射飞得最远。

弹射冰球:一款双人物理对战桌游

弹射冰球(Sling Puck,也叫弹射冰球、冰球弹射、桌上冰球)是一款节奏明快的双人桌面游戏。双方各在自己的半场放 5 个冰球,两个半场之间有一道带中央缺口的木质挡板。轮到你时,把皮筋勾在一个冰球后面,向后拉紧再松手,冰球就会向前弹出,撞到边框、挡板和其他冰球后,有可能飞进对方半场。

先将自己半场清空的一方获胜。被撞回自己半场的冰球仍然属于你,下一回合还要再处理,所以大力弹射也可能把之前的成果打回来。

本页是一个完整可玩的 2.5D 版本:Three.js 渲染固定的斜视角棋盘,Rapier 2D 物理引擎负责每一次真实的碰撞与反弹。无需账号、下载或插件。

自由模式

自由模式是在同一块棋盘上的手速对决。没有回合:双方随时都能出手,AI 按固定节奏不断弹射,你也可以连续操作。只能抓起已经停稳的冰球(速度低于收球阈值),还在飞行中的冰球抓不住。把你半场里任意一个静止的冰球向后拉动再松手,然后立刻去抓下一个。冰球一旦越过挡板离开自己半场就不会再回来,任意一方半场先清空即获胜。AI 的出手节奏随难度变化:简单约 1.8 秒一次,普通约 1.2 秒,困难约 0.7 秒。在开始界面切换模式,难度对两种模式都生效。

操作方式

  • 鼠标: 按住自己的一个冰球,向自己这一侧向后拖动,然后松手。
  • 触屏: 用一根手指做同样的动作。拖动时画布会阻止页面滚动。
  • 拉得越远力度越大。瞄准箭头和力度条会显示弹射方向和力度。
  • 拉得太短会被当作取消操作,方便你调整握持位置,不会浪费回合。
  • 每回合限时 30 秒,超时会自动跳过该回合。

规则

  1. 双方各有 5 个冰球。黑白颜色只是装饰,物理属性完全相同。
  2. 只能弹射自己半场内的冰球,而且必须轮到你。
  3. 必须把冰球向自己这一侧拉,弹射方向永远朝对手半场。
  4. 弹射后棋盘会模拟到冰球基本静止,然后交换回合。
  5. 停在对方半场的冰球就离开你的半场了;被撞回自己半场的冰球需要重新清出去。
  6. 任意一方半场先清空即获胜。如果同一杆同时清空两个半场,由弹射方获胜。
  7. 冰球可以穿过中央缺口,也会被挡板、外框和其他冰球弹开。缺口两侧都有圆角,贴着挡板斜着擦过同样可能穿过去(也就是“蹭边”)。

难度说明

  • 简单: 只搜索少量弹射方案,并加入较大的角度与力度误差,适合熟悉操作。
  • 普通: 搜索更多方案,从前三名中挑选,并加入少量误差,比较公平。
  • 困难: 评估较广的角度与力度组合,基本选择最优解,只在很小的范围内偏差。它会使用借边框反弹、穿缺口等技巧。

AI 和你使用同一套规则与物理引擎,不会作弊。它只是通过模拟来筛选候选弹射方案。

物理技巧

  • 中央缺口是最近的路线,但直线弹射也最容易被预判。
  • 利用左右边框反弹,可以打到被冰球堆挡住的球。
  • 斜着撞进球堆能一次打散多个冰球,通常比只打中一个更划算。
  • 满力不一定最好:力度小一些,冰球更容易停在缺口附近,而不是弹回自己半场。
  • 也要观察对手的球:如果一杆清空了自己的半场,却让 AI 只差一个球就赢,那是不划算的交换。

常见问题

手机能玩吗?

可以。页面是响应式布局,使用 Pointer Events,同一套拖动操作适用于手指;棋盘会按屏幕宽度缩放。

黑白颜色有区别吗?

没有。黑白冰球的质量、摩擦和弹性完全相同,颜色只是用来区分双方。

超时后会发生什么?

会跳过当前回合并显示提示,棋盘状态不变。这样既保持类似线上的回合计时,也避免游戏卡住。

第二个玩家的视角会镜像吗?

人机模式使用固定的单屏视角,也就是你坐在桌边看到的角度。将来加入在线模式时,可以为远端玩家翻转视角,而不需要改动模拟逻辑。

源码在哪里?

游戏是本开源项目的一部分。规则、物理适配层、实时对局、AI 策略、渲染和 React UI 分别位于 src/app/[lang]/games/slingpuck/ 下的独立模块中,并有规则、物理、回合引擎、实时对局、AI 和 UI 格式化的单元测试。

;