前言

效果展示

BadApple-Win32

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

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#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

评论