前言


这里首先你需要准备一些文件,将一个Bad Apple的视频分别转换成txt和mp3格式(mp3用来作为背景音乐)
我将txt文件放到exe文件目录下的子目录files里了
转换方法可以用Adobe,这里不做详细介绍,你可以下载我已经准备好的文件,在文章末尾会给出连接

代码

#include <stdio.h>
#include <iostream>
#include <Windows.h>
#include <mmsystem.h> #pragma comment (lib,"Winmm.lib") //加载windows播放音乐的库 #define MAX_ROW 66
#define MAX_COL 150
#define MAX_FRAME 13148 char map[MAX_FRAME][MAX_ROW][MAX_COL+1]; void init(){
SetConsoleTitle("BadApple"); //控制台标题 system("mode con cols=151 lines=68"); 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++) {
//每次读取一个文件
int row = 0;
sprintf(fileName, "files/ASCII-badApple60fps%05d.txt", i); //生成一个文件名
fp = fopen(fileName, "r");
if (fp == NULL) {
exit(1);
} //当文件读完时结束循环
while (!feof(fp)) {
fgets(map[i][row],200,fp);
map[i][row][MAX_COL] = '\0'; //取消每行最后的回车符
row++;
}
fclose(fp);
}
} //播放动画函数
void play() { system("cls"); //清屏
for (int i = 0; i < MAX_FRAME; i++) {
for (int j = 0; j < MAX_ROW; j++) {
//如果用printf()的话由于之前我们取消了换行符,所以要在此处加上
puts(map[i][j]); //不断打印到每一行
}
Sleep(2); //休眠2毫秒 //把光标引到最前方
HANDLE houtput = GetStdHandle(STD_OUTPUT_HANDLE); //控制台 COORD loc; //引入结构体,并定义xy初始坐标
loc.X = 0;
loc.Y = 0;
SetConsoleCursorPosition(houtput, loc);
} } int main(void) {
init(); //初始化 //将文本文件加载到计算机内存
readData(); //开始播放
while (1) {
//播放背景音乐
mciSendString("play bg.mp3", 0, 0, 0);
play();
} return 0;
}

文件

百度网盘链接:https://pan.baidu.com/s/1i8UEQsw5UPoLX7S41Xk9Hw
提取码:8848

C/C++在Win32控制台播放Bad Apple的更多相关文章

  1. 【转】WIN32 控制台程序

    http://blog.csdn.net/houmin0036/article/details/7702236 win32控制台项目指在32位Windows命令提示符(即所谓的dos)环境下运行的应用 ...

  2. vc2010 win32 控制台应用程序中文乱码

    vc2010 win32 控制台应用程序中文乱码 在 vc2010 上用 win32 控制台程序写些测试代码调用 windows api ,处理错误信息时,发现用 wprintf 输出的错误信息出现了 ...

  3. win32控制台实现按任意键退出的功能

    win7之后的五win32 控制台出现了程序运行完之后就立即结束的问题,程序员根本无法看输出的结果.未来让控制台运行完之后能够等待程序员的操作.可以使用: system("PAUSE&quo ...

  4. C# Win32控制台应用程序忽略 Ctrl + C,阻止程序退出

    C# Win32控制台应用程序忽略 Ctrl + C,阻止程序退出,这里使用到了Windows API SetConsoleCtrlHandler函数 注意:在VS中调试执行时,在处理程序例程中设置断 ...

  5. Linux终端和win32控制台文本颜色输出

    在使用putty.secureCRT.XShell等终端仿真器连接linux系统时,ls.vim等工具的输出都含有各种颜色,这些颜色的输出大大地增强了文本的可读性. 通常我们可以使用echo命令加-e ...

  6. Visual Studio C++ Win32控制台应用程序,Win32项目,MFC的区别

    背景 Visual Studio C++ 创建新项目蹦出来如下选项: Win32控制台应用程序,Win32项目,MFC有什么区别? 正文: Win32控制台,没有界面,命令行执行生成的文件则直接在后台 ...

  7. win32应用程序和win32控制台应用程序的区别

          win32应用程序是有窗体的(当然也可以没有),有Windows消息循环机制的.而win32控制台应用程序只是在控制台下运行的程序,类似以前dos的程序. 后续答案: Win32 Appl ...

  8. Win32控制台程序和Win32应用程序

    刚接触Windows那一套,大多数概念都还没建立起来,整理了一下网上对“Win32控制台程序”的理解,谢谢各位网友了. win32控制台项目指在32位Windows命令提示符(即所谓的dos)环境下运 ...

  9. vs2008 新建win32控制台程序提示:脚本错误

    解决方案: 1.根据错误信息中的url,找到对应文件夹下的htm文件 2.使用notepad++打开default.htm文件,找到错误提示的434行,注释掉433和434行 然后保存文件,重新新建w ...

随机推荐

  1. 时序数据库之InfluxDB的基本操作

    1.进入Influxdb的客户端 [root@activity_sentinel ~]# influx 2.数据库的操作 显示所有的数据库名 > show databases name: dat ...

  2. idea导入gitee下载的项目文件

    前一段时间在学习javaWeb时想要把gitee中的下载的项目在本地环境中跑一遍,然后根据效果再自己做出来. 但是当导入到IDEA中,配置完tomcat后一直报404错误.404是学习javaweb阶 ...

  3. Spring Cache缓存框架

    一.序言 Spring Cache是Spring体系下标准化缓存框架.Spring Cache有如下优势: 缓存品种多 支持缓存品种多,常见缓存Redis.EhCache.Caffeine均支持.它们 ...

  4. 什么是Java序列化,如何实现Java序列化?或者请解释Serializable接口的作用?

    象序列化的目标是将对象保存到磁盘中,或允许在网络中直接传输对象,对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久保存在磁盘上,通过网络将这种二进制流传输到另 ...

  5. kafka follower如何与leader同步数据?

    Kafka的复制机制既不是完全的同步复制,也不是单纯的异步复制.完全同步复制要求All Alive Follower都复制完,这条消息才会被认为commit,这种复制方式极大的影响了吞吐率.而异步复制 ...

  6. Collection和 Collections的区别?

    Collection是集合类的上级接口,继承与他的接口主要有Set和List.Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索.排序.线程安全化等操作.

  7. java中的四种引用类型

    为什么需要引用: Java的内存回收不需要程序员负责,JVM会在必要时启动Java GC完成垃圾回收. Java以便我们控制对象的生存周期,提供给了我们四种引用方式,引用强度从强到弱分别为:强引用.软 ...

  8. Spring常用的注入方式有哪些?

    Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入方式主要有三种:构造方法注入,setter注入,基于注解的注入. 参考链接:Spring常用的三种注入方式

  9. Redis 回收进程如何工作的?

    一个客户端运行了新的命令,添加了新的数据.Redi 检查内存使用情况,如 果大于 maxmemory 的限制, 则根据设定好的策略进行回收.一个新的命令被执 行,等等.所以我们不断地穿越内存限制的边界 ...

  10. SpringCloud个人笔记-03-Config初体验

    sb-cloud-config 配置中心 <?xml version="1.0" encoding="UTF-8"?> <project xm ...