本页目录

立方体合成器(Cube Composer)——函数式编程解谜游戏

cube-composer · sharkdp/cube-composer

一款受函数式编程启发的浏览器解谜游戏,使用 PureScript 编写。玩家通过组合变换器(transformer,类似函数)来改变立方体图案并通关;关卡按章节组织,每个章节在 src/Levels/ 下对应一个文件,并提供该章可用的变换器列表,例如 "map...

益智解谜 无明确引擎 C 关卡管理 游戏状态管理 中级
★ Stars 2,055 Forks 85 License MIT 更新 2026-11-03

国内开发环境适配

Windows
未知
Linux
未知
macOS
未知
引擎 / 框架:无明确引擎 暂无中文教程标记 未标记站长实测
依赖 npm 和 bower 安装,国内网络可能较慢,建议配置镜像源;具体兼容性待核验。

中文项目介绍

Cube Composer(立方体合成器)是一款以函数式编程思想为灵感的浏览器解谜游戏,使用 PureScript 编写。玩家需要组合各种变换器(transformer,类似函数)来改变立方体图案,使其与目标图案一致,从而通过关卡。游戏将函数式编程中的映射、替换等概念具象化为可操作的变换器,让玩家在解谜过程中直观感受函数组合的威力。

README 提供了在线游玩链接,也可以按照本地安装步骤在浏览器中运行。

玩法指南

游戏的核心机制围绕“变换器”展开。每个章节会提供一组特定的变换器,例如 map {Yellow}↦{Red} 表示将所有黄色立方体替换为红色。玩家需要从初始图案出发,通过按顺序应用变换器,最终得到目标图案。

关卡按章节组织,每个章节在 src/Levels/ 目录下对应一个文件,并在 Levels.purs 的 allChapters 列表中注册。每个关卡包含以下信息:

  • name:关卡标题
  • help:右侧面板显示的帮助文本
  • difficulty:难度等级(Easy、Medium 或 Hard)
  • initial:初始立方体二维数组(Wall 类型)
  • target:目标立方体二维数组

变换器在章节文件中定义,例如:

"replaceYbyR" :> {
    name: "map {Yellow}↦{Red}",
    function: replaceSingle Yellow Red
}

其中 replaceYbyR 是内部 ID,name 是显示名称({x} 会替换为对应颜色的小立方体图标),function 是类型为 Transformer 的函数。Transformer 的定义为:

type Stack = List Cube
type Wall = List Stack
type Transformer = Wall -> Wall

即变换器是一个将 Wall(立方体的二维数组)映射为新 Wall 的函数。一些基础变换器在 Transformer.purs 中提供。

核心功能

函数式编程实践

游戏逻辑使用 PureScript 编写,充分利用了函数式编程的类型系统和组合能力。变换器本身就是函数,玩家在游戏过程中实际上是在进行函数组合。

关卡数据驱动

关卡和变换器以记录(record)形式定义,结构清晰,便于扩展和修改。

自动化验证

项目提供了命令行工具,可以列出所有关卡及其最短解法,方便验证新关卡的可解性和唯一性。

补充说明

本地安装

按照 README 的步骤,可以在本地运行游戏:

git clone https://github.com/sharkdp/cube-composer.git
cd cube-composer
npm install
bower install
gulp

如果没有错误发生,用浏览器打开 index.html 即可开始游戏。

创建新关卡

如果你想为游戏添加新谜题,可以按照以下流程:

  1. 在 src/Levels/ 下复制一个现有章节文件,修改章节编号,并将其添加到 Levels.purs 的 allChapters 列表中。
  2. 在该章节文件中定义新的变换器(如有需要)和关卡记录。
  3. 使用以下命令查看所有关卡及其最短解法,以验证新关卡是否按预期可解,且没有其他解法削弱其设计意图:
gulp prod
node dist/cli.js

欢迎通过 Pull Request 提交你的谜题。

CI 状态

README 中包含 Travis CI 的构建状态徽章,表明项目使用持续集成进行自动化构建。

开源许可证与版权说明

许可证标识:MIT。源码、资源与依赖许可可能不同,请以官方仓库为准。本站仅做索引,不托管源码。

相似项目