声明:
本文以及代码纯属原创,转载或翻译请标明本文出处以及作者。
废话不多说,开始
注:如果只想要代码可以去文末看
效果:
下面是进度条走完以后
原理简单,就是通过几个for循环,不断刷新屏幕,最终走完进度条
为了证明这串代码可以直接复制粘贴使用,下面是代码图片(文本型代码最后有):
一片绿,舒服吧?!
代码分解
定义(声明一下讲解中的一些用语的意思)
大循环x:
指最外面的循环,例如下图,我们就称下面有:大循环i 与 大循环x
int main(){
for(int i = 1; i <= 50; i++){
for(int j = 1; j <= 50; j++){
}
for(int m = 1; m <= 50; m++){
for(int n = 1; n <= 50; n++){
}
}
}//此处是“for(int i = 1; i <= 50; i++)”的大括号
for(int x = 1; x <= 50; x++){
for(int y = 1; y <= 50; y++){
}
for(int z = 1; z <= 50; z++){
for(int a = 1; a <= 50; a++){
}
}
}//此处是“for(int x = 1; x <= 50; x++)”的大括号
}//此处是“main”的大括号
小循环m:
指大循环里的循环,例如下图,我们就称下面有:小循环j 、小循环m 与小循环n
int main(){
for(int i = 1; i <= 50; i++){
for(int j = 1; j <= 50; j++){
}//此处是“for(int j = 1; j <= 50; j++)”的大括号
for(int m = 1; m <= 50; m++){
for(int n = 1; n <= 50; n++){
}//此处是“for(int n = 1; n <= 50; n++)”的大括号
}//此处是“for(int m = 1; m <= 50; m++)”的大括号
}//此处是“main”的大括号
导入文件,定义变量等初始化操作
#include<iostream>
#include<cstdio>
#include<stdio.h>
#include<ctime>
#include<windows.h>
#include<string>
#include<cstdio>
#include<conio.h>
#include<string>
//其实我也不知道上面的哪些有用哪些没用,因为这个进度条是在一个程序里写的,这个只是功能之一
using namespace std;
//变量定义:
int time;//指每2%需要的时间 单位为毫秒 1000毫秒=1秒
int j;//每一次清屏后打印i个“=” 其中i是进度条总程序循环的次数
//===============此处省略int main()===============
system("color 1f");//设置颜色,可以自己改
变量用处讲解:
time:
指每2%需要的时间 单位为毫秒 1000毫秒=1秒
j:
每一次清屏后打印i个“=” 其中i是进度条总程序循环的次数
system(“color 1f”):
设置颜色,可以自己改,遵循cmd中的color命令用法,如下图:
第一个对应于背景(就是源程序中的蓝色,上面的图片中的黑色),第二个对应于前景(源程序以及上面的图片中的白色)。每个数字可以为以下任何值:
0 = 黑色 8 = 灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 A = 淡绿色
3 = 浅绿色 B = 淡浅绿色
4 = 红色 C = 淡红色
5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色
7 = 白色 F = 亮白色
例如:color 9a
就是像这样的:
主程序:
for (int i = 1; i <= 50; i++) {
system("cls");//持续刷新(清空屏幕)
//因为每一次都会清空屏幕,才会有下面的内容
for (j = 1; j <= i; j++) {
printf("=");
}
for (int m = 1; m <= 50 - j; m++) {//打印空格
printf(" ");
}
for (j = 1; j <= i; j++)
for (j = 1; j <= i; j++) {
printf(“=”);
}
大循环i每循环一次,就打印i个“=”
(有这个命令是因为前面的system(“cls”);会清空屏幕)
如果缺失小循环j,你将只能看到<5个的等于号
这是为了后面打印“|”做好准备
for (int m = 1; m <= 50 - j; m++)
for (int m = 1; m <= 50 - j; m++) {//打印空格
printf(" ");
}
因为大循环一共循环50次,所以大循环i每循环一次,就打印50-j个“=”
(有这个命令也是因为前面的system(“cls”);会清空屏幕)
辅助程序:
cout << "|" << 2 * i << "%";//输出界面让用户知道进度条走到哪里结束以及显示百分比
Sleep(time);//延时,防止程序一下子运行完
cout << “|” << 2 * i << “%”;
前半部分 cout << "|"在前面的小循环m打印50-j个空格后输出一个|,提示用户进度条走到哪里会结束,后半部分 << 2 * i << “%”;其中的“2i”是因为每走2%才多打印一个“=”,i又表示大循环的循环次数(也就是等于号的个数)所以乘2以后正好可以是在2i=100时结束,后半部分“%”没啥好说的,就是为了好看,毕竟程序可能不止给你自己用,你能看懂,别人可能看不懂。
源代码:
#include<iostream>
#include<cstdio>
#include<stdio.h>
#include<ctime>
#include<windows.h>
#include<string>
#include<cstdio>
#include<conio.h>
#include<string>
using namespace std;
//变量定义:
int time;//指每2%需要的时间
int j;
int main()
{
system("color 1f");//设置颜色,可以自己改
for (int i = 1; i <= 50; i++) {
system("cls");//持续刷新
for (j = 1; j <= i; j++) {
printf("=");
}
for (int m = 1; m <= 50 - j; m++) {//打印空格
printf(" ");
}
cout << "|" << 2 * i << "%";//输出界面让用户知道进度条走到哪里结束以及显示百分比
Sleep(time);
}