小丑牌

用 React + useReducer 写的 Balatro 风格卡牌游戏:凑牌型、堆小丑、乘算分数,挑战 8 轮盲注。

可试玩 游戏React小丑牌 ReactViteJavaScript

在浏览器里还原《小丑牌》的核心循环:选牌 → 算分 → 进商店 → 下一轮。

  • 牌型与倍率:从高牌到同花五条共 13 种,筹码 × 倍率 × 乘算;
  • 五十多张小丑:花色加成、牌型条件、乘算、经济流都有;
  • 完整单局:8 轮盲注配置、Boss 限制、商店刷新与利息。

React 18 + Vite 构建,最终打包成一个可以直接打开的 HTML。🃏

直接开玩

选牌、算分、逛商店 —— 完整的一局都在浏览器里跑,不用安装,也不用登录。

试玩预览

点击后才加载单文件游戏包(约 200KB),在此之前不会发出任何游戏资源请求。
加载完成后可以直接在下面选牌、出牌。

想要更大的画面?点上方「全屏游玩」在新窗口打开。

🎮 玩法介绍

  • 选牌 → 出牌 → 算分 → 逛商店,在有限的出牌次数内凑够盲注分数。
  • 13 种牌型决定基础「筹码 × 倍率」,五十多张小丑牌负责把数字继续放大。
  • 8 轮盲注,目标从 300 一路涨到 150000;Boss 盲注会附加额外限制。
  • 商店刷新、利息与强化牌,让每一轮都要在「现在」和「以后」之间做取舍。

🧱 技术栈

React 18ViteJavaScriptuseReducervite-plugin-singlefile
  • React 18 函数组件,整局状态交给一个 useReducer 状态机。
  • Vite 构建,vite-plugin-singlefile 把 JS / CSS 内联成一个自包含 HTML。
  • Fisher–Yates 洗牌、chips × mult × xMult 算分,纯前端无后端。
  • 打包后约 200KB,挂在静态站里即点即玩。

📁 源码说明

React 源码在仓库的 projects/balatro/ 目录(Vite 工程), jokers.js 等文件定义小丑牌与算分逻辑。构建产物被复制到 public/games/balatro/index.html,随 Astro 站点一起发布。

  • 已知限制:商店 voucher 与个别小丑尚未实现,第 8 轮的胜利判定还在修。
  • 预览用的就是线上同一份构建产物,加载后不会再请求额外资源。
读读完整实现笔记