在抖音上看到代码舞觉得很好看,上网一搜好多语言都有实现的,但是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++代码字符舞-极乐净土相关推荐

  1. Python之抖音快手代码舞--字符舞

    先上效果,视频敬上: 字符舞: 代码舞 源代码: video_2_code_video.py import argparse import os import cv2 import subproces ...

  2. python爬快手个人介绍_介绍Python的抖音快手字符舞

    先上效果,视频敬上: 字符舞: 代码舞 源代码: video_2_code_video.pyimport argparseimport osimport cv2import subprocessfro ...

  3. python爬快手个人介绍,介绍Python的抖音快手字符舞

    免费学习推荐:python视频教程 先上效果,视频敬上: 字符舞: 代码舞 源代码: video_2_code_video.pyimport argparseimport osimport cv2im ...

  4. 字节流代码 java_java代码字符字节流

    package com.aini; import java.io.IOException; import java.io.InputStreamReader; //流类 import java.io. ...

  5. mysql 1100字符后没了_mysql的字符串函数

    时常想一句sql完成某个需求,不想写脚本,总是想'咦,mysql中有没有类似php的这个函数',遂一次总结好,平常多看看,省的每次都临时去查 特别说明:在mysql中对于针对字符串位置的操作,总是从1 ...

  6. Golang 的字符编码与 regexp

    前言 最近在使用 Golang 的 regexp 对网络流量做正则匹配时,发现有些情况无法正确进行匹配,找到资料发现 regexp 内部以 UTF-8 编码的方式来处理正则表达式,而网络流量是字节序列 ...

  7. kmp算法详解php,php中字符串匹配KMP算法实现例子

    KMP算法是一个比较高级的算法了,加了改进了,下面我们来在php中实现KMP算法,希望例子对各位同学会带来帮助哦. kmp算法是一种改进的字符串匹配算法,由D.E.Knuth与V.R.Pratt和J. ...

  8. 企业组织机构代码验证JavaScript版和Java版 - 修正版V20090214

    组织机构代码验证规则: 组织机构代码是每一个机关.社会团体.企事业单位在全国范围内唯一的.始终不变的法定代码标识. 最新使用的组织机构代码在1997年颁布实施,由8位数字(或大写拉丁字母)本体代码和1 ...

  9. 【代码规范】google开源c\c++项目代码规范

    版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载;https://blog.csdn.net/csdn_baotai https://blog.csdn.net/csdn_baotai/a ...

  10. mysql截取栏目字符_mysql截取小数点后1位

    copy别人的,仅是为了留着学习 mysql的left,right,substr,instr截取字符串,截取小数点float mysql的left,right,substr,instr截取字符串,截取 ...

最新文章

  1. 使用Silverlight2的WebClient下载远程图片
  2. 如何实现在H5里调起高德地图APP?(下)
  3. 换血吃药改基因,硅谷富豪们想用钱收买死神丨视频
  4. python学习面向对象_python学习之面向对象学习
  5. SQL Server中事务日志自动增长对性能的影响
  6. eclipse占用内存过大_Java性能调优学习(三)-jmap+mat分析内存溢出问题实战
  7. 开关语句、循环语句、goto
  8. CSS 加过渡效果transition
  9. nmos导通流向_技术参数详解,MOS管知识最全收录!
  10. 网络-网络编程模型步骤
  11. 《ANTLR 4权威指南》——第2章纵观全局
  12. 转错误 x error LNK1104: 无法打开文件“E:\xxxx\Debug\xxxx.exe”
  13. 不会写Java面试简历?看这一篇就够了(项目经历,个人技能)
  14. Flink POJO类状态使用注意事项
  15. es6学习之Number类型
  16. 51单片机与STM32的区别(为何51单片机IO引脚的驱动能力弱)
  17. matlab之ma q 模型,matlab之ARMA(p,q)模型
  18. Windows Server 2003 漫游用户配置文件配置详解
  19. 【JavaScript 基础】-- 数组切割splice和slice
  20. C#静默打印 PDF

热门文章

  1. [转] 如何把书上的字弄到电脑
  2. 汉字Unicode 编码大全
  3. DirectShow播放视频流程
  4. 基于ExtendSim的六西格玛银行排队模型
  5. 浅析HiShop、Shopex、ECshop、V5shop四大网店系统
  6. c语言病毒分析(转)
  7. Objective-C 信息传递模型 [ ] 发送消息
  8. 深入浅出Word2Vec原理解析
  9. VRP基础,命令行基础,文件系统基础,系统管理(2017年12月13日 09:51:51)
  10. 用Retinaface_pytorch项目检测人脸+ Python 3 剪切人脸图片并保存