#pixel-art #gamedev #api #command-line-interface #cli

termi-graphics

一款用于 CLI 艺术的低级像素艺术开发工具

2 个版本

0.1.6 2019 年 8 月 29 日
0.1.5 2019 年 8 月 29 日

#676 in GUI

MIT/Apache

33KB
640

termi-graphics

它是做什么的?

termi-graphics 是一个 Rust crate(库),用于构建基于终端的图形和图形界面。

termi-graphics 提供了使用画布和屏幕进行低级图形设计的选项,并可以使用 Animation 结构连续运行它们。

termi-graphics 目前最适合(目前)与 Ubuntu 终端配色方案一起使用,但它仍然可能在某些 Windows 和 Mac 计算机上运行。

很快就会有其他 crate 专门设计用于在 CLI 之外的其他地方创建其他低级或高级图形界面。

如何安装它?

您可以使用 cargo

:~$ cargo install termi-graphics

或者您也可以克隆此存储库

:~$ git clone https://github.com/l-tools/termi-graphics termi-graphics
:~$ cd termi-graphics
:~$ cargo build

如何使用它?

首先导入 crate

extern crate termi_graphics;  
use termi_graphics::pixel_art; //this is the most basic useable part of the crate  

有两种方法

第一种是自行创建像素布局(在我们的情况下是二维向量),如下所示

fn main(){                                                             
	let mut shape1 = Vec::new();                                       
	//smily face                                         
	shape1.push(vec![2,2,0,2,2]);                                      
	shape1.push(vec![2,2,0,2,2]);                                      
	shape1.push(vec![0,0,0,0,0]);                                          
	shape1.push(vec![0,0,1,0,0]);                                          
	shape1.push(vec![8,0,0,0,8]);                                          
	shape1.push(vec![8,8,8,8,8]); 
	screen1.attach_pixels(&shape1,1,1).unwrap();
	//simply print it once:
	screen1.print_screen();
	//or present it by animation:
	let vecan = vec![screen1];
	use termi_graphics::animation::Animation;
	let anim = Animation::new(vecan,15,3);
}

这是一种相当繁琐的方法,因此还有第二种方法

fn main(){                                                             
	use termi_graphics::Shapes::{rectangle,line,sqaure,triangle};
	let shape2 =square(2,PixelColors::Blue).unwrap() ;                 
	let shape3 =line(5,PixelColors::White,false).unwrap();             
	let shape4 =square(1,PixelColors::Red).unwrap();                       
	let shape5 =rectangle(9,10,PixelColors::Magenta).unwrap();             
	let shape6 =triangle(9,PixelColors::Magenta).unwrap();                 
	let mut vecer = Vec::new();                                            
	vecer.push(vec![8,0,0,0,8]);                                           
	let mut canvas1 = Canvas::new(30,30,PixelColors::Black).unwrap();      
	let mut screen1 = Screen::new(35,35,PixelColors::Black).unwrap();   
	canvas1.attach(&shape5,8,8).unwrap();                              
	canvas1.attach(&shape2,10,10).unwrap();                                
	canvas1.attach(&shape2,13,10).unwrap();                                
	canvas1.attach(&shape4,12,13).unwrap();                                
	canvas1.attach(&vecer,10,14).unwrap();                                 
	canvas1.attach(&shape3,10,15).unwrap();                                
	canvas1.attach(&shape6,16,16).unwrap();   
	screen1.attach(&canvas1);
	//simply print it once:
	screen1.print_screen();
	//or present it by animation:
	let vecan = vec![screen1];
	use termi_graphics::animation::Animation;
	let anim = Animation::new(vecan,15,3);
}

我想这种方法看起来也很繁琐,但当你构建的不仅仅是笑脸、形状和画布时,它们比简单的像素向量更容易设计和遵循。

如果您想进一步了解 crate,可以查看 示例文件夹

更多内容即将推出 - 在这个 crate 和其他 crate 中!

无运行时依赖