本页目录

Oimo.js 轻量级 3D 物理引擎

Oimo.js · lo-th/Oimo.js

Oimo.js 是一个面向 JavaScript 的轻量级 3D 物理引擎,由 OimoPhysics 完整转写而来;OimoPhysics 最初由 Saharan 使用 ActionScript 3.0 编写。项目提供主页、文档以及基础、复合物体(椅子、胶囊)、布娃娃和碰撞等示例页面。主页与文...

益智解谜 休闲 无明确引擎 C 游戏状态管理 UI 系统 渲染技术 入门
★ Stars 270 Forks 71 License MIT 更新 2026-11-04

国内开发环境适配

Windows
未知
Linux
官方声明支持
macOS
未知
引擎 / 框架:无明确引擎 暂无中文教程标记 未标记站长实测
ncurses 开发库需通过发行版包管理器安装(如 Debian/Ubuntu 的 libncurses5-dev);从 GitHub 克隆源码时如遇网络问题可考虑镜像加速,具体可用性待核验。

中文项目介绍

2048-cli 是经典数字合并游戏 2048 的命令行实现,目标平台是 Linux 终端。它把原本运行在浏览器里的滑动合并玩法搬到了纯文本界面中,用 C 语言编写,不依赖图形桌面环境,因此可以在 SSH 会话、服务器终端或本地 shell 里直接游玩。

仓库说明中明确提到,项目当前提供两种可运行的版本:一种是直接面向普通终端的实现,另一种基于 ncurses 库。两者共享同一套游戏逻辑,区别主要在界面渲染与输入处理层。这种分层设计也让项目具备了扩展性——如果想加入新的图形界面,只需新建一个 .c 文件实现 gfx.h 中声明的全部函数,并在 Makefile 中添加对应条目即可。

项目本身是对 Gabriele Cirulli 原作 2048 的命令行复刻,README 中给出了原项目的链接,方便对照玩法规则。

核心功能

双界面版本

普通终端版与 ncurses 版并存,可按需编译使用。

可扩展的图形接口

界面层通过 gfx.h 抽象,新增界面只需实现该头文件中的函数并补充 Makefile 条目。

终端兼容性处理

默认假定使用 VT100 兼容终端;若终端不兼容,可在 Makefile 中移除 `-DVT100` 编译标志。

键盘操作

默认使用 hjkl 与 wasd 两组移动键,q 键退出当前游戏。

命令行选项

支持查看用法、查看当前最高分、开关颜色、开关动画、启用 AI(可选择是否显示游戏画面)、重置最高分、设置棋盘尺寸、设置每回合方块生成速率等。

发行版打包

README 提到在 el >= 5(CentOS、RedHat Enterprise Linux、Scientific Linux、Oracle)与 Fedora >= 19 上可通过包管理器安装 `2048-cli[-nocurses]`,el 系列需要启用 EPEL 仓库。

技术架构分析

构建与运行

获取源码与编译的基本流程为:

git clone https://github.com/tiehuis/2048-cli.git
make

编译前需要注意依赖与终端环境:

  • 标准终端版本默认要求系统提供 termios.h,并假定当前使用的是 VT100 兼容终端。
  • 如果终端不兼容 VT100,可以修改 Makefile 并移除 -DVT100 标志。
  • 编译 ncurses 版本需要安装 ncurses 的开发库。以 Ubuntu/Debian 为例,可通过 apt-get install libncurses5-dev 获取。

在 el >= 5 系列与 Fedora >= 19 上,也可以直接使用包管理器安装 2048-cli[-nocurses];el 系列需要预先启用 EPEL 仓库。README 还提供了在 repl.it 上运行的徽章链接,便于在线体验。

技术要点

从 README 可以确认的工程结构信息包括:

  • 项目使用 C 语言编写,构建系统为 Makefile。
  • 游戏逻辑与界面渲染分离,界面层由 gfx.h 定义接口。
  • 存在两套界面实现:普通终端版与 ncurses 版。
  • 通过编译宏 -DVT100 控制终端兼容策略。
  • 提供 AI 运行模式,可选择是否同时渲染游戏画面。

这些设计使得项目既是一个可直接游玩的完整小游戏,也是一个适合阅读的终端界面编程示例:如何用 termios 处理按键输入、如何用 ncurses 绘制界面、如何通过头文件抽象出可替换的渲染层。

补充说明

玩法与操作

游戏规则与原版 2048 一致:在棋盘上滑动方块,相同数字的方块相撞后合并,目标是不断累积出更大的数字。命令行版把棋盘以文本形式绘制在终端中,通过按键完成上下左右移动。

操作方式如下:

  • hjkl 与 wasd:默认的移动按键,两套布局任选其一。
  • q:退出当前游戏。

README 中列出的命令行选项包括:

  • -h:打印程序用法。
  • -H:打印当前最高分。
  • -C:禁用颜色支持(默认行为)。
  • -c:在终端支持的情况下启用颜色。
  • -a:启用动画(默认行为)。
  • -A:禁用动画。
  • -i:启用 AI,但不显示游戏画面。
  • -I:启用 AI,并显示游戏画面。
  • -r:重置最高分,执行前会提示用户确认。
  • -s SIZE:设置游戏棋盘的尺寸。
  • -b RATE:设置每回合方块生成的速率。

许可说明

本项目采用 MIT 许可证,具体条款见仓库中的 LICENSE 文件。

开源许可证与版权说明

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

相似项目