C/C++在Win32控制台播放Bad Apple
前言

这里首先你需要准备一些文件,将一个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的更多相关文章
- 【转】WIN32 控制台程序
http://blog.csdn.net/houmin0036/article/details/7702236 win32控制台项目指在32位Windows命令提示符(即所谓的dos)环境下运行的应用 ...
- vc2010 win32 控制台应用程序中文乱码
vc2010 win32 控制台应用程序中文乱码 在 vc2010 上用 win32 控制台程序写些测试代码调用 windows api ,处理错误信息时,发现用 wprintf 输出的错误信息出现了 ...
- win32控制台实现按任意键退出的功能
win7之后的五win32 控制台出现了程序运行完之后就立即结束的问题,程序员根本无法看输出的结果.未来让控制台运行完之后能够等待程序员的操作.可以使用: system("PAUSE&quo ...
- C# Win32控制台应用程序忽略 Ctrl + C,阻止程序退出
C# Win32控制台应用程序忽略 Ctrl + C,阻止程序退出,这里使用到了Windows API SetConsoleCtrlHandler函数 注意:在VS中调试执行时,在处理程序例程中设置断 ...
- Linux终端和win32控制台文本颜色输出
在使用putty.secureCRT.XShell等终端仿真器连接linux系统时,ls.vim等工具的输出都含有各种颜色,这些颜色的输出大大地增强了文本的可读性. 通常我们可以使用echo命令加-e ...
- Visual Studio C++ Win32控制台应用程序,Win32项目,MFC的区别
背景 Visual Studio C++ 创建新项目蹦出来如下选项: Win32控制台应用程序,Win32项目,MFC有什么区别? 正文: Win32控制台,没有界面,命令行执行生成的文件则直接在后台 ...
- win32应用程序和win32控制台应用程序的区别
win32应用程序是有窗体的(当然也可以没有),有Windows消息循环机制的.而win32控制台应用程序只是在控制台下运行的程序,类似以前dos的程序. 后续答案: Win32 Appl ...
- Win32控制台程序和Win32应用程序
刚接触Windows那一套,大多数概念都还没建立起来,整理了一下网上对“Win32控制台程序”的理解,谢谢各位网友了. win32控制台项目指在32位Windows命令提示符(即所谓的dos)环境下运 ...
- vs2008 新建win32控制台程序提示:脚本错误
解决方案: 1.根据错误信息中的url,找到对应文件夹下的htm文件 2.使用notepad++打开default.htm文件,找到错误提示的434行,注释掉433和434行 然后保存文件,重新新建w ...
随机推荐
- 导入导出笔记-easyExcel初探(表格导入和模板化导出)
前言 本文使用的EasyExcel Alibaba和EasyPoi Apache技术栈分析 EasyExcel Dependency EasyPoi Dependency 1.需求一:表格化需求导入导 ...
- Bellman-Ford算法 求有边数限制的最短路
这个算法也是紧承我们之前讲过的关于图论的内容,我们在前面分析图的时候说过了对于不同的图论问题,我们会有不同的求解方法,那么这里我们讲到Bellman-Ford算法是用于解决有边数限制的求解最短路问题. ...
- 服务器中一个进程kill不掉,如何处理?
问题描述: 我们在服务器中有时候kill一个进程,会碰到死活杀不死的情况,那么有可能这个进程成为了一个僵尸进程,zombie状态.这种情况是这个进程释放了资源,但是没有得到父进程的确认. 可以使用命令 ...
- k8s.gcr.io、gcr.io仓库的镜像下载
镜像下载.域名解析.时间同步请点击 阿里巴巴开源镜像站 获取这类镜像的方法一般有2种: 1.通过拉取国内镜像仓库的内容(操作简单直接拉取即可,缺点是镜像的版本更新可能较慢,可能无法获取最新的镜像) 2 ...
- FrameScan-GUI CMS漏洞扫描
工具简介 FrameScan-GUI是一款python3和Pyqt编写的具有图形化界面的cms漏洞检测框架,是FrameScan的加强版.支持多种检测方式,支持大多数CMS,可以自定义CMS类型及自行 ...
- python练习册 每天一个小程序 第0004题
1 #-*-coding:utf-8-*- 2 __author__ = 'Deen' 3 ''' 4 题目描述:任一个英文的纯文本文件,统计其中的单词出现的个数. 5 参考学习链接: 6 re ht ...
- luoguP5319 [BJOI2019]奥术神杖(分数规划,AC自动机DP)
luoguP5319 [BJOI2019]奥术神杖(分数规划,AC自动机DP) Luogu 题解时间 难点在于式子转化,设有c个满足的子串,即求最大的 $ ans = \sqrt[c]{\prod_{ ...
- Servlet的response乱码问题
一.response有两种输出流(编码:UTF-8): 1.字节流:response.getOutputStream().write(date.getBytes("UTF-8")) ...
- HTTP1.0和HTTP1.1和HTTP2.0的区别
1 HTTP1.0和HTTP1.1的区别1.1 长连接(Persistent Connection) HTTP1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求 ...
- Javascript 占位符替换
String.prototype.format=function(){ if(arguments.length===0){ return String(this); } let reg=/(\{\d\ ...