关于 MariOCaml
MariOCaml 由 Matthew Hsu、Liam Bui 和 Ashley Xue 在康奈尔大学(Cornell University)创作,最初是一门函数式编程课程的期末项目,后来成为 GitHub 上最受欢迎的 OCaml 项目之一。
整个游戏——物理系统、敌人、道具、摄像机和渲染器——全部用 OCaml 编写,并通过 js_of_ocaml 交叉编译为 JavaScript,因此可以在普通网页中运行。底层有一个负责管理游戏状态并运行主循环的“导演”(director),同时由程序化生成器在网格上构建每个关卡,并确保关卡可以通关。
成品看起来像 SNES 时代的 Mario 游戏,但又有些不同:每次加载,你都会看到不同排列的砖块塔、金币云和 Koopa Troopa。有些布局很精巧,有些则很混乱——这正是随机关卡的魅力。
操作方式
| 按键 | 动作 |
|---|---|
| ← → 或 A D | 移动 |
| 空格、↑ 或 W | 跳跃 |
| ↓ 或 S | 蹲下 |
特色
- 100% 使用函数式语言 OCaml 编写
- 随机关卡生成器,自动放置砖块、金币、敌人和缺口
- 包含得分、金币计数、游戏结束和通关画面
- 砖块破碎和踩扁敌人时会有粒子特效
小技巧
- 左上角的数字是帧率,不是计时器,所以不用着急。
- 可以把龟壳踢向其他敌人,连续得分。
- 如果生成的关卡很别扭,点击重新开始按钮重新加载画面,就能获得新的布局。


