在DOS命令行窗口中显示出用各种字符拼凑出来的各种图案的实现方法,如本人头像
2017-04-07 13:39
871 查看
注:文中例子是本人刚学C++编程语言的时候制作的,实现方法很简单,主要使用for循环语句,无需什么复杂烧脑的算法。
由于经常看到各种符号拼成的图案,感觉很有意思,所以自己也弄了个,纯属好玩。
(作品---->原图)
思 路:
>>实现这个图案的关键之处在于构造图案中的各个符号的定位
第一步:首先需要注意一下,在DOS命令行窗口中,默认情况下,每行之间的字符间距大概是每一行行内字符间间距的2倍(视觉上)。
如果你的图案是一个正方形,设图案每一行有X个字符(包含空格),则行数为X/2行。
第二步:按照这个视觉比例,用word文档创建如下内容(如下图,本文中每一行都是一个个星号组成的),并打印出来。
然后按照设计的图案的每行中的字符个数,在打印出来的纸中用铅笔画出一个边框(范围),然后可以在边框范围内尽情的连线,
最后拼成图案。(这一步解决图案中符号定位的问题,属于笨办法,但是十分有效,而且很直观,本例选择的行字符数为40。)
第三步:按行计算边框范围内连起来的线经过的点(每个点到该行行首的距离),经过则用自定义的符号显示,没有经过的点用空格显示。
可以在上图中标上刻度,方便计算每个符号的位置。
第四步:为了方便在命令行窗口中左右移动图案,给每一行行首都增加了一个int型变量,并根据该变量的值在每行行首添加空格,
使得图案的左边框离窗口的左边界之间的距离可以随意改变。该步骤可以省略。
第五步:本例实现代码如下(出现图案雏形后在根据视觉上的差异对部分字符位置进行微调)
由于经常看到各种符号拼成的图案,感觉很有意思,所以自己也弄了个,纯属好玩。
(作品---->原图)
思 路:
>>实现这个图案的关键之处在于构造图案中的各个符号的定位
第一步:首先需要注意一下,在DOS命令行窗口中,默认情况下,每行之间的字符间距大概是每一行行内字符间间距的2倍(视觉上)。
如果你的图案是一个正方形,设图案每一行有X个字符(包含空格),则行数为X/2行。
第二步:按照这个视觉比例,用word文档创建如下内容(如下图,本文中每一行都是一个个星号组成的),并打印出来。
然后按照设计的图案的每行中的字符个数,在打印出来的纸中用铅笔画出一个边框(范围),然后可以在边框范围内尽情的连线,
最后拼成图案。(这一步解决图案中符号定位的问题,属于笨办法,但是十分有效,而且很直观,本例选择的行字符数为40。)
第三步:按行计算边框范围内连起来的线经过的点(每个点到该行行首的距离),经过则用自定义的符号显示,没有经过的点用空格显示。
可以在上图中标上刻度,方便计算每个符号的位置。
第四步:为了方便在命令行窗口中左右移动图案,给每一行行首都增加了一个int型变量,并根据该变量的值在每行行首添加空格,
使得图案的左边框离窗口的左边界之间的距离可以随意改变。该步骤可以省略。
第五步:本例实现代码如下(出现图案雏形后在根据视觉上的差异对部分字符位置进行微调)
#include<iostream> using namespace std; int main(){ int a; cout<<"please input A:"; cin>>a; //图案左边框离窗口左边界的距离值,可替换成任意常量,也可以忽略。 for(int x=0;x<30;x++){ for(int y=0;y<60+a;y++){ if(x==0||x==29){if(y<a)cout<<" ";else cout<<"*";} else if(x==1){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else cout<<" ";} else if(x==2){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+9||y==a+50)cout<<"*"; else if(y==a+22||y==a+24||y==a+26||y==a+28||y==a+30||y==a+32||y==a+34|| y==a+36||y==a+38)cout<<"*"; else cout<<" ";} else if(x==3){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==8+a||y==10+a)cout<<"*"; else if(y==12+a||y==18+a||y==a+42||y==a+47||y==a+49||y==a+51)cout<<"*"; else cout<<" ";} else if(x==4){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+8||y==a+11||y==a+15||y==a+45 ||y==a+48||y==a+51)cout<<"*";else cout<<" ";} else if(x==5){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+8||y==a+13||y==a+47||y==a+51) cout<<"*";else cout<<" ";} else if(x==6){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+8||y==a+51) cout<<"*";else cout<<" ";} else if(x==7){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+6 ||y==a+53)cout<<"*";else cout<<" ";} else if(x==8){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+5 ||y==a+54)cout<<"*";else cout<<" ";} else if(x==9){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+4 ||y==a+55)cout<<"*";else cout<<" ";} else if(x==10){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+3 ||y==a+56)cout<<"*"; else if(y>=a+9&&y!=a+10&&y!=a+12&&y!=a+14&&y!=a+16&&y!=a+18&&y!=a+20&&y!=a+22&&y!=a+24&&y!=a+26&&y<=a+27)cout<<"*"; else if(y>=a+32&&y!=a+33&&y!=a+35&&y!=a+37&&y!=a+39&&y!=a+41&&y!=a+43&&y!=a+45&&y!=a+47&&y!=a+49&&y<=a+50)cout<<"*";else cout<<" ";} else if(x==11){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+2 ||y==a+57)cout<<"*";else if(y==a+10||y==a+49||y==a+26||y==a+33) cout<<"*";else if(y>=a+14&&y<=a+17)cout<<"*";else if(y>=a+42&& y<=a+45)cout<<"*";else cout<<" ";} else if(x==12){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+2 ||y==a+57)cout<<"*";else if(y==a+12||y==a+24||y==a+35||y==a+47) cout<<"*";else cout<<" ";} else if(x==13){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+2 ||y==a+57)cout<<"*";else if(y>=a+14&&y!=a+15&&y!=a+17&&y!=a+19&&y<=a+20)cout<<"*";else if (y>=a+39&&y!=a+40&&y!=a+42&&y!=a+44&&y<=a+45)cout<<"*";else cout<<" ";} else if(x==14){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+2 ||y==a+57)cout<<"*";else cout<<" ";} else if(x==15){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+2 ||y==a+57)cout<<"*";else if(y==a+8||y==50+a) cout<<"*";else cout<<" ";} else if(x==16){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+2 ||y==a+57)cout<<"*";else if(y==a+8||y==50+a) cout<<"*";else cout<<" ";} else if(x==17){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+2 ||y==a+57)cout<<"*";else if(y==a+8||y==50+a) cout<<"*";else cout<<" ";} else if(x==18){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+2 ||y==a+57)cout<<"*";else if(y==a+9||y==49+a) cout<<"*";else cout<<" ";} else if(x==19){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+2 ||y==a+57)cout<<"*";else if(y==a+10||y==48+a) cout<<"*";else cout<<" ";} else if(x==20){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+3 ||y==a+56)cout<<"*";else if(y==a+11||y==47+a) cout<<"*";else cout<<" ";} else if(x==21){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+4 ||y==a+55)cout<<"*";else if(y==a+13||y==45+a) cout<<"*";else cout<<" ";} else if(x==22){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+5 ||y==a+54)cout<<"*";else if(y==a+15||y==43+a) cout<<"*";else cout<<" ";} else if(x==23){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+7 ||y==a+52)cout<<"*";else if(y==a+17||y==41+a) cout<<"*";else cout<<" ";} else if(x==24){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+10 ||y==a+49)cout<<"*";else if(y==a+21||y==a+25||y==a+29||y==a+33||y==a+37)cout<<"*";else cout<<" ";} else if(x==25){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+13 ||y==a+46)cout<<"*";else cout<<" ";} else if(x==26){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if (y>=a+17&&y!=a+18&&y!=a+20&&y!=a+22&&y!=a+24&&y!=a+26&& y!=a+28&&y!=a+29&&y!=a+31&&y!=a+33&&y!=a+35&&y!=a+37&& y!=a+39&&y!=a+41&&y<=42+a)cout<<"*";else cout<<" ";} else if(x==27){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+16 ||y==a+25||y==a+29||y==a+30||y==a+31||y==a+35||y==a+43)cout<<"*";else cout<<" ";} else if(x==28){if(y<a)cout<<" ";else if(y==a||y==59+a) cout<<"$";else if(y==a+15 ||y==a+26||y==a+27||y==a+33||y==a+34||y==a+44)cout<<"*";else cout<<" ";} } cout<<endl; } cout<<endl; cout<<endl; system("pause"); return 0; }have fun!
相关文章推荐
- DOS命令行窗口mysql中文显示乱码问题解决方法
- DOS命令行窗口mysql中文显示乱码问题解决方法
- MFC窗口程序显示命令行输出窗口的方法
- DOS命令行窗口mysql显示乱码问题处理
- VC实现A进程窗口嵌入到B进程窗口中显示的方法
- VC实现A进程窗口嵌入到B进程窗口中显示的方法
- 汇编题目:数字转字符,并在窗口上显示出来
- 正确的方法去拦截OnNewWindow2实现在同一个窗口显示_target的网页
- 不显示命令行窗口和在程序中加载lib文件的方法
- Delphi实现窗体感知鼠标滑过并自动隐藏与显示窗口的方法
- 用css布局的方法实现如果字符超过一定长度就显示成省略号
- 在Linux下用 shell 命令把命令行中的参数逆序显示出来(三种方法)
- 让js弹出窗口居前显示的实现方法
- MFC窗口程序显示命令行输出窗口的方法
- 在Linux的命令行中实现字符出现频率统计的方法
- MFC窗口程序显示命令行输出窗口的方法
- windows下C/C++调用命令行不显示执行窗口的方法
- C# 操作EXCEL 类 可以实现导入导出功能 折腾了好长时间 现在两种方法显示出来
- bat、cmd、dos窗口:后台调用,不显示黑色的控制台dos(命令行)窗口
- 正确的方法去拦截OnNewWindow2实现在同一个窗口显示_target的网页