C++代码字符舞-极乐净土
在抖音上看到代码舞觉得很好看,上网一搜好多语言都有实现的,但是C++的比较少。参考其他实现方法,我用C++写了一个。先看结果。
运行后会播放动画和音乐。代码如下:
#include <stdio.h>
#include <iostream>
#include <windows.h>
#include <mmsystem.h>using namespace std;
#define MAX_ROW 100
#define MAX_COL 100
#define MAX_FRAME 1348//#pragma comment(lib, "winmm.lib") //这里不用加,这个程序是用Qt Creator编写的,在.pro文件中增加了LIBS += -lWinmm。如果其他编译器则需要这句static char buffer[MAX_COL*MAX_ROW]; //定义一个buffer存图片
void init()
{//console titleSetConsoleTitle("Code-Dance");// 分辨率:控制台窗口大小system("mode con cols=151 lines=50");//隐藏控制台的光标HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_CURSOR_INFO info = {1, 0};SetConsoleCursorInfo(hout, &info);
}
void readData()
{FILE *fp;char fileName[128];for (int i=0; i<MAX_FRAME; i++){sprintf(fileName,"F:/Programs/CodeDance/txtPath/ASCII-%d.txt", 5*(i+1)); //读取文件,这个是我本机的路径,里面存了很多文件,文件名的格式为ASCII-数字.txt这样的。fp = fopen(fileName, "r");if (fp == NULL){continue;}fseek(fp, 0, SEEK_END);long length = ftell(fp);rewind(fp);memset(buffer, 0, MAX_COL*MAX_ROW);fread(buffer, 1, static_cast<size_t>(length), fp);fclose(fp);printf("%s",buffer); //用cout<<buffer;输出也可以Sleep(167); //间隔时间,是根据总时长除以图片数算的为了音频与视频对齐HANDLE houtput = GetStdHandle(STD_OUTPUT_HANDLE);COORD loc;loc.X = 0;loc.Y = 0;SetConsoleCursorPosition(houtput, loc);}
}int main()
{init();mciSendString("play ./video.mp3", NULL, 0, 0); //play musicreadData();return 0;
}
代码中的video.mp3是音乐文件,为了保持一致,这个音乐文件和视频文件长度一样。
上面程序主要用来播放字符文件,播放一张清除一下屏幕,连续的播放产生字符动画的效果。于是有了这样的问题:
字符文件从哪来? --> 是从图片转换过来。我将批量的图片文件用ASCIIGenerator这个软件进行转换,并且可以指定图片大小。该软件上网可以搜到。
这些图片从哪里来? --> 是从视频中提取出来。详见Qt从视频中获取每一帧数据
有了这些准备工作后,就可以播放了。附加一句,这个是在windows下实现的。
C++代码字符舞-极乐净土相关推荐
- Python之抖音快手代码舞--字符舞
先上效果,视频敬上: 字符舞: 代码舞 源代码: video_2_code_video.py import argparse import os import cv2 import subproces ...
- python爬快手个人介绍_介绍Python的抖音快手字符舞
先上效果,视频敬上: 字符舞: 代码舞 源代码: video_2_code_video.pyimport argparseimport osimport cv2import subprocessfro ...
- python爬快手个人介绍,介绍Python的抖音快手字符舞
免费学习推荐:python视频教程 先上效果,视频敬上: 字符舞: 代码舞 源代码: video_2_code_video.pyimport argparseimport osimport cv2im ...
- 字节流代码 java_java代码字符字节流
package com.aini; import java.io.IOException; import java.io.InputStreamReader; //流类 import java.io. ...
- mysql 1100字符后没了_mysql的字符串函数
时常想一句sql完成某个需求,不想写脚本,总是想'咦,mysql中有没有类似php的这个函数',遂一次总结好,平常多看看,省的每次都临时去查 特别说明:在mysql中对于针对字符串位置的操作,总是从1 ...
- Golang 的字符编码与 regexp
前言 最近在使用 Golang 的 regexp 对网络流量做正则匹配时,发现有些情况无法正确进行匹配,找到资料发现 regexp 内部以 UTF-8 编码的方式来处理正则表达式,而网络流量是字节序列 ...
- kmp算法详解php,php中字符串匹配KMP算法实现例子
KMP算法是一个比较高级的算法了,加了改进了,下面我们来在php中实现KMP算法,希望例子对各位同学会带来帮助哦. kmp算法是一种改进的字符串匹配算法,由D.E.Knuth与V.R.Pratt和J. ...
- 企业组织机构代码验证JavaScript版和Java版 - 修正版V20090214
组织机构代码验证规则: 组织机构代码是每一个机关.社会团体.企事业单位在全国范围内唯一的.始终不变的法定代码标识. 最新使用的组织机构代码在1997年颁布实施,由8位数字(或大写拉丁字母)本体代码和1 ...
- 【代码规范】google开源c\c++项目代码规范
版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载;https://blog.csdn.net/csdn_baotai https://blog.csdn.net/csdn_baotai/a ...
- mysql截取栏目字符_mysql截取小数点后1位
copy别人的,仅是为了留着学习 mysql的left,right,substr,instr截取字符串,截取小数点float mysql的left,right,substr,instr截取字符串,截取 ...
最新文章
- 使用Silverlight2的WebClient下载远程图片
- 如何实现在H5里调起高德地图APP?(下)
- 换血吃药改基因,硅谷富豪们想用钱收买死神丨视频
- python学习面向对象_python学习之面向对象学习
- SQL Server中事务日志自动增长对性能的影响
- eclipse占用内存过大_Java性能调优学习(三)-jmap+mat分析内存溢出问题实战
- 开关语句、循环语句、goto
- CSS 加过渡效果transition
- nmos导通流向_技术参数详解,MOS管知识最全收录!
- 网络-网络编程模型步骤
- 《ANTLR 4权威指南》——第2章纵观全局
- 转错误	x	error LNK1104: 无法打开文件“E:\xxxx\Debug\xxxx.exe”
- 不会写Java面试简历?看这一篇就够了(项目经历,个人技能)
- Flink POJO类状态使用注意事项
- es6学习之Number类型
- 51单片机与STM32的区别(为何51单片机IO引脚的驱动能力弱)
- matlab之ma q 模型,matlab之ARMA(p,q)模型
- Windows Server 2003 漫游用户配置文件配置详解
- 【JavaScript 基础】-- 数组切割splice和slice
- C#静默打印 PDF
热门文章
- [转] 如何把书上的字弄到电脑
- 汉字Unicode 编码大全
- DirectShow播放视频流程
- 基于ExtendSim的六西格玛银行排队模型
- 浅析HiShop、Shopex、ECshop、V5shop四大网店系统
- c语言病毒分析(转)
- Objective-C 信息传递模型 [ ] 发送消息
- 深入浅出Word2Vec原理解析
- VRP基础,命令行基础,文件系统基础,系统管理(2017年12月13日 09:51:51)
- 用Retinaface_pytorch项目检测人脸+ Python 3 剪切人脸图片并保存