The English version is here: https://www.geekdt.com/376.html
简介
其实这只是一小段代码,并非完整程序,但是制作成了可以直接展示的样子,所以在使用过程中可能要根据需求进行大量的修改
程序,使用了C++ 11的新特性 thread多线程,所以在旧版的编译器中会出现thread部分报错,请大家升级编译器或者直接上VS最新版!!!
关于第一版
第一个版本是不带多线程的,但是左边的clock似乎不能等待每一次进度条跑一次才转一下哎,所以多进程让他一直转咯。
感觉第一版是没有意义的,所以直接放上第二版了。
开发环境
当然是最新的Visual Studio 2017啦,不上最新版怎么能Geek的起来呢?理论上任何支持C++ 11规范的编译器均可以正常使用,当然,这个程序调用了Windows.h的header文件,所以顾名思义要在Windows环境下跑咯。
效果展示
代码部分
#include <iostream> #include <Windows.h> #include <thread> using namespace std; void clock(int cache); void run_clock(int y); void run_line(int y); int load_num = 0; int x = 6; int main() { int local;//存储输出的位置信息(在第local行输出整个进度条) int i; cin >> local; thread clock(run_clock, local); clock.detach(); i = 0; while (i!=50)//构建一个preload条 { cout << "▂"; i++; } run_line(local); cout << endl << "Done!" << endl; system("pause"); return 0; } void gotoxy(int x, int y)//功能函数,跳转光标 详见https://www.geekdt.com/248.html { COORD pos; pos.X = x; pos.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos); } void run_line(int y)//绘制进度条 { while (load_num != 100) { gotoxy(x, y); cout << "█"; x += 2; load_num += 2; gotoxy(x, y); printf("<%d%%>", load_num);//输出进度 百分比 Sleep(500); } } void run_clock(int y)//绘制clock模型 { int i = 1; while (load_num!=100) { if (i > 4) { i = 1; } gotoxy(3, y); clock(i); i++; gotoxy(x+4, y); Sleep(200); } } void clock(int cache)//构建clock模型 { switch (cache) { case 1: { cout << "|"; break; } case 2: { cout << "/"; break; } case 3: { cout << "-"; break; } case 4: { cout << "\\"; break; } } }
代码下载
由于网页html标签的缘故,部分代码可能会出现各种未知错误,如遗漏,缺失,显示不正常等暂未发现的错误,希望大家帮助指正。使用代码建议下载cpp文件进行编辑,以防不必要的麻烦。
[download]https://files.geekdt.com/index.php?share/file&user=1&sid=7ujZUkbR[/download]