前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(烂活)用cmd窗口输出图画

(烂活)用cmd窗口输出图画

作者头像
用户7267083
发布2022-12-08 13:53:36
7670
发布2022-12-08 13:53:36
举报
文章被收录于专栏:sukuna的博客

(烂活)用cmd窗口输出图画

于2020年10月11日2020年10月11日由Sukuna发布

这个活儿非常简单,大家都可以尝试一下

第一步:用转换格式的方法把视频换成bmp位图的模式

第二步:用前人的成果(ASC工具)将图片用一种特殊的方式转换成.txt的文本文件

第三步:快速清屏输出:

Code:

代码语言:javascript
复制
#include<string.h>
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include <mmsystem.h>
#pragma comment(lib, "WINMM.LIB")
#include <iostream>
using namespace std;

int main()
{
	void recursur();
//函数声明
	int i = 0, caf = 33;
	char p = 0;
	FILE *fp;
	clock_t stime = 0, ftime = 0;
	char buf[1921] = {}, seat[] = "output\\test(0).txt", ai[10];
//buf是输出的字符串,seat是打开的文件名
	printf("-----test art player-----\nPress Enter to play.\nSource:av706from bilibili\n");
	getchar();
	system("cls");
	PlaySound("test.wav", NULL, SND_FILENAME | SND_ASYNC);
//输入声音
	stime = clock();
	while (i <= 6568)// 
	{
//6568是输出的总帧数,视情况而定
		if (i % 30 == 0)
		{
			caf = 43;
		}
		else
		{
			caf = 33;
		}
//设定刷新时间
		strcpy(seat, "output\\test(");
		sprintf(ai, "%d", i);
		strcat(seat, ai);
		strcat(seat, ").txt");
//把seat设定成要打开的文件的形式
		ftime = clock();
		if ((ftime - stime) >= caf)
		{
//简单而言,就是该程序从启动到函数调用占用CPU的时间。这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)
//如果系统运行的时间还没到下一次运行时要清屏的时间,那if不进入,也就不会清屏,继续while循环
			i++;
//播放下一帧
			fp = fopen(seat, "r");
			fread(buf, sizeof(buf), 1, fp);
			buf[1920] = '\0';
			fclose(fp);
			fprintf(stdout, "%s", buf);
			fprintf(stdout, "Frame:%d", i);
			stime += caf;
//加一下当前循环的时候运行的时间
			recursur();
		}
	}
	system("cls");
	printf("----- art player-----\nThanks for watching!\nMade by Sukuna.\n\n");
	printf("Press Enter to Exit.\n");
	getchar();
	return 0;
}
void recursur()
{
	HANDLE hout;
	COORD coord;
	coord.X = 0;
	coord.Y = 0;
	hout = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleCursorPosition(hout, coord);
}

说一下recursur函数把

HANDLE 是一种句柄变量,类似于void*这种类型,COORD是cmd窗口光标类型,把光标设置成(0,0) 接着hout赋值为SED_OUTPUT_HANDLE 最后一个函数就把光标的位置重新设置一下,光标设置为0

HANDLE GetStdHandle( DWORD nStdHandle );GetStdHandle()返回标准的输入、输出或错误的设备的句柄,也就是获得输入、输出/错误的屏幕缓冲区的句柄。 STD_OUTPUT_HANDLE表示标准输出的句柄

SetConsoleCursorPosition是一个window api;作用是设置控制台(cmd)光标位置

这个函数是一个模版,记得就行

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年10月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (烂活)用cmd窗口输出图画
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档