前言

效果展示

BadApple-Win32

提示

这里首先你需要准备一些文件,将一个Bad Apple的视频分别转换成txtmp3格式(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

最后修改:2022 年 04 月 01 日
如果觉得我的文章对你有用,请随意赞赏