A free browser game — play it in your browser, no install. 保卫萝卜网页版:15 波塔防,5 种防御塔,纯前端零依赖,画面全部 canvas 现画。
Vote and save it — free account with email or sign in with GitHub
Made this, @ALGSN1386? See how many people played it → or use email
📅 Three new games every day, no account needed · Play today’s three →
Controls: Space · Mouse
GitHub may ask you to sign in, then to let VibeCruiser “Verify your GitHub identity” and “Act on your behalf”. We only read your profile and email, and never post anything.
No account needed to save ♥ or react 🔥: they’re under the game. Or vote with email.
Open the live demo Source on GitHub经典塔防的浏览器实现:建塔、升级、挡住 15 波怪物,别让它们碰到萝卜。 纯前端、零依赖、无构建步骤——所有画面都是 canvas 现画的,仓库里没有一张图片。
升级(2/3 级):伤害 ×1.65、射程 +18、间隔 ×0.88,造价约为原价 0.9 倍 / 1.3 倍。
15 波,第 5/10/15 波是首领波。每波怪物生命按 1 + 0.22 × (波次 - 1) 放大。
这套数值不是拍脑袋定的。逻辑层(js/game.js)不依赖 DOM 和 canvas,所以可以直接在 Node 里跑完整对局验证平衡:
1. 逻辑与渲染彻底分离 game.js 里没有一行 DOM 或 canvas 代码,只接受 (state, dt)。代价是渲染要自己从 state 里取数据,收益是这个游戏的核心玩法可以被自动化测试和仿真验证——上面那张表就是这么来的。
2. 整个游戏没有一张图片 地图、塔、怪物、特效全部是 canvas 基本图形组合出来的。好处是仓库极小、任何分辨率都不糊、改配色不用重新导出资源。
3. 逻辑坐标固定 960×600,实际分辨率跟随 DPR 所有绘制用逻辑坐标,ctx.setTransform 统一缩放。因此同一套坐标既能适配手机窄屏,也能在高分屏上保持清晰。
4.
Built something like this? Submit your vibe — free account, takes a minute. How listing works.
Claim it: create a free account, then press CLAIM THIS in the cruiser. Put the badge below in your README or on your demo page first; that link is how we know it's yours.
Your project is on the cruise, loaded live from your own site. Put the badge in your README or on the demo page: it shows your live play count, it links back to this page, and everyone who lands here is one click from running the real thing.