# slide **Repository Path**: tfcolin/slide ## Basic Information - **Project Name**: slide - **Description**: 一个简单的滑块拼图 (华容道) 游戏, 按前后台模式设计. 后台负责游戏规则实现和流程控制, 前台负责与用户交互. 前端开发者可以基于软件包内的游戏引擎部分开发不同的用户界面. - **Primary Language**: C - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 1 - **Created**: 2023-09-18 - **Last Updated**: 2026-08-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [![License: GPL-3.0](https://img.shields.io/badge/License-GPLv3-blue.svg)](LICENSE) [![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20macOS-brightgreen.svg)](doc) [![Language](https://img.shields.io/badge/language-C-orange.svg)](sp.c) > 一个基于 C 语言实现的经典滑块拼图游戏。采用依赖倒置架构,核心引擎与 UI 渲染完全解耦,支持 GTK 图形界面与 ncurses 终端界面。 详细文档参见 doc/slide.pdf. 核心引擎作为后台, 负责游戏规则实现和流程控制. 前端则负责与用户交互. 前端开发者可以基于软件包内的游戏引擎部分开发不同的用户界面. ## 📸 演示截图 | 🖥️ GTK 图形界面 | 📟 Curses 终端界面 | | :---: | :---: | | ![GTK UI](doc/ui_gtk3_proc.png) | ![TUI](doc/ui_ncurses.png) | | *支持图片动态切割与鼠标交互* | *Vim 键位控制,自动适应终端* | ## ✨ 核心特性 * **数学级可解性保证**:基于逆序数奇偶性原理,通过偶数次随机交换算法,确保生成的每一局拼图 100% 有解。 * **双端 UI 支持**: * 🖥️ **GTK+ 图形版**:支持自定义图像、鼠标交互。 * 📟 **Curses 终端版**:支持 Vim 键位映射、终端尺寸自适应、局部高效刷新。 * **极致解耦架构**:核心逻辑 (`sp.c`) 不依赖任何 GUI 库,通过回调函数驱动,极易移植到 Web (Wasm)、移动端或 SDL。 * **轻量级**:纯 C 实现,无冗余依赖,编译快速,资源占用极低。 ## 🚀 快速开始 ### 编译环境依赖 * **GTK 版**: `libgtk2.0-dev`, `libgdk-pixbuf2.0-dev` * **终端版**: `libncurses5-dev` (或 `libncurses-dev`) ### 编译 ```bash # 1. 克隆项目 git clone https://gitee.com/tfcolin/slide.git cd slide # 2. 编译 (默认同时编译两个版本) make # 3. 运行 ./slide_gtk # 启动图形界面 ./slide_cs # 启动终端界面