Character Animation Library For C
仓库地址
https://github.com/worable233/Character-Animation-Library-For-C
简介
字符动画库 For C 是一个基于C语言标准库开发的轻量级终端字符动画库,专门用于在命令行界面中创建流畅的字符加载动画和对话框效果,为C语言开发者提供了简单易用的终端动画解决方案,让命令行程序拥有更丰富的视觉体验!
主要特性
✨ 核心优势
- 🚀 超轻量级 - 仅依赖C标准库,无额外依赖
- ⚡ 高性能 - 优化的动画渲染逻辑
- 🔧 高度可定制 - 支持手动修改动画帧和参数
- 🛡️ 稳定可靠 - 内置空指针检查,增强程序健壮性
功能特色
🎯 已完成功能
- ✅ 字符加载动画显示
- ✅ 支持多种动画样式
- ✅ 可调节帧间隔时间
- ✅ 自定义动画总时长
- ✅ 智能对话框输出
- ✅ 自动清屏和光标控制
- ✅ 空指针安全检测
技术特点
- 🎮 动画控制 - 精确控制动画时长和帧率
- 📝 文本处理 - 智能处理空格和标点符号
- 🖥️ 终端兼容 - 使用ANSI转义码,兼容主流终端
- 🔄 循环动画 - 自动循环播放动画帧序列
快速开始
1. 引入头文件
#include <stdio.h>
#include <unistd.h>2. 声明函数和全局变量
请将以下内容添加到主函数前。
// 声明函数
void clean(void);
int loading(char *text,int times,float sleeptime);
int textbox(char *name,char *text,float sleeptime);
int loading_text(char *text,int times,float sleeptime);
// 声明全局变量
const char *strings[] = {"|", "/", "—", "\\"};
const int int_len = sizeof(strings) / sizeof(strings[0]);3. 声明函数内容
请将以下内容添加到主函数后。
int loading(char *text,int times,float sleeptime) { // 加载动画函数
if (text == NULL) {
return 1;
}
sleeptime = sleeptime * 1000000;
for (int i = 0; i < times; i++) {
clean();
printf("\r%s %s",text, strings[i % int_len]);
fflush(stdout);
usleep(sleeptime);
}
clean();
return 0;
}
int loading_text(char *text,int times,float sleeptime) {
if (text == NULL) {
return 1;
}
sleeptime = sleeptime * 1000000;
int TIME_plustime = 100 / times;
int TIME_nowtime = 0;
for (int i = 0; i < times; i++) {
clean();
printf("\r%s %i%%",text, TIME_nowtime);
fflush(stdout);
usleep(sleeptime);
TIME_nowtime += TIME_plustime;
}
clean();
return 0;
}
int textbox(char *name,char *text,float sleeptime) { // 对话框函数
if (name == NULL || text == NULL) {
return 1;
}
sleeptime = sleeptime * 1000000;
int string_len = strlen(text);
printf("\r%s | ",name);
fflush(stdout);
for(int n = 0; n < string_len; n++) {
printf("%c",text[n]);
fflush(stdout);
if (text[n] == ' ') {
usleep(sleeptime * 1.5);
} else {
usleep(sleeptime);
}
}
return 0;
}
void clean(void) { // 清空当前行终端函数
printf("\033[2K");
}4.在您的程序中调用动画函数
// 普通加载动画
loading("提示文本内容",动画时长,帧间隔时长);第一项传入的参数须为char*类型字符串。
第二项传入的参数须为int类型整数。
第三项传入的参数须为double类型浮点数。
// 百分比加载动画
loading_text("提示文本内容",动画时长,帧间隔时长);第一项传入的参数须为char*类型字符串。
第二项传入的参数须为int类型整数。
第三项传入的参数须为double类型浮点数。
// 对话框输出
textbox("提示文本内容", "文本内容", 帧间隔时长);第一项传入的参数须为char*类型字符串。
第二项传入的参数须为char*类型字符串。
第三项传入的参数须为double类型浮点数。
更新日志
v0.3 新特性
- 💬 新增百分比进度函数 - 支持显示百分比进度效果
v0.2 新特性
- 🎨 项目重命名 - 更改为"字符动画库 For C"
- 💬 新增对话框函数 - 支持逐字输出的对话框效果
- 🔒 增强安全性 - 添加空指针判断
- 🔄 优化动画逻辑 - 支持用户自定义动画帧
- 🧹 改进清屏 - 仅清空当前行,提升用户体验
v0.1 新建项目
- 新建项目
Comments NOTHING