探索篇 | C简单实现『字符动画』

导语:

本篇博客将带着大家一起动手, 做一部独一无二的『字符动画』


字符动画

 

目标实现:

1.通过将现有动画MP4文件通过pr或AoaoPhoto Video to Picture Converter 转化为jpg或其他类型的图片文件

2.再将刚得到的图片文件通过Ascgen 2转化成txt文件

3.再将txt文件中的内容通过代码(.exe文件)读取打印显示

4.然后, 再通过调节显示速度(等同于“帧”), 使txt文件中的字符集按顺序显示

 

用到的软件:

AoaoPhoto Video to Picture Converter        ~~~~~  下载链接

Ascgen 2      ~~~~  下载连接

另外, 编译器使用的是:VS2013

 

接下来,先来看一下源码:

#include <stdio.h>					//此文件中定义了C语言的一些重要函数
#include <string.h>					//此文件中定义了C_字符函数
#include <stdlib.h>					//此文件中定义了编译器中的一些特殊函数
#include <Windows.h>    				//此文件中定义了系统窗口操作命令
#include <assert.h>					//断言

void gotoxy(int x, int y)
{
	COORD pos; pos.X = x - 1; pos.Y = y - 1;			//COORD  为 Windows.h 中定义的一个结构体
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}

int main()
{
	system("color f0");				
	long i;								
	char FileName[100];					
	char hi[254000];					
	FILE *in;							

	system("C:\\Users\\ASUS\\Desktop\\字符动画.mp4");	//打开视频或音频文件,
	Sleep(3000);						

	//放幻灯片,Sleep()函数调节播放速度
	for (i = 1; i <= 999; i++)	//i 的范围转换为(.txt)文件的个数
	{
		sprintf(FileName,
			"C:\\Users\\ASUS\\Desktop\\字符动画\\txtpicture\\(%ld).txt", i);

		in = fopen(FileName, "r");
		assert(in != NULL);		
		fread(hi, 1, 254000, in);//改 ,这是你一个TXT文件里的字符串. 
		printf("%s\n%d", hi, i);
		gotoxy(1, 1);			
		Sleep(26);				//等待27毫秒执行
		fclose(in);
	}
}

上面的代码可以理解吗?不懂的话也没关系, 下面是加了大部分注释的代码:

/**********************************************
*		字符动画  base 1.0.1
***********************************************/


/***************** 头文件 ***************************/

#include <stdio.h>						//此文件中定义了C语言的一些重要函数
#include <string.h>						//此文件中定义了C_字符函数
#include <stdlib.h>						//此文件中定义了编译器中的一些特殊函数
#include <Windows.h>					//此文件中定义了系统窗口操作命令
#include <assert.h>						//断言

/****************************************************
函数名称:		gotoxy
函数参数:		int x, int y
返回类型:		void (NULL)
函数功能:		将光标位置移动到坐标x,y
****************************************************/
void gotoxy(int x, int y)
{
	COORD pos; pos.X = x - 1; pos.Y = y - 1;			//COORD  为 Windows.h 中定义的一个结构体
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}

/***************************************************
函数名称:		main
函数功能:		程序入口
***************************************************/
int main()
{
	system("color f0");					//改变系统控制台前景色(黑色)、背景色(亮白色)
	long i;								//创建变量 i,用于存储(.txt)文件个数
	char FileName[100];					//创建数组 FileName[],用于存储文件名称,文件名称最大不超过100个符号
	char hi[254000];					//这里是字符数组,用于存储从文件读取出的字符串
	FILE *in;							//定义一个FILE类型的结构体指针 in 

	system("C:\\Users\\ASUS\\Desktop\\字符动画.mp4");	//打开视频或音频文件,
	Sleep(3000);						//窗口等待3秒后输出,可视需求更改时间,单位毫秒

	//循环将.txt文件中的符号打印在控制窗口中,打印完接着打印下一个.txt文件
	//放幻灯片,Sleep()函数调节播放速度
	for (i = 1; i <= 999; i++)//i 的范围转换为(.txt)文件的个数
	{
		sprintf(FileName,
			"C:\\Users\\ASUS\\Desktop\\字符动画\\txtpicture\\(%ld).txt", i);

		in = fopen(FileName, "r");
		assert(in != NULL);		//断言结构体指针 in 不为空

		fread(hi, 1, 254000, in);//改 ,这是你一个TXT文件里的字符串. 

		printf("%s\n%d", hi, i);
		gotoxy(1, 1);			//每次打印完,将光标移动到最前面,使下次打印依然在开头开始打印
		Sleep(26);//等待27毫秒执行
		fclose(in);
	}
}

理解有些吃力?没关系, 在评论区给我留言吧!

 


操作步骤

 

详细介绍一下制作字符动画所需的具体操作, 感兴趣的小伙伴可以跟着步骤尝试做一下哦!

第一步:准备一个“.mp4”文件来做素材, 我们最终做出的成品就是这个视频文件的“字符版”

你选择的视频可能不叫做movie, 还可能不是.mp4的, 还可以做吗?小编可以直接告诉你, 没问题!都可以!只要是视频文件就行.

 

第二步:把上面的代码放在我们计算机的编译器中, 准备稍后更改里面的一些参数. 这里, 我默认大家对计算机相关知识已经有了一定的知识. 如果不是, 也没有关系, 在评论区给我留言或者私聊我寻文件链接

 

 

第三步:将准备好的动画,通过使用AoaoPhoto Video to Picture Converter或其他工具软件,转换为图片;

图片最下面的 Output Folder 记住位置, 生成的图片全在这里了

 

第四步:再将图片通过Ascgen 2转换为字符组成的TXT文本

进入下面的窗口 

 转换过程很耗时间, 可以先去倒杯茶, 一边喝茶慢慢等. 最终它将把图片文件转换成.txt文件存放在它的 Output Directory 中

 

第五步:将所有的文本文件重命名——(0)、(1)……(%%), 括号为英文输入的括号, 第一个序号为零, 下一个为1,……一直到最后一个文本文件, 中间不允许缺少数序,

PS: 快捷重命名的办法:Ctrl + A 选中所有的.txt文件, 鼠标指到第一个文件处, 鼠标右击, 选择重命名, 直接重命名为(0).txt即可, 然后点击确定, 所有的文件就可以自动按次序重命名了

第六步:到代码中(没有编译器软件,可以将.c文件用记事本打开)

更改以下代码行中的内容:

 

注:将动画所需的音频文件或视频文件也可以放入文件夹(文件)中, 将其重命名”即可

注意地址的更改:

上面的地址复制过去,然后把地址中所有的单斜杠 ‘\’ 改为双斜杠 ‘\\’, 例如上面的地址改完就是“D:\\1.My_Windows\\武器大师”, 你的地址肯定和我不一样, 照同样的方法改就好

 

最后,上面的步骤全部完成后,执行代码即可

操作步骤较为复杂, 但熟能生巧, 多试几遍, 总能成功的, 小编前(n-1)次的尝试也都是以失败告终的, 遇到问题解决问题才是进步的捷径


常见问题:

  • .exe文件点开后弹窗显示出现错误:

不要怕,这个文件并非广告病毒文件,弹窗是由于操作出现了问题,不会损坏电脑。我们可以检查操作步骤是否出现问题,如若没有,将弹窗文字复制到百度搜索相关解决方案

  • 动画播放效果不佳:

两种情况,一种是播放画面不完全,可以鼠标右击窗口,点击属性,更改字体大小,字体格式,

  • 其他问题

可以直接在评论区留言~~~

 


◆ 回到开头 @ 目录:

操作步骤

◆ 其他博客 @ https://blog.csdn.net/weixin_42194161

◆ 相关博客

探索篇 | C实现猜数字游戏

学习篇 | 浮点数的表示规则

 

感谢阅读本篇博客,如果有不错的建议或意见,欢迎在评论区留言,喜欢的话,麻烦点个赞和关注哦~~~


 

  • 64
    点赞
  • 219
    收藏
    觉得还不错? 一键收藏
  • 19
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值