用 React 做了一个解谜游戏

2025/09/25 | 2分钟阅读 | 更新于 2025/09/25

用 React 做了一个解谜游戏

技术架构

界面和交互

用的 React,可以参考前面的两篇文章,《使用 React 做一扇门》《使用 React 做一个抽屉》

动效部分采用了 motion .

另外支持了多语言,用的是 i18next 搭配 Jotai, 使用 atom 来获取翻译内容。

美术

用 Tailwind CSS 拼凑出各种场景。如果 CSS 不够用,就上 SVG,比如那个梯形的垃圾桶,还有植物的叶子。

值得一提的是,这些 SVG 的部分是用之前写的 SVG Maker 画出来的。

数据

场景切换用的是 React Router,并且 demo 中没有隐藏 route.

状态管理用的 Jotai,个人感觉这种一地零散的变量——像是是否获得某个道具,是否开启某个抽屉——用 Jotai 特别合适。

第一章的流程设计

  • 起始只有书桌和时钟,其它墙壁都是空的。
  • 书桌上摆着日记,但是有密码锁。
  • 时钟「翻转」可以得到三位的数字密码,是「日记」的密码。(可能会藏更隐蔽一点,比如时钟的电池可以取下来)
  • 日记,会有一些残页,阅读之后才会出现对应的场景,会有几条谜题反复强调这个信息。
  • 日记,会有一页提到「窗户」,阅读后才会出现,窗户。
  • 垃圾桶可以得到一个纸团,纸团几次点击后会完全展开,消失,出现在日记本中。这个书页会提示书架的存在,书架出现。
  • 书架前面地上的书,可以捡起来放回书架,会有文字提示「为什么掉在地上」以及「少了一本书」,给出一个「很慌乱」的暗示。
  • 书架下面的柜子可以打开,里面有密码箱。首次点击密码箱会回想「密码记在哪里了」,引导回去看日记。书中多出一页,提示「某个时间的招租信息」。
  • 调整时钟到特定时间,打开窗户可以看到外面的电话号码,是「书」的排列顺序,得到密码盒的密码。
  • 打开密码盒得到抽屉钥匙。
  • 拿钥匙打开抽屉,得到「证件」,角色名从「???」变成黑块,意味着回响起了有名字但是玩家不知道。

然后就没有更多了。

试玩 DEMO

DEMO: PROJECT ???

© 2026 香蕉引擎故障报告

🌱 Powered by Hugo with theme Dream.

关于

要怎么介绍自己呢,🤔。

很早以前是作为 Web 前端在学习的,但是工作第一年就成为了全干工程师。喜欢尝试各种东西,什么都会一点。

一直很喜欢 Ebiten 游戏引擎 ,特别简洁,用它做过一些小东西,可以查看这个分类 。另外特别推荐这个木鱼 ,是一个相对完整的小玩意儿,包含手搓的一个简单的 UI 框架;支持鼠标和键盘操作;有多语言和主题切换功能;同时支持 Web 端和客户端。它的源代码在 bin16/wooden-fish

主题

网站基于 Hugo,当前使用的是 hugo-theme-dream 主题的修改版 ,根据我的需要,做了一些对 PaperMod 的兼容。

我自己也写过主题 ,但是没有别人写的好看。

正在从我的笔记中往外搬运内容

等待更新:

  • 从《锈湖》中学了些什么东西
  • 我拿 React 写解谜游戏的经过
  • 基于 Pocketbase 的 Pocket Memos
  • 数独!