4 个版本 (2 个破坏性更新)
0.3.1 | 2024 年 4 月 30 日 |
---|---|
0.3.0 | 2024 年 4 月 12 日 |
0.2.0 | 2024 年 3 月 22 日 |
0.1.0 | 2024 年 3 月 15 日 |
#897 在 命令行工具
每月 313 次下载
68KB
1.5K SLoC
Firework-rs
Firework-rs 是一个跨平台的终端 ASCII 艺术烟花模拟器。运行二进制文件或使用库来创建自己的烟花,并只需在终端中欣赏美丽的烟花即可!
特性
- 彩色 ASCII 艺术烟花
- 平滑动画
- 可自定义的烟花
- 简单的粒子系统,让您制作烟花,而不仅仅是烟花
尝试演示
如果您尚未安装 rust,请安装它。
然后,只需运行以下命令
git clone https://github.com/Wayoung7/firework-rs.git
cd firework-rs
cargo run --release -- -d 0
或在您的计算机上全局安装
cargo install firework-rs
firework -d 0
现在二进制文件有 5 个演示,从 0 到 4。
退出
要退出程序,只需按 ESC
命令行参数
USAGE:
firework [OPTIONS] --demo <DEMO-NUMBER>
Options:
-d, --demo <DEMO-NUMBER>
Select which demo to run. (optional)
If this is not specified, automatically run the infinite random firework demo
-l, --looping
Set whether the fireworks show will loop infinitely
-g, --gradient
Set whether the fireworks will have color gradient
If this is enabled, it is recommanded that your terminal is non-transparent and has black bg color to get better visual effects
--fps <FRAME-RATE>
Set frame per second
If this is not specified, the default fps is 12
--cjk
Set whether to enable cjk character
If enabled, each character will take up two Latin character space
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
示例命令
如果您已安装二进制文件
启用渐变的无限烟花秀
firework -g
启用循环和渐变的演示 1
firework -l -g -d 1
如果您尚未安装二进制文件
首先 cd
到项目根目录,然后运行
cargo run --release -- -g
cargo run --release -- -l -g -d 1
使用库
此包不仅有一个演示二进制文件供您享受终端烟花,还提供了一个简单的库 firework_rs 来让您玩自己的烟花。
要将此 crate 添加到您的 rust 项目中,请在项目根目录中运行
cargo add firework_rs
要制作烟花,您可以简单地使用以下结构
fn main() -> Result<()> {
// Terminal stuff, no need to change
let mut stdout = stdout();
let (_width, _height) = terminal::size()?;
let mut is_running = true;
terminal::enable_raw_mode()?;
execute!(stdout, terminal::EnterAlternateScreen, cursor::Hide)?;
let mut time = SystemTime::now();
let mut term = Terminal::default();
// Init and add fireworks
let mut fm = FireworkManager::default().add_firework(gen());
// Main loop, no need to change
while is_running {
if event::poll(Duration::ZERO)? {
match event::read()? {
event::Event::Key(e) => {
if e.code == KeyCode::Esc {
is_running = false;
}
}
event::Event::Resize(_, _) => {
fm.reset();
term.reinit();
}
_ => {}
};
}
let delta_time = SystemTime::now().duration_since(time).unwrap();
fm.update(time, delta_time);
time = SystemTime::now();
term.render(&fm);
term.print(&mut stdout);
if delta_time < Duration::from_secs_f32(0.05) {
let rem = Duration::from_secs_f32(0.05) - delta_time;
sleep(rem);
}
}
execute!(stdout, cursor::Show, terminal::LeaveAlternateScreen)?;
terminal::disable_raw_mode()?;
Ok(())
}
// Your actuall firework design goes here, see docs for more information
fn gen() -> Firework {
let colors = vec![
...
];
let particles = ...
let config = ...
Firework {
...
}
}
示例
此包在 examples/
下提供了一些示例,展示了库的一些功能,并为您提供了一些灵感。
要运行示例,请在项目目录中 cd
到此项目目录,并简单地输入
cargo run --example <EXAMPLE-NAME>
示例名称 包含
喷泉
漩涡
心形
兼容性
操作系统
此程序可在 Windows / Mac OS / Linux 上运行。
终端
此 crate 使用 crossterm 作为后端。crossterm 支持的终端也将由此 crate 支持。
这个库支持所有UNIX终端和Windows 7及以下版本的终端。然而,并非所有终端都经过测试,并且视觉效果良好。
建议使用具有GPU渲染加速的终端,例如 Kitty 和 Alacritty。确保您的终端没有额外的颜色主题或调整。如果您在程序中启用渐变,请确保终端窗口是 非透明 并且具有 黑色背景。
帮助
如果您发现任何错误,请随时打开问题或与我联系。
依赖项
~6–11MB
~164K SLoC